Esoteric Programming, Teil 5

David Morgan-Mars esoterische Informatik

| Autor / Redakteur: Mirco Lang / Stephan Augsten

David Morgan-Mar ist vor allem für seine Web-Comics bekannt.
David Morgan-Mar ist vor allem für seine Web-Comics bekannt. (Bild: http://www.mezzacotta.net/)

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.

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.

TrumpScript und ArnoldC

Esoteric Programming, Teil 3

TrumpScript und ArnoldC

19.07.17 - „Make Python Great Again!“ und „I'll be back!“, so lauten die Leitmotive für die beiden esoterischen Programmiersprachen TrumpScript und ArnoldC. Wir schauen uns an, was es mit den beiden nicht ganz erstzunehmenden Projekten auf sich hat. lesen

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.

Was sind esoterische Programmiersprachen?

Esoteric Programming, Teil 1

Was sind esoterische Programmiersprachen?

05.07.17 - „You lying stupid Idiot!“, das bedeutet in der Shakespeare Programming Language: „x = -4“. Willkommen in der Welt der esoterischen Programmiersprachen! Zwischen lehrreichen Konzeptstudien und akademischen Witzen verbirgt sich eine Wunderwelt der Horizonterweiterung. lesen

„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:

Ergänzendes zum Thema
 
„Hello World!“-Programm in Ook!

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.

Befunge – Code in 2D

Esoteric Programming, Teil 4

Befunge – Code in 2D

31.07.17 - Befunge ist eine durchaus ernstzunehmende esoterische Programmiersprache. Sie führt mit zweidimensionalem und selbstmodifizierendem Code Konzepte ein, die anderes Denken fordern, und gehört mit zu den Ursprüngen der Esolangs-Community. lesen

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.

Ein Primzahlentester in Piet.
Ein Primzahlentester in Piet. (Bild: kylewoodward.com)

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.

Shakespeare Programming Language

Esoteric Programming, Teil 2

Shakespeare Programming Language

12.07.17 - In der Shakespeare Programming Language verfasster Quellcode hat mit den Meisterwerken des Schriftstellers wenig gemein. Die esoterische Programmiersprache reicht aber nahe an ein Theaterstück heran – zumindest, wenn man wüste Beschimpfungen mag. lesen

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44755170 / IDEs & Programmiersprachen)