Zum Inhalt springen

Shakespeare Programming Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 6. Oktober 2007 um 18:46 Uhr durch Naohiro88 (Diskussion | Beiträge) (AZ: Die Seite wurde neu angelegt.). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Die Shakesperean Programming Language (kurz: SPL) ist eine von Kalle Hasselström und Jon Åslund im Jahre 2001 entwickelte esoterisch-imperative Programmiersprache (Computersprache), welche auf C basiert und zu den interessantesten, aber auch am schwersten erlernbaren Programmiersprachen gehört.

Die Sprache

Basiswissen

Die Shakesperean Programming Language ist so besonders, da sie nicht wie sämtliche andere Programmiersprachen aus arithmetischen und festgelegten Zeichen basiert, sondern dem Entwickler bei seinem Programm sehr viel Freiheit lässt. Oft hat der Entwickler die Möglichkeit, das Programm an vielen Stellen in hunderte andere Varianten mit selben Ergebnis umzuschreiben. Darüber hinaus ist die Programmiersprache wie der Name schon sagt an Shakespeare orientiert und sozusagen in Dramenform programmiert, was sie zugleich einzigartig und positiv gewöhnungsbedürftig macht.

Die folgenden Beispiele sind aus dem ersten Programm in SPL - dem (in der Informatik so oft programmierten) HelloWorld-Programm!

Funktionsweise

Der Titel

Die erste Zeile eines jeden "Dramenstücks" in SPL ist der Titel. Dieser kann frei gewählt werden und verleiht dem Stück etwas mehr Ordnung und Übersicht. Da er frei gewählt werden kann, erkennt der Compiler ihn bloß als Kommentar und lässt ihn beim Kompilieren aus. Demzufolge ist der Titel optional, die Entwickler geben jedoch zu bedenken, dass ein Programm ohne Titel so schlecht programmiert sei, wie ein Drama ohne Titel schlecht geschrieben ist.


Beispiel: The Infamous Hello World Program

Die Charaktere (Dramatis Personæ)

Wie in jedem Shakespeare-Drama auch, müssen am Anfang zunächst die Personen festgelegt werden. Diese sind die ersten, die vom Compiler erkannt werden und erkannt werden müssen, damit die Kompilierung zustande kommt. Aufgelistet werden !!alle!! Charaktere des Stücks, welchen stets eine kurze Beschreibung folgt, aber dazu mehr.


Beispiel:

Romeo, a young man with a remarkable patience.

Juliet, a likewise young woman of remarkable grace.

Ophelia, a remarkable woman much in dispute with Hamlet.

Hamlet, the flatterer of Andersen Insulting A/S.


Die Charaktere sind vergleichbar mit (Integer-)Variablen, denen durch ihre Beschreibung ein bestimmter Wert mitgegeben wird. Verwendet werden können nur Charaktere, welche auch in Shakespeare-Dramen eine Rolle spielen, also zumeist Romeo, Juliet, Hamlet, Othello, Macbeth, King Lear usw.

Akte und Szenen

Nach der "Deklaration" und "Initialisierung" der Variablen folgen der Abfolge eines Dramas entsprechend "Act I" und "Scene I", welche jeweils mit Titel versehen sind. Wie bereits beim Titel werden diese vom Compiler nicht gewertet; "Act" und "Scene" sind somit Schlüsselwörter für Kommentare. Ebenfalls mit dem Titel vergleichbar müssen Akte und Szenen zur erfolgreichen Kompilierung nicht zwingend sein. Sie sind jedoch nicht optional im Sinne des Programmierers, da jeder Programmierer in SPL quasi dazu verpflichtet ist, sein Programm in Akte und Szenen einzuteilen - vergleichbar mit Programmierkonventionen (Einrücken) in gewöhnlichen Sprachen.

Beispiel:

Act I: Hamlet's insults and flattery.

Scene I: The insulting of Romeo.

Enter, Exit und Exeunt

