Présentation du langage de programmation Piet
- Piet est un langage de programmation permettant d’écrire des programmes qui ressemblent à des peintures abstraites.
- Il tire son nom de Piet Mondrian, pionnier de l’art abstrait géométrique.
Principes de conception du langage Piet
- Le code du programme prend la forme d’une œuvre d’art abstraite.
Couleurs utilisées dans Piet
- Piet utilise 20 couleurs distinctes.
- Cycle des teintes : rouge -> jaune -> vert -> cyan -> bleu -> magenta -> rouge
- Cycle de luminosité : clair -> normal -> foncé -> clair
- Le blanc et le noir ne font partie d’aucun de ces deux cycles.
- Des couleurs supplémentaires (orange, marron, etc.) peuvent être utilisées, mais leur effet dépend de l’implémentation.
- Dans le cas le plus simple, elles sont traitées comme le blanc.
Codel (codel)
- L’unité de base du code Piet est le bloc de couleur.
- Il est composé d’un ou plusieurs codels adjacents de même couleur.
- Des blocs de couleur adjacents uniquement en diagonale ne sont pas considérés comme continus.
- La forme n’est pas limitée et peut contenir des « trous » internes d’une autre couleur.
Pile
- Piet utilise une pile pour stocker toutes les valeurs de données.
- Les valeurs de données n’existent que sous forme d’entiers, mais peuvent être lues ou affichées comme des valeurs de caractères Unicode.
- La pile est conceptuellement de profondeur infinie, bien qu’une implémentation puisse définir une taille maximale finie.
Exécution du programme
- L’interpréteur Piet commence l’exécution sur le bloc de couleur contenant le codel en haut à gauche du programme.
- Il conserve un Direction Pointer (DP) et un Codel Chooser (CC), et se déplace entre les blocs de couleur selon les règles suivantes :
- trouver, parmi les bords du bloc de couleur actuel, le bord le plus éloigné dans la direction du DP ;
- sur ce bord, trouver le codel le plus éloigné dans la direction du CC ;
- depuis ce codel, se déplacer vers le bloc de couleur adjacent dans la direction du DP.
- Ce processus est répété jusqu’à la fin du programme.
Éléments de syntaxe
Nombres
- Chaque bloc de couleur autre que noir ou blanc représente un entier égal au nombre de codels du bloc.
- Seules des valeurs positives peuvent être représentées, mais des opérateurs permettent de produire des valeurs négatives.
- L’interpréteur ne pousse pas automatiquement un nombre sur la pile lorsqu’il le rencontre.
Blocs noirs et bords
- Les blocs noirs et les bords du programme limitent le flux d’exécution.
- Si l’on tente d’aller vers un bloc noir ou un bord, le CC est inversé et le DP tourne dans le sens horaire.
- Si aucun déplacement n’est possible après 8 tentatives, le programme se termine.
Blocs blancs
- Les blocs blancs sont des zones « libres » que l’interpréteur traverse sans contrainte.
- Il « glisse » à travers les codels blancs dans la direction du DP jusqu’à atteindre un bloc non blanc.
- Aucun ordre n’est exécuté lors d’un passage vers une nouvelle couleur à travers un bloc blanc.
- Si le chemin à l’intérieur d’un bloc blanc est entièrement retracé, le programme se termine.
Commandes
- Elles sont définies par le changement de couleur lorsque l’interpréteur passe d’un bloc de couleur à un autre.
- La commande à exécuter est déterminée par le nombre d’étapes dans le cycle des teintes et dans le cycle de luminosité.
- Aucun ordre n’est exécuté lors d’un déplacement à travers un bloc blanc.
- Principales commandes :
- push, pop, add, subtract, multiply, divide, mod, not, greater
- pointer, switch, duplicate, roll
- in(number), in(char), out(number), out(char)
L’avis de GN⁺
- Piet est un langage de programmation visuellement séduisant, qui montre une combinaison originale entre art abstrait et programmation.
- Il semble toutefois avoir des limites sur le plan pratique. On peut s’attendre à ce qu’il soit difficile d’écrire des programmes complexes.
- Il pourrait surtout servir à des expérimentations sur la conception de langages, à des puzzles ou à la création d’œuvres artistiques.
- Parmi les langages de programmation visuelle, Blockly de Google ou Scratch du MIT peuvent constituer des alternatives plus pratiques.
- Piet semble malgré tout être un langage bien trop pointu pour être réellement utilisé par des débutants dans un cadre d’apprentissage de la programmation.
1 commentaires
Commentaires sur Hacker News
Le dernier programme sur la page d’exemples du langage Piet est vraiment stupéfiant. Une personne (appelée Piet) a vu une œuvre évoquant le langage Piet, l’a essayée, et elle fonctionnait réellement. C’était apparemment la première fois dans l’histoire qu’un artiste graphique dessinait par hasard un programme exécutable.
Piet est une expérience révolutionnaire parmi les langages de programmation ésotériques, mais il atteint mal l’objectif de ressembler à une peinture de Mondrian, sauf si le développeur le fait délibérément. J’aimerais que la structure même du langage soit conçue pour que ce qui est écrit ressemble naturellement à un tableau de Mondrian.
Cela pose la question : « à quoi ressemble un algorithme ? » Peut-on créer dans le monde réel quelque chose comme Le Jeu des perles de verre (Magister Ludi) de Hermann Hesse ? En tant que personne très orientée visuel, j’aimerais le penser, et j’ai même essayé d’utiliser des outils de ce genre, mais des réponses ambiguës rendent difficile de trouver l’équilibre entre expressivité visuelle et modularité.
Ce genre de chose semble typiquement destiné à apparaître dans un thriller policier, à semer la confusion chez les protagonistes ou les enquêteurs, jusqu’à ce que quelqu’un réalise que c’est du code. Et nous, on pensait que les QR codes étaient utiles…
Découvrir Piet est un moment particulier de crainte, de confusion et d’émerveillement. Cela a été capturé dans une conversation avec mon ami Oz sur un podcast de CS.
Quelqu’un a créé un quine en Piet. L’image est cassée, mais il y en a une copie sur CodeGolf.
À l’université, il y avait un petit cours sur les langages de programmation ésotériques, et chacun choisissait un langage pour expérimenter. J’avais choisi Piet : c’était amusant, mais honnêtement les petites applications d’exemple n’étaient pas très satisfaisantes sur le plan esthétique. Pour faire de l’art avec Piet, il faut sans doute devenir expert.
J’ai découvert ça à l’université et j’ai passé une nuit entière à écrire de petits programmes ; c’était une expérience vraiment amusante. Je recommande à tout le monde d’essayer au moins une fois !
La page d’exemples est étonnante. On peut voir les toiles devenir progressivement plus sophistiquées et plus belles.
C’est vraiment génial ! Je me demande s’il serait possible de rassembler des œuvres Piet pour en faire un programme qui renvoie un texte donné — une sorte de générateur de code Piet. Ça ferait un superbe cadeau imprimé !