- Piet
-
Piet ist eine esoterische Programmiersprache, bei der der Programmcode wie ein abstraktes Bild aussieht. Sie wurde von David Morgan-Mar erfunden[1] und nach Piet Mondrian, einem Pionier der abstrakten Kunst, benannt. Das Beispielprogramm rechts oben gibt das Wort „Piet“ aus. Es ist in seiner artifiziellen Optik durchaus typisch; Morgan-Mar hatte sich zum Ziel gesetzt, dem Aussehen gängiger Mondrian-Bilder (Beispiele siehe Weblinks) nahe zu kommen.
Implementierung
Technisch muss der Programmcode in Form einer Bilddatei im GIF-Format vorliegen. Piet ist eine Interpretersprache, das heißt der Piet-Interpreter liest den Inhalt der Datei (hier einer Bilddatei) mit dem Quelltext bitweise ein und interpretiert die darin enthaltenen Informationen als Programmbefehle.
Die kleinste semantische Einheit in einer solchen Bilddatei ist ein „Codel“ (Zusammensetzung von „Code“ und „Pixel“), ein – in der visuellen Repräsentation als Bild – Quadrat aus n2 Pixeln gleicher Farbe. Dieser Wert n wird dem Piet-Interpreter als Parameter übergeben und für die visuelle Darstellung von Piet-Programmen so gewählt, dass ein optisch ansprechendes (nicht zu kleines) Bild resultiert. Bei den Beispielen rechts hat n den Wert 4 (oben) beziehungsweise 11 (unten).
Die Programmiersprache Piet basiert auf Stapelspeicher-Operationen. Sie ist nicht Turing-vollständig, da nur auf einen begrenzten Teil des Stapels wahlfrei zugegriffen werden kann (begrenzt durch die Größe des Bandalphabets). Der Programmablauf wird gesteuert durch zwei Zeiger, die – visuell interpretiert – auf einem verschlungenen Pfad durch die Bildebene mit den Codels führen. Syntaxelemente sind dann beispielsweise
- das Eintreten in ein schwarzes oder weißes Farbfeld,
- die Zahl der Codels einer zusammenhängenden Farbfläche,
- der Übergang von einer Farbe zur nächsten.
Diese (und weitere) Sprachelemente kodieren die typischen Stapelspeicher-Operationen wie push und pop sowie arithmetische Operationen und solche für die Ein- und Ausgabe von Zeichen.
Einzelnachweise
- ↑ DM's Esoteric Programming Languages. (Englisch)
Weblinks
Wikimedia Foundation.