Esoteric Programming, Teil 5 David Morgan-Mars esoterische Informatik
Wer sich mit esoterischen Programmiersprachen beschäftigt, landet schnell bei Sprachen wie Ook!, ZOMBIE oder Chef – weil der Humor dahinter so schön plastisch ist. Und das hat auch seinen Grund: Autor ist der Web-Comic-Zeichner David Morgan-Mar.
Anbieter zum Thema

Die meisten esoterischen Programmiersprachen gehen auf studentische Projekte zurück oder sind als wortwörtliche Schnapsideen geboren worden. Manchmal sollte auch auf humoristische Weise ein Konzept erläutert werden.
Dr. David Morgan-Mar, die wohl bekannteste Persönlichkeit in der Welt der Computer-Esoterik, hat den Witz als einziger wirklich konsequent durchgezogen. Auf sein Konto gehen acht esoterische Programmiersprachen, neun esoterische Algorithmen und ein esoterisches Betriebssystem. Bekannt ist er für seine diversen Web-Comics, unter anderem Darths & Droids, Planet of Hats, mezzzacotta und vor allem Irregular Webcomic!
Der australische Astrophysiker schreibt zudem Rollenspiele für die GURPS-Welt, arbeitet für Canon Information Systems, kann auf eine umfangreiche Veröffentlichungsliste verweisen und spielte im Emmy-prämierten Fan-Projekt „Star Wars: Uncut“ eine Szene als Han Solo – das volle Programm des Geek-Humors.
Esoterik abseits von Sprachen
Hier geht es aber um seine esoterischen Errungenschaften. Sein esoterisches Betriebssystem Petrovich ist im Grunde nur eine einzelne, simple Idee: Man weist das System an, „irgendetwas“ mit gegebenen Daten zu tun – macht Petrovich das Gewünschte, wird es belohnt, wenn nicht, wird es bestraft. Und da das System Strafen vermeiden will, wird es derlei Aktionen nie wieder ausführen.
Das mag auf den ersten Blick völlig sinnfrei klingen, aber wäre es nicht schön, Windows für unerwünschte Neustarts bestrafen zu können? Es gibt sogar eine Petrovich-Implementierung auf Java-Basis, die freilich kein Betriebssystem ist, sondern nur eine Umsetzung der Idee im Terminal.
Einen Blick sind auch Morgan-Mars esoterische Algorithmen wert – zumal es sich hier nicht um lange, ausgefeilte technische Konzepte handelt, sondern um kleinere Häppchen für zwischendurch. Ein besonders prägnantes Exempel ist Intelligent Design Sort. Morgan-Mars Argumentation: Die Wahrscheinlichkeit, dass eine Liste in der vorliegenden Form sortiert ist, liegt bei 1/n! – das sei dermaßen unwahrscheinlich, dass die Reihenfolge der Elemente auf einen intelligenten Sortierer zurückgeführt werden müsse.
Nur liegt die Sortierung in einer Weise vor, die unserem „naiven, sterblichen Verständnis von aufsteigender Sortierung“ entgeht. Jede anderweitige Sortierung würde die Liste „weniger sortiert“ machen. So liegt ein „Algorithmus“ vor, dessen zeitliche Komponente eine Konstante ist – und da diese bei 0 liegt, dürfte es sich um den schnellsten Sortieralgorithmus aller Zeiten handeln. Und dazu braucht es nicht einmal diesen „verdächtigen technologischen Computer-Kram“. Wer deutlich komplexere Algorithmen bevorzugt, sollte einen Blick auf Bogobogosort werfen.
Essenz der Programmier-Esoterik
Die esoterische Programmiersprache HQ9+ von Cliff L. Biffle wurde schon im ersten Teil der Serie kurz behandelt – sie ist quasi die Essenz esoterischer Sprachen, da sie nur eines kann: Die drei üblichen Beispiel-Programme esoterischer Programmmiersprachen besonders einfach abbilden.
„H“ gibt „Hello World“ aus, „Q“ den eigenen Quelltext (Quine), „9“ den Text von „99 Bottle of Beer on the Wall“ und mit „+“ darf das ganze gleich mehrfach geschehen. Will man sich über esoterische Programmiersprachen lustig machen, ist HQ9+ erste Wahl – will man sich aber auch noch über Objektorientierung amüsieren, hat Morgan-Mar HQ9++ in petto.
HQ9++ ist eine „reine“ objektorientierte Sprache, die Daten ausschließlich in Objekten speichert, nicht in Variablen, wie es „unreine“ Sprachen wie C++ tun. Über „++“ werden nicht bloß zwei Befehlsausgaben akkumuliert, sondern es wird auch noch ein das „Objekt einer neuen Subklasse der generischen Superklasse“ generiert – auf das dank „bester Datenabschottungsprinzipien“ nicht zugegriffen werden kann.
Ook!
Ook! ist eine Reminiszenz an den Bibliothekar aus Terry Pratchetts Scheibenwelt-Romanen – früher ein Zauberer, mittlerweile aber als Orang-Utan deutlich glücklicher. Bei Ook! handelt es sich kurz gesagt um Brainfuck für Orang-Utans. Der Befehlssatz ist identisch mit Brainfuck, statt der dort genutzten Syntaxelemente gibt es hier aber nur drei: „Ook!“, „Ook?“ und „Ook.“ Über Zweier-Kombinationen ergeben sich acht Befehle („Ook? Ook?“ ist nicht besetzt).
Ook! arbeitet mit einem Array für Integer-Werte und einem Zeiger, der vor- und zurückspringen und die jeweiligen Werte in den Zellen in- und dekrementieren kann. Zudem können Zeichen von STDIN gelesen und als ASCII-Werte in Zellen geschrieben beziehungsweise umgekehrt ausgegeben werden.
Letztlich lassen sich über das Paar „Ook! Ook?“ und „Ook? Ook!“ While-Schleifen realisieren. Damit ist Ook! nicht nur nah am Turing-Modell, die Sprache ist auch Turing-vollständig! Der Hallo-Welt-Quelltext zeigt aber immer noch am besten den ästhetischen Wert dieser Sprache:
Einen Kuchen bitte, Chef
Chef-Quelltext liest sich wie ein Kochrezept samt Zutaten und Backanleitung. Gehen wir hier einmal den umgekehrten Weg und beginnen mit dem abgekürzten „Hallo Welt“-Programm, das nur „Ha“ ausgibt:
Hello World Souffle.
Ingredients.
72 g haricot beans
101 eggs
Method.
Put eggs into the mixing bowl.
Put haricot beans into the mixing bowl.
Liquefy contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.
Serves 1.
Zutaten stehen für Variablen, die Zahlen (72, 101) für Unicode-Werte. „put“ reiht diese Werte auf dem Stack „mixing bowl“ aneinander, „liquefy“ wandelt sie in Zeichen, „pour“ kopiert die Zeichenkette auf den Stack „baking dish“ und über „Serves“ wird letztlich ausgegeben.
So ein Quelltext sieht nicht nur gut aus, er fördert bisweilen auch schmackhaftes hervor: Ein findiger Programmierer hat ein Programm namens „Hello World Cake with Chocolate sauce“ geschrieben. Vom Interpreter Computer ausgeführt, gibt es „Hello world!“ aus. Vom Interpreter Mensch ausgeführt, entsteht ein Kuchen mit Schoko-Sauce. Brain Food!
Piet
Zum Abschluss präsentiert Morgan-Mar noch Quelltext, neben dem selbst Ook! wie „normaler“ Quelltext aussieht. Piet ist nach dem Maler Piet Mondrian benannt, der für seine abstrakt-geometrischen Bilder bekannt ist. Die Sprache arbeitet mit Stacks, beherrscht Schleifen und allerlei Rechenoperationen.
Soweit scheint die Sprache also recht „normal“. Das Besondere ist aber: nicht Zeichen stehen für Befehle, sondern Farben beziehungsweise Pixel. Es stehen 20 verschiedene Farben zur Verfügung, über die sich allerhand realisieren lässt – bis hin zu einem Brainfuck-Interpreter.
Im Gegensatz zu Ook! oder Chef gibt es zu Piet recht viel Dokumentation und Beispielprogramme, die es zu entdecken lohnt. Um die Bilder zu verstehen, muss man das Codel-Konzept kennen: Im Piet-Code steht jeder Pixel für eine Anweisung.
Um nun aber auch für Menschen sichbar zu sein, werden die Quell-“Texte“ vergrößert – und in dieser Repräsentation heißt jeder vergrößerte Pixel (der nun natürlich aus vielen Pixeln besteht) Codel. Der Rest ist Eye-Candy – ein Bild soll doch mehr als Tausend Worte sagen, daher vorangestellt ein Code-Beispiel, das der Mondrian-Ästhetik besonders nahe kommt; ein Primzahlen-Tester von Kyle Woodward.
(ID:44755170)