Esoterische Programmiersprachen – Schönheit in der Informatik
BLOG: Heidelberg Laureate Forum

Nachdem Michael Atiyah seinen Eröffnungsvortrag “Beauty in Mathematics” gehalten hat, schoss mir eine Frage in den Kopf: “An welchen Stellen gibt es die Schönheit in der Informatik?”. Das Erste, was mir dazu einfiel, sind sogenannte esoterische Programmiersprachen. Deren Besonderheit liegt nicht nur in den teils amüsanten Namen, sondern auch in der äußeren Erscheinungsform, die von poetisch über kryptisch bis hin zu unsichtbar reicht.
Auf Wikipedia lässt sich eine schöne Liste mit Hello-World-Beispielen zu einigen dieser Sprachen finden.
Was sind esoterische Programmiersprachen überhaupt?
An sich sind es Programmiersprachen, wie andere auch, jedoch mit der Intention, nicht zwangsläufig für den praktischen Einsatz geeignet zu sein. Viel mehr dienen sie der Veranschaulichung von Konzepten, werden zu Lehrzwecken eingesetzt oder stellen einfach nur eine Parodie oder Spaß dar. Dabei ist der Funktionsumfang dieser Sprachen zum Teil stark eingeschränkt, wobei es durchaus auch Turing-Vollständige Sprachen gibt.
Dabei ist esoterisch jedoch nicht im Sinne von Esoterik an sich zu verstehen. Vielmehr soll es die von außen scheinbare Unsinnigkeit dieser Sprachen verdeutlichen.
Einige besonders ausgefallene Exemplare möchte ich hier kurz vorstellen.
Brainfuck
Die Programmiersprache wird ihrem Namen gerecht, wenn man versucht, damit zu programmieren. Die Besonderheit dieser Programmiersprache liegt darin, dass sie mit nur 8 Zeichen auskommt. Diese Zeichen sind: > < + - . , [ ]
. Jedes dieser Zeichen ist ein Element des Befehlssatzes und repräsentiert eine bestimmte Funktion, wie beispielsweise das Inkrementieren oder Dekrementieren einer Zahl.
Chef
Mit dieser Programmiersprache schreibt der Programmierer ein in gewisser Weise ein Kochrezept. Der Aufbau eines Programmcodes erfolgt mit der Definition von Zutaten – die Variablen – , einzelnen Zubereitungsschritten – die Methoden – und dem Vergeben eines Namens für das “Rezept”, das man programmiert.
Shakespeare Programming Language
Die Poeten unter den Programmierern werden sich mit der Shakespeare Programming Language wohlfühlen. Der Programmierer ist dazu angehalten, seinen Quelltext in Form eines Dramas frei nach William Shakespeare zu formulieren. Die erste Zeile des Codes ist der Titel des “Dramas”. Innerhalb des Quelltextes werden zusätzlich ein Personenverzeichnis, in dem alle Charaktere samt einer kleinen Beschreibung eingeführt werden. Sie entsprechen in etwa den Variablen. Vergleichbar zum Titel gibt es auch Akte und Szenen. Ebenso enthalten sind Sprachelemente, die einen Auftritt oder Abtritt eines Charakters beschreiben. Wie in einem Drama üblich, haben die Charaktere auch einen Sprechteil, in dem sie mit den anderen Charakteren in Dialog treten.
Whitespace
Whitespace ist eine Programmiersprache, dessen Quelltext ausschließlich auf Leerzeichen, Tabulatoren und Zeilenumbrüchen besteht. Das bedeutet für den Programmierer, dass sein Quelltext letztlich unsichtbar ist.
Whitespace profitiert ungemein vom Syntaxhighlighting. Ansonsten machen White Space Programme einen ungewohnt aufgeräumten Charakter. Hier ein Beispiel, welches die Instruktionen für den Benuzter als White-Space Kommentare ausgibt.
Die Schönheit auf die Erkenntnis bezogen, oder generell [1], jedenfalls auf die Informatik, auf die Angewandte Informatik, ist die Einfachheit bzw. könnte sie sein.
MFG
Dr. W (der sich die Nachricht Michael Atiyahs nicht zugeführt hat, dies aber wohl noch nachholen wird, sofern möglich – sowas in dieser Art – https://www.youtube.com/watch?v=dToui7IVwBY – gell?!)
[1] es gibt zudem Analysen zur menschlichen Schönheit, wobei manchmal die Durchschnittlichkeit gemeint ist, was die Gesichtszüge und so betrifft; liegt dbzgl. Durchschnittlichkeit vor, kann dies, empirisch soz. und das Evolutionäre meinend – den Primaten anleiten zuzugreifen (Quentin Tarantino wäre demzufolge nicht schön, wobei der Schreiber dieser Zeilen hier abweicht)
In diesem Kontext sollte auch Perlingata nicht unerwähnt bleiben, welches als Perlmodul das Programmieren in Latein erlaubt: http://search.cpan.org/~dconway/Lingua-Romana-Perligata-0.50/lib/Lingua/Romana/Perligata.pm
Ich vermisse Intercal, vor allem da es ueber Beschraenkungen des Zeichensatzes weit hinausgeht.