1 pontos por GN⁺ 2024-11-10 | 1 comentários | Compartilhar no WhatsApp

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

 
GN⁺ 2024-11-10
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.

    • Descobriu os autômatos celulares de Von Neumann e os autômatos celulares de Nobili, mas ficou decepcionado por haver pouca possibilidade de descoberta nessa parte da ciência da computação.
    • FSAs definem um espaço celular de tamanho infinito, e todos os FSAs são equivalentes em sua função de transição de estado ou conjunto de regras.
  • 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 cada ciclo de controle, o diagrama é executado uma vez, e cada bloco sempre é executado uma vez mesmo que as entradas não mudem.
    • A lógica de controle, de cervejarias a plantas petroquímicas, é implementada dessa forma.
  • 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.

    • Antes de abandonar o PhD na University of York, usava RoboChart e RoboSim e estava trabalhando em um projeto para adaptá-los de forma mais útil ao mundo de redes e servidores.
  • 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.