1 points par GN⁺ 2024-11-10 | 1 commentaires | Partager sur WhatsApp

Projet λ-2D : explorer le dessin comme langage de programmation

  • Aperçu : le projet λ-2D est une recherche qui explore un nouveau langage permettant de programmer à travers le dessin. Il s’appuie sur les idées du calcul lambda et est conçu pour rendre possible l’écriture de code au moyen de dessins.

  • Langages de programmation non textuels : il existe des langages de programmation non textuels comme Befunge et asciidots, basés sur l’ASCII, ou Piet, basé sur l’image. C’est en s’inspirant de ces langages qu’un nouveau langage a été développé.

  • Objectifs :

    • tirer parti des avantages de l’écriture de programmes sous forme de dessins afin d’inclure des fonctionnalités impossibles dans les langages textuels ;
    • trouver le bon équilibre dans le nombre de commandes, ni trop peu ni trop nombreuses, afin d’en faciliter l’usage ;
    • permettre de dessiner des programmes visuellement attractifs, que l’on puisse contempler comme des œuvres d’art.
  • Calcul lambda : le calcul lambda ne possède que deux commandes, l’application de fonction et la définition de fonction. Des symboles adaptés ont été conçus pour chacune d’elles.

  • Flux de données : le langage est conçu pour permettre aux données de circuler à travers des lignes reliant les symboles. Des symboles supplémentaires ont été introduits pour améliorer l’utilisabilité.

  • Cadres et éléments d’interface GUI : des zones spécifiques du canevas peuvent être définies comme cadres afin d’exploiter les données. Des éléments GUI comme des curseurs ont été ajoutés pour permettre un contrôle dynamique du programme.

  • Logiciel d’édition : un éditeur a été développé pour permettre aux utilisateurs de dessiner des programmes en numérique. Il utilise des symboles de 5x5 pixels, faciles à placer sur un canevas quadrillé.

  • Résolution du problème de sortie : en raison de la nature d’un langage purement fonctionnel, il est difficile d’implémenter une commande de « sortie ». Pour résoudre ce problème, la notion a été redéfinie en passant le canevas à une fonction, puis en récupérant le canevas modifié en retour.

  • Développement du parseur : un parseur a été développé pour convertir les programmes λ-2D en JavaScript. Le résultat est complexe, mais fonctionne.

  • Expérience de programmation : programmer dans ce nouveau langage rappelle l’expérience de jeux comme Minecraft ou Factorio, tout en conservant une vraie valeur de recherche.

  • Visualisation et son : le projet explore la possibilité de visualiser l’exécution des programmes et d’écouter un programme en cours d’exécution comme s’il s’agissait de musique.

  • Plans futurs : il est prévu d’améliorer λ-2D et de concevoir de nouveaux langages de programmation pouvant être intégrés à un système de calcul fondé sur le dessin.

  • Démo en ligne : une version bêta de λ-2D peut être testée en ligne, et le code source du parseur comme de l’éditeur devrait bientôt être publié sur GitHub.

1 commentaires

 
GN⁺ 2024-11-10
Avis Hacker News
  • Similaire à BitGrid, mais cela discute d’un concept différent, en imaginant des bits marchant en parallèle comme une simplification ultime des FPGA. Cette idée pourrait, ou non, avoir une utilité en apportant des petaflops au grand public. L’énergie consommée par les DFF dans les ASIC est un point important.

    • J’ai découvert les automates cellulaires de Von Neumann et les automates cellulaires de Nobili, mais j’ai été déçu qu’il y ait peu de choses à découvrir dans cette partie de l’informatique.
    • Les FSA définissent un espace de cellules de taille infinie, et tous les FSA sont équivalents du point de vue de la fonction de transition d’état ou de l’ensemble de règles.
  • Le travail d’ingénieur sur des projets d’automatisation peut sembler amusant ou familier. Dans un function block diagram, les blocs fonctionnels sont reliés par des fils, et l’ordre d’exécution est défini par l’ordre des blocs. Les blocs peuvent être soit des fonctions intégrées du moteur, soit des composés.

    • À chaque cycle de contrôle, le diagramme est exécuté une fois, et chaque bloc est toujours exécuté une fois, même si les entrées n’ont pas changé.
    • C’est ainsi que la logique de contrôle est implémentée, des brasseries jusqu’aux usines pétrochimiques.
  • Le langage est actuellement Turing-complet, mais très difficile à utiliser, ce qui enfreint la règle de conception n°2. Lambda Diagrams s’est arrêté à l’étape 1.

  • Ce type de travail a été réalisé dans Labview, mais il est difficile d’aller plus loin. Cela a aussi été fait dans des logiciels comme Max, mais cela devient vite complexe.

  • Il y avait un intérêt pour une spécification formelle graphique des Petri Nets. L’idée était que, s’il existait une représentation graphique, les ingénieurs utiliseraient davantage les méthodes formelles, mais dès qu’on leur montre des Petri Nets, ils perdent tout intérêt.

    • Avant d’abandonner mon doctorat à la University of York, j’utilisais RoboChart et RoboSim, et je travaillais sur un projet visant à les adapter pour les rendre plus utiles au monde des réseaux et des serveurs.
  • Certains estiment que le domaine des langages de programmation non verbaux n’a pas encore été exploré.

  • Cela rappelle "Wireworld" de 1987, et quelqu’un dit avoir déjà vu un compteur 8 bits implémenté dans Wireworld.

  • En termes de paradigme de programmation, c’est similaire à Funciton.