Einführung in die Programmiersprache Piet
- Piet ist eine Programmiersprache, mit der Programme geschrieben werden, die wie abstrakte Bilder aussehen
- Benannt nach Piet Mondrian, dem Wegbereiter der geometrischen abstrakten Kunst
Designprinzipien der Sprache Piet
- Programmcode nimmt die Form abstrakter Kunst an
In Piet verwendete Farben
- Piet verwendet 20 eindeutige Farben
- Farbton-Zyklus: Rot -> Gelb -> Grün -> Cyan -> Blau -> Magenta -> Rot
- Helligkeits-Zyklus: hell -> normal -> dunkel -> hell
- Weiß und Schwarz sind in diesen beiden Zyklen nicht enthalten
- Zusätzliche Farben (Orange, Braun usw.) können verwendet werden, ihre Wirkung hängt jedoch von der Implementierung ab
- Im einfachsten Fall werden sie wie Weiß behandelt
Codel
- Die Grundeinheit von Piet-Code ist ein Farbblock
- Besteht aus einem oder mehreren benachbarten Codels derselben Farbe
- Farbblöcke, die nur diagonal aneinandergrenzen, gelten nicht als zusammenhängend
- Die Form ist nicht eingeschränkt und kann innere „Löcher“ in anderen Farben enthalten
Stack
- Piet verwendet einen Stack zur Speicherung aller Datenwerte
- Datenwerte existieren nur als Ganzzahlen, können aber als Unicode-Zeichenwerte gelesen oder ausgegeben werden
- Der Stack ist konzeptionell unendlich tief, Implementierungen können jedoch eine endliche Maximalgröße bereitstellen
Programmausführung
- Ein Piet-Interpreter beginnt die Ausführung im Farbblock, der den Codel oben links des Programms enthält
- Er verwaltet einen Direction Pointer (DP) und einen Codel Chooser (CC) und bewegt sich nach folgenden Regeln zwischen Farbblöcken:
- Finde unter den Rändern des aktuellen Farbblocks den Rand, der in Richtung des DP am weitesten liegt
- Finde auf diesem Rand den Codel, der in Richtung des CC am weitesten liegt
- Wechsle von diesem Codel zu dem benachbarten Farbblock in Richtung des DP
- Dieser Vorgang wird wiederholt, bis das Programm endet
Syntaxelemente
Zahlen
- Jeder Farbblock außer Schwarz und Weiß steht für eine Ganzzahl, die der Anzahl der Codels in diesem Block entspricht
- Es können nur positive Zahlen direkt dargestellt werden, negative Zahlen lassen sich jedoch mit Operatoren erzeugen
- Der Interpreter legt eine Zahl nicht automatisch auf den Stack, wenn er ihr begegnet
Schwarze Blöcke und Ränder
- Schwarze Blöcke und Programmränder begrenzen den Programmfluss
- Wenn versucht wird, in einen schwarzen Block oder über den Rand hinaus zu wechseln, wird der CC umgeschaltet und der DP im Uhrzeigersinn gedreht
- Wenn nach 8 Versuchen keine Bewegung möglich ist, endet das Programm
Weiße Blöcke
- Weiße Blöcke sind „freie“ Bereiche, die der Interpreter ohne Einschränkung durchquert
- Er „gleitet“ in DP-Richtung durch weiße Codels, bis er einen nicht-weißen Block erreicht
- Auch wenn beim Durchqueren weißer Blöcke zu einer neuen Farbe gewechselt wird, wird kein Befehl ausgeführt
- Wenn der Pfad innerhalb weißer Blöcke vollständig zurückverfolgt wird, endet das Programm
Befehle
- Werden durch den Farbwechsel definiert, wenn der Interpreter von einem Farbblock zu einem anderen wechselt
- Welcher Befehl ausgeführt wird, wird durch die Anzahl der Schritte im Farbton-Zyklus und im Helligkeits-Zyklus bestimmt
- Beim Wechsel über weiße Blöcke hinweg wird kein Befehl ausgeführt
- Wichtige Befehle:
- push, pop, add, subtract, multiply, divide, mod, not, greater
- pointer, switch, duplicate, roll
- in(number), in(char), out(number), out(char)
Meinung von GN⁺
- Piet ist eine visuell attraktive Programmiersprache, die eine einzigartige Verbindung aus abstrakter Kunst und Programmierung zeigt
- In puncto Praxistauglichkeit scheint sie jedoch Grenzen zu haben. Es ist zu erwarten, dass das Schreiben komplexer Programme nicht einfach ist
- Sie dürfte sich vor allem für Experimente mit Programmiersprachen, Rätsel oder die Erstellung von Kunstwerken eignen
- Als visuelle Programmiersprachen könnten Googles Blockly oder MITs Scratch etwas praktischere Alternativen sein
- Letztlich wirkt Piet wie eine allzu tiefgehende Sprache, sodass sie sich für echte Anfänger wohl nur schwer als Werkzeug zum Erlernen des Programmierens eignet
1 Kommentare
Hacker-News-Kommentare
Das letzte Programm auf der Beispielseite der Sprache Piet ist wirklich erstaunlich. Jemand namens Piet sah ein Werk, das an die Sprache Piet erinnerte, und versuchte, es auszuführen — und es funktionierte tatsächlich. Das war wohl das erste Mal in der Geschichte, dass ein Grafikartist versehentlich ein ausführbares Programm gezeichnet hat.
Piet ist ein bahnbrechendes Experiment unter den esoterischen Programmiersprachen, erreicht aber das Ziel, wie ein Mondrian-Gemälde auszusehen, nur unzureichend — es sei denn, der Entwickler beabsichtigt das ausdrücklich. Ich wünschte, die Sprachstruktur selbst wäre so entworfen, dass Geschriebenes von sich aus wie ein Mondrian-Bild aussieht.
Das wirft die Frage auf: „Wie sieht ein Algorithmus aus?“ Könnte man so etwas wie Hermann Hesses Roman Das Glasperlenspiel (Magister Ludi) in der Realität erschaffen? Als visuell orientierter Mensch möchte ich das gern glauben und habe tatsächlich versucht, solche Werkzeuge zu benutzen, aber wegen vager Antworten ist es schwer, das Gleichgewicht zwischen visueller Ausdruckskraft und Modularität zu finden.
Solche Dinge wirken, als würden sie in Krimi-Thrillern auftauchen, wo sie die Protagonisten oder Ermittler verwirren, bis jemand erkennt, dass es Code ist. Und wir dachten, QR-Codes seien nützlich ...
Piet zu entdecken ist ein besonderer Moment aus Ehrfurcht, Verwirrung und Staunen. Das wurde in einem Gespräch mit meinem Freund Oz in einem CS-Podcast festgehalten.
Jemand hat in Piet ein Quine gebaut. Das Bild ist kaputt, aber auf CodeGolf gibt es eine Kopie.
An der Uni gab es einen kleinen Kurs über esoterische Programmiersprachen, und jeder wählte eine Sprache aus, um damit herumzuspielen. Ich habe Piet gewählt; es machte Spaß, aber ehrlich gesagt waren kleine Beispielanwendungen ästhetisch nicht besonders befriedigend. Um mit Piet Kunst zu machen, muss man wohl ein Experte werden.
Ich bin im Studium darauf gestoßen und habe bis spät in die Nacht einfache Programme geschrieben — das war eine wirklich unterhaltsame Erfahrung. Ich würde empfehlen, dass jeder es zumindest einmal ausprobiert!
Die Beispielseite ist erstaunlich. Man kann sehen, wie die Leinwände allmählich immer ausgefeilter und schöner werden.
Wirklich großartig! Ich frage mich, ob es möglich wäre, Piet-Werke zu sammeln und daraus ein Programm zu machen, das einen vorgegebenen Text zurückgibt. So etwas wie ein Piet-Codegenerator. Das wäre ein tolles Geschenk als Druck!