Von „http://www.julian-fietkau.de/blog/piet“

Piet

2010-03-30 23:23:26

Stichwörter: Absonderliches, programmieren

Im großen Feld der esoterischen Programmiersprachen gibt es einige besondere Exemplare, die über die kleine Gemeinde der Programmiersprachenfreaks hinaus in Hackerkreisen wenigstens ansatzweise bekannt sind. Eine davon ist Piet, auch "diese komische grafische Programmiersprache" genannt.

In Kürze: Der Kontrollfluss bewegt sich zwischen zusammenhängenden Pixelfeldern, der "Cursor" startet oben links und zeigt zunächst nach rechts, Farben sind "Opcodes" (Arithmetik, Stackverarbeitung, I/O) und die Anzahl der Pixel in einem Feld dient als Repräsentation für Integer-Zahlen.

Piet zu "schreiben" ist eine nette Denksportaufgabe, man bekommt nach recht kurzer Zeit passable kleine Programme hin. Es gibt sogar geduldige Menschen, die richtige Kunstwerke zeichnen, die gleichzeitig valide Piet-Programme sind. Es gibt Interpreter und sogar Assembler, so dass man die Programme tatsächlich ausführen (und in begrenztem Maße debuggen) kann.

Da konnte ich natürlich nicht widerstehen. Hier ist mein erstes Piet-Programm:

Mein erstes Piet-Programm

Für alle Neugierigen: Dieses kleine Programm gibt meinen Vornamen aus und beendet sich danach.

Kommentare

Bitte geben Sie in die folgenden drei Textfelder nichts ein, sie dienen dem Schutz vor unerwünschten automatischen Eingaben. Wenn hier etwas eingetragen wird, wird der Kommentar nicht gespeichert!




Ende der Falle - ab hier bitte das Formular ausfüllen.

Textformatierung in Kommentaren erfolgt per Markdown.

Hervorhebung *Hervorhebung* oder _Hervorhebung_ (innerhalb einer Zeile)
Starke Hervorhebung **Starke Hervorhebung** oder __Starke Hervorhebung__ (innerhalb einer Zeile)
Neuer Absatz eine Leerzeile einfügen

Zitat

> Zitat
  • ungeordnete
  • Liste
* ungeordnete
* Liste
  1. geordnete
  2. Liste
1. geordnete
2. Liste
Weblink [Weblink](http://www.julian-fietkau.de)
Hinweis: Nur per OpenID authentifizierte Benutzer können Weblinks setzen.
Ausführliche Beispiele gibt es bei Daring Fireball.
Christopher Schewe
Christopher Schewe
2010-03-30 23:53:28

Hehe, das ist mal eine nette Programmiersprache. Eine kreative verschmelzung von Kunst und Softwareentwicklung.

Was mir grad dazu einfällt: Was passiert, wenn man mit dem Interpreter einfach mal ein Foto (gif ~2MB groß) interpretiert?! Bzw. wie wohl sehr komplexe Programme aussehen mögen.

Viele Grüße

Christopher

Julian F.
Julian F. (via julian-fietkau.de)
2010-03-30 23:59:31

Wenn du ein beliebiges Bild nimmst, passiert wahrscheinlich nicht allzu viel, weil Piet nur eine handvoll Farben spezifiziert. Was der Interpreter mit allen anderen Farben macht, ist der jeweiligen Implementation freigestellt. :)

Ich kann die Programmbeispiele auf der Originalseite empfehlen: http://www.dangermouse.net/esoteric/piet/samples.html

Hannes
Hannes
2010-03-31 09:35:32

Hej, die Links in deinem RSS-Feed sind kaputt, da fehlt das /blog/ :)

Julian F.
Julian F. (via julian-fietkau.de)
2010-03-31 10:18:42

Hey, danke für den Hinweis. Wird heute Abend gefixt. :)

Kai
Kai
2010-03-31 16:51:06

das mit den kaputten Links wollte ich auch grad schreiben :)

d2kx
d2kx
2010-06-13 17:53:33

Sachen gibt's, die gibt's garnicht. Vor 8 Jahren oder so habe ich deine Clonkmods gespielt und dann vor kurzem im Ubuntuusers-Forum "xJulian" gesehen ;)

Angie
Angie
2012-01-30 16:23:37

Ich versuche gerade, daß Prinzip zu verstehen. Das Bild, mit dem der Vorname "Julian" ausgegeben wird, wie ist das entstanden, bzw. woher weiß man, welche Farben eingesetzt werden müssen, um diese Buchstabenfolge "Julian" zu erzielen?

Für das Erstellen solcher Gif's gibt es sogar Online-Programme, wie z.B. PietRev.

Aber hinter welcher Farbe, Farbfolge "versteckt" sich welcher Buchstabe?

Angie

Julian F.
Julian F. (via julian-fietkau.de)
2012-01-31 21:58:09

Ich weiß noch, dass ich über die Links im Wikipedia-Artikel nachgeforscht habe. Piet ist eine stackbasierte Sprache, die Farbblöcke in meinem Code sind teilweise Opcodes und teilweise Operanden. Auf der Piet-Website ist die Funktionsweise definiert, ich habe mir dort die Beispiele angesehen, mich am Ablauf des "Mondrian Hello World" orientiert und das letztendlich nur noch ein wenig zusammengeschoben.