Todas as linguagens de programação que eu conheço são escritas - ou seja, digitadas como comprimentos de texto de uma maneira ou de outra. Mas eu me pergunto se existe alguma linguagem de programação onde você possa simplesmente arrastar e soltar o programa inteiro; para obter um loop, selecione essa caixa aqui e arraste-a para a seção do "código" ali, e assim por diante. E se não houver um como este, ele voaria se fosse inventado?
Pessoalmente, não acredito que seria uma boa ideia, mas gostaria de ouvir o que você pensa.
programming-languages
gablin
fonte
fonte
Respostas:
Muitas roupas criaram sistemas de programação de arrastar e soltar.
National Instruments "Labview" é provavelmente o mais conhecido e o melhor.
O problema fundamental que todos eles encontram é que não há maneira conhecida de converter um Flying Code Monkey em um programador e engenheiro especialista. Como UM exemplo, não há diferença para um Flying Code Monkey entre um processo O (N ^ 2) ou O (N ^ 3) e um processo O (N log N), o que significa que eles devem ser fornecidos com rotinas enlatadas para os algoritmos O (N log N), que podem ser ajustados de forma personalizada nos kuds gráficos rápidos que eles criarão.
O segundo problema que todos eles enfrentam é que, quando você fornece os blocos de finalidade especial exigidos pelo primeiro problema, a sobrecarga imposta pela movimentação dos dados entre os blocos começa a ficar cara. Eu trabalhei com um sistema muito bom chamado Rippen. Quando fiz o perfil, para ver onde estávamos prejudicando em um aplicativo de processamento de sensor de alto desempenho necessário, fiquei bastante perturbado ao ver que cerca de 20% do meu tempo de CPU estava indo para a movimentação de dados. (Como eu estava processando a imagem LADAR, realizando uma boa parte do processamento de ponto flutuante em cada pixel de uma imagem de entrada, 20% da CPU era MUITO sobrecarga de movimentação de dados.)
Você provavelmente poderia contornar a parte 2 recorrendo a um sistema baseado em compilador: você alimenta sua imagem e compila para um programa executável altamente otimizado, mas não tenho certeza de que isso realmente resolveria os problemas, e isso pode prejudicar a natureza interativa da ferramenta.
fonte
A resposta simples é não.
Quando se trata de programação, a entrada de texto excede em termos de informações especificadas muito mais do que sua parte visual contrária.
fonte
O LabVIEW é bastante gráfico.
No site do LabVIEW :
fonte
Yahoo! Pipes é provavelmente um exemplo perfeito de uma linguagem gráfica do tipo que você está descrevendo; você arrasta e solta primitivas (tudo, desde fontes de dados em que atua, até loops e condicionais) para produzir um fluxo de informações através do sistema.
É altamente específico do domínio, mas esse é principalmente o ponto; O Pipes é centrado em dados, tornando a visualização (e não a expressão) primordial. Da mesma forma, ambientes tutoriais como Scratch ou Sprog! enfatize a visualização do que você está trabalhando como um auxiliar de aprendizado; a eficiência na entrada de dados é uma prioridade muito menor nesse domínio.
fonte
De vez em quando alguém cria uma linguagem de programação de arrastar e soltar ou ferramenta de design que "põe um fim à programação como a conhecemos" e transforma todos os que a usam em programadores.
A razão pela qual nenhum deles realmente fez o trabalho até agora e nos colocou fora do trabalho é que, na verdade, não importa quanta funcionalidade de arrastar e soltar você criar e não importa o quão amigável você o faça, o simples fato é que a programação é difícil.
As disciplinas reais de programação são tanto sobre como resolver problemas, como modelar processos e organizar dados para serem utilizáveis. Mesmo entendendo o que é possível com um computador.
Há evidências (se controversas) que sugerem que algumas pessoas não podem ser ensinadas a pensar dessa maneira, o que me leva a alguns pensamentos interessantes e relevantes. Para começar, se você não consegue pensar dessa maneira, há muitos programadores por perto, então você sempre pode contratar alguém para implementar uma idéia, se você tiver uma e achar que vale a pena pagar. Se você puder trabalhar com a lógica de programação o suficiente, poderá aprender uma linguagem real, em vez de mexer com um ambiente relativamente simples de arrastar e soltar.
Estou pensando em programação geral aqui. O mesmo não se aplica necessariamente a um cenário de tipo DSL mais limitado, em que o recurso arrastar e soltar pode ser um usuário de processo realmente útil, especialista nesse domínio e não em TI.
fonte
O melhor sistema de programação de arrastar e soltar que eu já vi é para os robôs Lego Mindstorms NXT.
Isso permite que você faça coisas incríveis, controlando algumas funcionalidades bastante complexas.
No entanto, em algum momento, ele quebra e é necessário reverter para outro sistema.
Consulte este artigo: http://www.wired.com/geekdad/2007/11/the-best-progra/
É possível, porém, que, se isso fosse melhorado e se fossem atendidos diferentes cenários, a necessidade disso se tornaria cada vez menor.
fonte
A programação de fluxo de dados (também conhecida como programação baseada em fluxo) pode ser uma espécie de. Embora a programação do fluxo de dados não seja completa para Turing.
A programação de fluxo de dados é o método de criação de aplicativos, quando você coloca instâncias de componentes em cena e conecta suas portas, para que elas formem uma rede de processamento de mensagens. Os componentes podem ser escolhidos em uma biblioteca, possuem portas de consumidor (entrada) e produtora (saída), prontas para conexão com as portas de outros componentes.
Aqui está um bom exemplo, onde nem mesmo um mouse costumava criar um aplicativo de sintetizador, mas mãos e pequenos cubos: http://www.youtube.com/watch?v=0h-RhyopUmc
Os artigos da Wikipedia são um bom ponto de partida: http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming
A geração de som é uma área típica da programação de fluxo de dados. Existem alguns sistemas de sintetização de código aberto: http://www.synthedit.com/ http://alsamodular.sourceforge.net/
Se você possui Mac, pode ter um Quartz Composer pré-instalado de fábrica: http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
Eu também fez um sistema DF com um amigo meu, mas ainda não temos editor visual ainda , única roteiro visualizador.
fonte
O sistema de programação Scratch do MIT é quase inteiramente de arrastar e soltar.
O App Inventor do Google parece ser semelhante (e credita o Scratch).
Eu não gostaria de codificar nada grande em mim, mas para ensinar "pensamento de programador", o Scratch é excelente. É Programação Real, mas com gratificação visual instantânea e os blocos de encaixe evitam grande parte da frustração do "erro de sintaxe" que afasta os recém-chegados (uma visão que vejo ecoada neste artigo ). Tentar entusiasmar crianças pequenas com uma linha de comando em python não funciona nos dias de hoje.
fonte
Isso já existe, embora possivelmente não da forma em que você está pensando. Dois exemplos são Simulink e Alice.
O Simulink é um meio gráfico de montar simulações dinâmicas de sistemas. Embora a maioria das construções seja mais complexa do que aquilo que você normalmente considera programação, coisas como instruções for e if ainda podem ser construídas graficamente. O Simulink é um grande negócio nas aplicações aeroespaciais, já que o governo e muitas das grandes empresas fazem seus projetos iniciais no Simulink e depois aplicam algum tipo de comprovador de teoremas ao "código" do Simulink.
Alice, é uma ferramenta de treinamento de programação para crianças. Ele permite que as crianças se divirtam construindo histórias, arrastando e soltando ações e objetos em uma espécie de quadro de programação.
fonte
Prograph era uma linguagem legal que era tudo arrastar e soltar. Além disso, a Wikipedia possui um artigo com uma lista de bom tamanho de linguagens visuais .
fonte
Existem algumas linguagens de programação visual. Um sistema telefônico que eu gerenciei para um grande call center foi programado usando os módulos de arrastar e soltar. Meu tio desenvolveu um sistema Just-In-Time para projetar linhas de fabricação que eram completamente arrastadas e soltas e isso ocorreu há 20 anos.
Até joguei um jogo de combate robô no PS1 que usava uma linguagem de programação de arrastar e soltar.
fonte
A programação textual teve uma boa execução de 50 anos, mas a engenharia de software deve passar para o domínio gráfico para lidar com o próximo nível de complexidade. Por exemplo, o surgimento de muitos processadores principais e os desafios da programação paralela estão levando o modelo de segmentação ao seu limite. Francamente, acho que a comunidade de software é apenas arrogante, pensando que há algo fundamentalmente diferente e especial na programação que não seria passível de visualização como todos os outros domínios. Como as operadoras de telefonia e muitas outras profissões, a tecnologia de automação certa permitirá que especialistas em domínio colaborem em breve em ricos espaços de simulação de sistemas baseados em conhecimento. A indústria de software está muito atrasada para uma mudança de paradigma.
fonte