Skip to content

mxschll/goethe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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:

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.

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

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages