Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Goethe Programmiersprache

Die Goethe Programmiersprache ist eine dynamische Programmiersprache, so entworfen, dass Programme in Gedichtform geschrieben werden können.

Wozu das ganze?

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.


1. Installation

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.

2. Benutzung

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!

3. Sprachspezifikation

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.

3.1 Silben pro Vers

In jedem Vers werden die Silben gezählt und in einen entsprechenden Befehl umgewandelt:

SilbenBefehlBeschreibung
0PASSFühre keine Aktion aus.
1LOOPSpringe zum entsprechenden POOL, wenn der aktuelle Speicherwert 0 ist.
2POOLSpringe zum entsprechenden LOOP, wenn der aktuelle Speicherwert != 0 ist.
3INCVALErhöhe den aktuellen Speicherwert um 1.
4DECVALVerringere den aktuellen Speicherwert um 1.
5INCPTRErhöhe den Programmzeiger um 1.
6DECPTRVerringere den Programmzeiger um 1.
7OUTGib den aktuellen Speicherwert als ASCII aus.
8INLese die Benutzereingabe zeichenweise und schreibe sie in den Speicher.
9RNDSchreibe 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.

3.2 Stilmittel

Neben der Silbenanzahl ist es auch möglich, mit bestimmten Stilmitteln Aktionen ausführen.

3.2.1 Anapher

Eine Anapher ist die Wiederholung eines Wortes oder einer Wortgruppe zu Beginn aufeinanderfolgender Verse.

Effekt

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].

3.2.2 Epiphora / Epipher

Die Epiphora bezeichnet die Wiederholung eines Wortes oder einer Wortgruppe am Ende aufeinanderfolgender Verse.

Effekt

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].

3.2.3 Alliteration

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.

Effekt

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].

3.2.4 Assonanz

Die Assonanz bezeichnet den sich auf die Vokale beschränkenden Gleichklang zwischen mehreren Wörtern.

Effekt

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].

About

Goethe programming language Interpreter.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages