1 puntos por GN⁺ 2024-11-10 | 1 comentarios | Compartir por WhatsApp

Proyecto λ-2D: explorando el dibujo como lenguaje de programación

  • Resumen: El proyecto λ-2D es una investigación que explora un nuevo lenguaje con el que se puede programar mediante dibujos. Está diseñado con base en las ideas del cálculo lambda para permitir escribir código a través de imágenes.

  • Lenguajes de programación no lingüísticos: Existen lenguajes de programación no lingüísticos como Befunge y asciidots, basados en ASCII, y Piet, basado en imágenes. Inspirándose en estos lenguajes, se desarrolló uno nuevo.

  • Objetivos:

    • Aprovechar las ventajas de escribir programas con dibujos e incluir capacidades que no son posibles en lenguajes basados en texto.
    • Ajustar la cantidad de instrucciones para que no sean ni demasiadas ni demasiado pocas, mejorando la facilidad de uso.
    • Permitir dibujar programas visualmente atractivos para que puedan apreciarse como si fueran obras de arte.
  • Cálculo lambda: El cálculo lambda solo tiene dos instrucciones: aplicación de funciones y definición de funciones. Se desarrollaron símbolos adecuados para cada una.

  • Flujo de datos: Está diseñado para que los datos puedan fluir a través de líneas que conectan los símbolos. También se introdujeron símbolos adicionales para mejorar la usabilidad.

  • Frames y elementos de GUI: Se pueden definir áreas específicas del lienzo como frames para aprovechar datos. También se añadieron elementos de GUI, como deslizadores, para controlar dinámicamente el programa.

  • Software de edición: Se desarrolló un editor para que los usuarios puedan dibujar programas de forma digital. Usa símbolos de 5x5 píxeles que se pueden colocar fácilmente en un lienzo con cuadrícula.

  • Resolución del problema de salida: Debido a la naturaleza de un lenguaje puramente funcional, es difícil implementar una instrucción de "salida". Para resolverlo, se redefinió el modelo pasando el lienzo a una función y recibiendo de vuelta el lienzo modificado.

  • Desarrollo del parser: Se desarrolló un parser que convierte programas λ-2D a JavaScript. El resultado es complejo, pero funciona.

  • Experiencia de programación: La experiencia de programar en este nuevo lenguaje se parece a Minecraft o Factorio, pero tiene valor como investigación.

  • Visualización y sonido: Se explora la posibilidad de visualizar la ejecución del programa y de escuchar un programa en ejecución como si fuera música.

  • Planes futuros: Se planea mejorar λ-2D y diseñar nuevos lenguajes de programación que puedan integrarse en un sistema de cómputo mediante dibujos.

  • Demo en línea: Ya se puede probar una versión beta de λ-2D en línea, y el código fuente del parser y del editor se publicará pronto en GitHub.

1 comentarios

 
GN⁺ 2024-11-10
Opiniones de Hacker News
  • Se debate un concepto similar a BitGrid, pero diferente, imaginando bits marchando en paralelo como una simplificación extrema de los FPGA. Esta idea podría o no tener utilidad para llevar petaflops al público. La energía que consume el DFF en un ASIC es importante.

    • Encontró los autómatas celulares de Von Neumann y los autómatas celulares de Nobili, pero le decepciona que parezca haber poco por descubrir en esta parte de la informática.
    • Las FSA definen un espacio celular de tamaño infinito, y todas las FSA son equivalentes en su función de transición de estados o conjunto de reglas.
  • El trabajo de ingeniería en proyectos de automatización puede resultar divertido o familiar. En los diagramas de bloques funcionales, los bloques funcionales se conectan con cables, y el orden de trabajo queda definido por el orden de los bloques. Los bloques pueden ser como funciones integradas del motor o compuestos.

    • En cada ciclo de control, el diagrama se ejecuta una vez, y aunque las entradas no cambien, cada bloque siempre se ejecuta una vez.
    • Así se implementa la lógica de control, desde cervecerías hasta plantas petroquímicas.
  • El lenguaje actualmente es Turing completo, pero es muy difícil de usar, por lo que viola la regla de diseño #2. Se detuvo en la etapa 1 con Lambda Diagrams.

  • Este tipo de trabajo ya se ha hecho en Labview, pero es difícil avanzar. También se ha hecho en software como Max, pero se vuelve complejo muy rápido.

  • Le interesaban las especificaciones formales gráficas para las redes de Petri. Pensaba que, si hubiera una representación gráfica, los ingenieros usarían más los métodos formales, pero cuando se les muestran redes de Petri, pierden el interés.

    • Antes de abandonar su PhD en la University of York, usó RoboChart y RoboSim, y está trabajando en un proyecto para adaptarlos de forma más útil al mundo de redes y servidores.
  • Existe la opinión de que el terreno de los lenguajes de programación no verbales no ha sido explorado.

  • Esto recuerda a "Wireworld" de 1987, y alguien dice haber visto un contador de 8 bits implementado en Wireworld.

  • En términos de paradigma de programación, es similar a Funciton.