Jede Szene in jedem Akt wird eingeschlossen von Schlüsselwörtern, welche die Szene eröffnen bzw. schließen. Diese heißen, wie im richtigen Drama zu Beginn [Enter], [Exit] und [Exeunt]. Um einen Charakter sprechen zu lassen und dafür zu sorgen, dass das Programm etwas ausführt, müssen die Charaktere der Logik zufolge auf der Bühne stehen. Charaktere, welche bereits auf der Bühne stehende Charaktere mit "you", "thou" oder einem jeden anderen Pronomen der zweiten Person ansprechen, müssen ebenfalls auf der Bühne platziert sein. Auf die Bühne kommen Charaktere durch die Festlegung ihrer im [Enter]-Befehl als eine Art "Parameter".

Beispiel:

[Enter Hamlet and Romeo]

Entsprechend treten sie auch wieder ab. Dies geschieht entweder mit dem [Exit]- oder dem [Exeunt]-Befehl. Tritt eine Figur ab, muss diese hinter dem [Exit] erwähnt werden, z.B. [Exit Romeo]. Treten zwei oder mehr Charaktere gleichzeitig ab, !!muss!! zwingend der Exeunt-Befehl verwendet werden. Sonderfall: Am Ende der Szene treten häufig alle dargestellten Personen ab. In diesem Falle genügt ein einziges [Exeunt] ohne sämtliche Parameter, um dem Compiler dies mitzuteilen. Gibt man einem Charakter, der bereits auf der Bühne ist, einen Enter-Befehl oder einem abwesenden Charakter ein Exit, so wird der Compiler einen Laufzeitfehler melden.

Beispiel:

[Exeunt]

[Exeunt Hamlet and Romeo]

Der Dialog

Wie im wirklichen Drama ist auch in SPL der Dialog zumeist Grundlage von Berechnung, In- und Output und Gotos. Ein Dialogteil eines einzelnen Charakters besteht aus einem Charakternamen, einem Doppelpunkt sowie einem oder mehreren Sätzen, mit dessen Hilfe z.B. eine Berechnung stattfindet.

Beispiel:

Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind!


Konstanten

Konstanten sind in SPL ebenfalls sehr frei festgelegt. Jede Zahl und alle Berechnungen werden in englischer Sprache festgeschrieben, nicht in arithmetischen Ausdrücken. So gibt es für Konstanten einige Regeln:

- Jedes Nomen ist grundsätzlich eine Konstante mit dem Wert 1 oder -1.

- Dies hängt davon ab, ob das Nomen "gut" oder "schlecht" ist.

- "flower" ist z.B. eine Konstante mit dem Wert 1; "pig" oder "negation" hätte entsprechend -1.

- Im Zweifel sind Nomen sozusagen neutral (Wert 1), z.B. "tree" ist neutral und hat ebenfalls den Wert 1.

- Jedes vorangeschaltete Adjektiv multipliziert das Nomen mit 2. Um einen Nomenwert also mit 4 zu multiplizieren, schaltet man zwei Adjetive vor das Nomen.

- Im weiteren Verlauf kann man durch ausgeschriebene arithmetische Ausdrücke mit den Zahlen rechnen, z.B. "the sum of a tree and an glittering flower is ..." würde dann dem Ausdruck 1 + 2 = ... entsprechen.

Ein weiteres (komplizierteres Beispiel):

"the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece"

Nehmen wir dies einmal auseinander. Zunächst ersetzt man die Konstanten mit Zahlen. Der Satz verändert sich deshalb in:

"the difference between the square of the difference between 2 and 4 and the cube of -4"

Nun ist die Differenz zwischen 2 und 4 eben (-2) und der Würfel von (-4) ist (-4)^3 = -64. Da das Quadrat von (-2) = 4 ist, kommt man unter dem Strich zu "the difference between -4 and -64", was genau 60 entspricht.

So ist "the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece" = 60.




Weiteres folgt in Kürze.