Auch wenn "To be or not to be" einen hübschen regulären Ausdruck abgibt - »/(bb|[^b]{2})/« -, ist die Verbindung zwischen Shakespeare und Sysadmins nicht auf den ersten Blick ersichtlich. Aber der Dichterfürst wusste: "Ein kluger Kopf weiß alles zu benutzen." Drum lasset Perl und Bash einstweilen in der Lade und huldigt einer Programmiersprache, die voller Drama ist und auch voll Poesie.
Die Struktur der Shakespeare Programming Language [1] folgt dem Aufbau eines Bühnenstücks. Nach einem frei wählbaren Titel, den der SPL-Parser nur als Kommentar wahrnimmt, deklariert der Programmierer die Variablen. Sie erscheinen in Form der Dramatis personae, der handelnden Charaktere:
Caesar, a successful and soon dead roman emperor
Othello, a venetian general
Dass die beiden Figuren nicht im selben Shakespeare-Drama vorkommen, stört vielleicht den Bildungsbürger, den Parser jedoch nicht. Der erkennt nur die Namen und nutzt sie als Integer-Variablen. Den Text nach dem Komma wertet der Parser nicht aus, hier finden beliebig blumige Beschreibungen Platz.
Theatertypisch ist der Programmcode in Akte und Szenen unterteilt. Sie gliedern das Programm nicht nur optisch, sondern sind auch Sprungmarken für das Theater-Äquivalent des Goto-Befehls:
Act I: A battle of words
Scene I: Caesar insults Othello
Bevor man den Variablen einen Wert zuweisen kann, muss der entsprechende Charakter die Bühne betreten:
[Enter Caesar and Othello]
Caesar: You stupid rotten beggar!
Der Wert, den die Variable aufnimmt, bemisst sich danach, wie angenehm die Aussage der sprechenden Person ist. Das Substantiv steht für den Wert 1, wenn es angenehm oder neutral ist, oder -1, wenn es negativ besetzt ist.
Im Beispiel von eben (»beggar«) ist der Wert -1. Für jedes vorangestellte Adjektiv wird der Wert mit 2 multipliziert. »Stupid rotten beggar« bedeutet also -1*2*2=-4. Da Caesar zu Othello spricht (»you«), bekommt die Variable »Othello« den Wert -4 zugewiesen.
Ja, viel kann Poesie, das Himmelskind
Natürlich erfolgt auch die Ausgabe stilecht: Der Schlüsselsatz »Open your heart!« führt zur Ausgabe des Zahlwerts, »Speak your mind!« gibt den Buchstaben aus, dessen Ascii-Wert dieser Zahl entspricht. Goto-Befehle gestalten sich genauso einfach:
Othello: Let us then proceed to Act II!
Der Charakter darf den Sprung aber auch an eine Bedingung knüpfen. Er stellt dazu eine Frage, die auf einen Vergleich der Variablen hinausläuft, und springt abhängig vom Ergebnis eine Szene oder einen Akt an:
Caesar: Am I better than you?
Othello: If not, let us return to Scene I.
Einen SPL-Compiler gibt es nicht, aber »spl2c«, einen SPL-zu-C-Translator, der in Flex and Bison verfasst ist. Programme in der Shakespeare Programming Language haben aufgrund der ausgreifenden Prosa eine beachtliche Länge, das klassische "Hello World" erstreckt sich über mehrere Hundert Zeilen. Der Dichter fasst es in Worte: "Ist es auch Wahnsinn, so hat es doch Methode" (Polonius im 2. Akt von "Hamlet"). (jk)
|
Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein in Kamp-Lintfort. Zu seinen Aufgaben gehören die Sicherheit und Verfügbarkeit der Firewalls und der DMZ. Im heißen Teil seiner Freizeit frönt er dem Kochen, im feuchten Teil der Süßwasseraquaristik und im östlichen lernt er Japanisch.
|