Die Goethe Programmiersprache ist eine dynamische Programmiersprache, so entworfen, dass Programme in Gedichtform geschrieben werden können.
In der heutigen Welt der Programmiersprachen sehen fast alle Programme gleich aus. Dem Code fehlt es an eigenem Charakter und Charme. Die Individualität eines einzelnen Programmierers lässt sich nicht in den niedergeschriebenen Zeilen wiederfinden.
Dabei ist Programmieren doch ein höchst kreativer Prozess. Man könnte fast sagen, Programmieren ist wie das Schreiben eines Gedichtes. Mit jeder Zeile Code wächst des Programmierers Komposition um einen weiteren Vers.
Die Goethe Programmiersprache löst das geschilderte Problem: Sie befreit den Entwickler von den ihm auferlegten lyrischen Fesseln.
Zur Installation wird Python 3.8+ benötigt.
git clone git@github.com:mxschll/goethe.git
cd goethe
python3 setup.py install
Unter Umständen muss unter Linux sudo
zur Installation verwendet werden.
Nach der Installation kann der Interpreter mit dem Befehl goethe
aufgerufen werden.
goethe [-h] (-i INPUT | -e)
Mit goethe -h
werden alle verfügbaren Optionen aufgelistet:
usage: goethe [-h] (-i INPUT | -e)
Python interpreter for the Goethe programming language.
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT Input file (.goethe)
-e, --editor Open the editor
Im folgenden Beispiel wird ein Goethe Programm in der Konsole ausgeführt:
> goethe -i examples/hello.goethe
Hello World!
Die Goethe Programmiersprache baut auf den Silben der jeweiligen Verse eines Gedichtes auf. Je nach Anzahl der Silben wird ein entsprechender Befehl ausgeführt. Eine Liste der verfügbaren Befehle findet sich in der unten stehenden Tabelle.
In jedem Vers werden die Silben gezählt und in einen entsprechenden Befehl umgewandelt:
Silben | Befehl | Beschreibung |
---|---|---|
0 | PASS |
Führe keine Aktion aus. |
1 | LOOP |
Springe zum entsprechenden POOL , wenn der aktuelle Speicherwert 0 ist. |
2 | POOL |
Springe zum entsprechenden LOOP , wenn der aktuelle Speicherwert != 0 ist. |
3 | INCVAL |
Erhöhe den aktuellen Speicherwert um 1. |
4 | DECVAL |
Verringere den aktuellen Speicherwert um 1. |
5 | INCPTR |
Erhöhe den Programmzeiger um 1. |
6 | DECPTR |
Verringere den Programmzeiger um 1. |
7 | OUT |
Gib den aktuellen Speicherwert als ASCII aus. |
8 | IN |
Lese die Benutzereingabe zeichenweise und schreibe sie in den Speicher. |
9 | RND |
Schreibe eine Zufallszahl zwischen 0 und 255 in den Speicher. |
Die Anzahl der Silben n
wird immer n mod 10
genommen. Hat ein Vers beispielsweise 13 Silben, so wird dieser wie folgt umgewandelt: 13 mod 10 = 3 -> INCVAL
.
Neben der Silbenanzahl ist es auch möglich, mit bestimmten Stilmitteln Aktionen ausführen.
Eine Anapher ist die Wiederholung eines Wortes oder einer Wortgruppe zu Beginn aufeinanderfolgender Verse.
Die Anzahl der Silben zweier aufeinanderfolgender Verse mit Anaphern wird addiert.
Wer nie sein Brot mit Tränen aß, (8 Silben)
Wer nie die kummervollen Nächte (9 Silben)
Auf seinem Bette weinend saß.“ (8 Silben)
(Johann Wolfgang von Goethe: Wer nie sein Brot mit Tränen aß...)
Das obige Beispiel führt zu folgenden Zahlenfolge: [17, 8]
.
Die Epiphora bezeichnet die Wiederholung eines Wortes oder einer Wortgruppe am Ende aufeinanderfolgender Verse.
Die Anzahl der Silben zweier aufeinanderfolgender Verse mit Epiphora wird subtrahiert.
Sturm und Meeresgefährde trifft nie (9 Silben)
Dich den Klugen, der geschifft nie; (8 Silben)
Wer in Furcht sogar den Wein scheut, (8 Silben)
trinkt das eingemischte Gift nie. (8 Silben)
(August von Platen)
Das obige Beispiel führt zu folgender Zahlenfolge: [1, 8, 8]
.
Die Alliteration bezeichnet die Verwendung von Wörtern mit gleichen Anfangsbuchstaben kurz hintereinander in einem Satz.
Eine Alliteration wird erkannt, wenn mehr als 60% der verwendeten Wörter mit demselben Anfangsbuchstaben anfangen und ein Vers aus mehr als 3 Wörtern besteht.
Ein Vers mit Alliteration wird als 7 gezählt. Die Silben des Verses werden nicht beachtet.
Wir wanken in wohnsamer Wiege, (9 Silben)
Wind weht wohl ein Federlein los, (8 Silben, nicht als Alliteration erkannt, da W < 60%)
Wie's wehe, wie's fliege, wie's liege, (9 Silben)
Fein fiel es und spielt es dem Vater im Schoß. (11 Silben)
(Clemens Brentano: Rheinmärchen)
Das obige Beispiel führt zu folgender Zahlenfolge: [7, 8, 7, 1]
.
Die Assonanz bezeichnet den sich auf die Vokale beschränkenden Gleichklang zwischen mehreren Wörtern.
Ein Vers mit Assonanz wird als 9 gezählt. Die Silben des Verses werden nicht beachtet.
Die Menschen geben und nehmen eben, (10 Silben)
So ist nun mal das Leben. (7 Silben)
Das obige Beispiel führt zu folgender Zahlenfolge: [9, 7]
.