Λ-2D : exploration du dessin comme langage de programmation
(media.mit.edu)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
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.
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.
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.
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.