Λ-2D: explorando o desenho como linguagem de programação
(media.mit.edu)Projeto λ-2D: explorando desenhos como linguagem de programação
-
Visão geral: o projeto λ-2D é uma pesquisa que explora uma nova linguagem na qual é possível programar por meio de desenhos. Baseado nas ideias do cálculo lambda, ele foi projetado para permitir a escrita de código por meio de desenhos.
-
Linguagens de programação não textuais: existem linguagens de programação não textuais como Befunge e asciidots, baseadas em ASCII, e Piet, baseada em imagens. Inspirando-se nessas linguagens, foi desenvolvida uma nova linguagem.
-
Objetivos:
- aproveitar as vantagens de escrever programas com desenhos, incluindo recursos impossíveis em linguagens baseadas em texto.
- ajustar a quantidade de instruções para que não seja nem pequena nem excessiva, aumentando a facilidade de uso.
- permitir desenhar programas visualmente atraentes, para que possam ser apreciados como obras de arte.
-
Cálculo lambda: o cálculo lambda possui apenas dois comandos: aplicação de função e definição de função. Foram desenvolvidos símbolos adequados para cada um deles.
-
Fluxo de dados: foi projetado para que os dados possam fluir por linhas que conectam os símbolos. Símbolos adicionais foram introduzidos para melhorar a usabilidade.
-
Frames e elementos de GUI: áreas específicas da tela podem ser definidas como frames para permitir o uso de dados. Elementos de GUI, como sliders, também foram adicionados para possibilitar o controle dinâmico do programa.
-
Software de edição: foi desenvolvido um editor para que os usuários possam desenhar programas digitalmente. Usando símbolos de 5x5 pixels, eles podem ser posicionados facilmente em uma tela em grade.
-
Resolução do problema de saída: devido à natureza de uma linguagem puramente funcional, é difícil implementar um comando de "saída". Para resolver isso, ele foi redefinido como um método em que a tela é passada para a função e a tela modificada é retornada.
-
Desenvolvimento do parser: foi desenvolvido um parser que converte programas λ-2D em JavaScript. O resultado é complexo, mas funciona.
-
Experiência de programação: a experiência de programar em uma nova linguagem é parecida com Minecraft ou Factorio, mas tem valor como pesquisa.
-
Visualização e som: explora-se a possibilidade de visualizar a execução do programa e de ouvir o programa em execução como se fosse música.
-
Planos futuros: há planos para aprimorar o λ-2D e projetar uma nova linguagem de programação que possa ser integrada a um sistema de computação por desenhos.
-
Demo online: é possível experimentar uma versão beta do λ-2D online, e o código-fonte do parser e do editor deve ser publicado no GitHub em breve.
1 comentários
Comentários do Hacker News
Discute um conceito semelhante ao BitGrid, mas diferente, imaginando bits marchando em paralelo como uma simplificação extrema de um FPGA. Essa ideia pode ou não ter utilidade para oferecer petaflops ao público. A energia consumida por DFFs em ASICs é importante.
O trabalho de um engenheiro de projetos de automação pode parecer divertido ou familiar. Em diagramas de blocos funcionais, blocos funcionais são conectados por fios, e a ordem de execução é definida pela ordem dos blocos. Os blocos podem ser como funções embutidas do mecanismo ou compostos.
A linguagem atualmente é Turing-completa, mas muito difícil de usar, violando assim a regra de design nº 2. Parou no estágio 1 com Lambda Diagrams.
Esse tipo de trabalho já foi feito no Labview, mas é difícil avançar. Também foi feito em softwares como Max, mas rapidamente se torna complexo.
Havia interesse em uma especificação formal gráfica para Petri Nets. Pensava-se que, se houvesse uma representação gráfica, engenheiros usariam mais métodos formais, mas, ao mostrar Petri Nets, eles perdem o interesse.
Há a opinião de que o campo das linguagens de programação não verbais não foi explorado.
Isso lembra o "Wireworld" de 1987, e já viu um contador de 8 bits implementado em Wireworld.
Em termos de paradigma de programação, é semelhante a Funciton.