99 bottles
of beer...
Esoterische Programmiersprachen
Dr. Mathias Elsner
Remaining sane in insane times
P'' im ›Produktiv-Einsatz‹ ✌
Hinweis: P'' ist keine für praktische Aufgaben besonders gut geeignete Programmiersprache. Dafür war sie auch nie vorgesehen. Javascript ist auch keine besonders effiziente Sprache für die Implementierung von Compilern oder Interpretern.
Je nach verwendetem Browser und Hardware kann das Fenster während der Programm-Ausführung 'einfrieren', bzw. das Betriebssystem nachfragen, ob die nicht mehr reagierende Anwendung geschlossen werden soll. Einfach hartnäckig bleiben. Diese Seite gibt kostbare Muße für eine gute Tasse Tee. ☕
Der Code ist für einen Javascript-Interpreter schon grenzwertig. Was in einer typischen high-level Sprache wie Python oder Java in drei oder vier Zeilen kommentarfreien Codes (noncommenting lines of code, NCLOC) ausgedrückt wird, benötigt in P'' atemberaubende 337568 Instruktionen, entsprechend 4219 NCLOC von sehr dichtem Programmcode (s.u.).
Auf einigen mobilen Endgeräten führt der automatische 'browser refresh' dazu, daß die Ausführung des Programms vorzeitig abbricht.
Warnung: Die für kurze Beispiel-Programme hilfreiche 'Schnecke / slow'-Funktion ist bei diesem Programm-Umfang wenig praktikabel. Man kann den Programmfluss in Zeitlupe anhand eines wesentlich kürzeren Code-Schnippsels nachvollziehen auf meiner
allgemeinen Seite über die Sprache P''.
Bedienungsanleitung:
- Rohformat-Code in den Präprozessor kopieren.
- Ausführungsmodus wählen (RUN | Schritt | Schnecke)
(1) Präprozessor:
(2) Ausführen:
; oder
; oder
ms
◀ Speicherband
Output ▼
WTF 99 bottles?
Da fragen wir mal Wikipedia:
“»99 Bottles of Beer« (99 Flaschen Bier) ist ein Folksong, der in den USA und Kanada besonders bei langen Ausflügen gesungen wird und an das britische Kinderlied »Ten Green Bottles« anlehnt.”
Er folgt dem Muster:
Ninety-nine bottles of beer on the wall,
(Neunundneunzig Flaschen Bier an der Wand,)
Ninety-nine bottles of beer.
(Neunundneunzig Flaschen Bier.)
Take one down, pass it around,
(Nimm eine runter, reich sie herum,)
Ninety-eight bottles of beer on the wall.
(Achtundneunzig Flaschen Bier an der Wand.)
Das Lied wird mit immer weniger Flaschen bis zu dieser Strophe wiederholt:
One (last) bottle of beer on the wall,
(Eine (letzte) Flasche Bier an der Wand,)
One (last) bottle of beer.
Take it down, pass it around,
No (more) bottles of beer on the wall.
(Keine Flaschen Bier (mehr) an der Wand.)
Um die rekursive Eigenschaft auf eine Meta-Ebene zu heben, wird manchmal noch folgende Strophe angehängt:
Go to the store and buy some more, 99 bottles of beer on the wall.
(Gehe in den Laden und hole Nachschub, 99 Flaschen Bier an der Wand.)
Für echte Fans:
Es gibt sogar eine Webseite, welche nur zum Zweck der Sammlung von '99 bottles'-Programmen in möglichst vielen verschiedenen Programmiersprachen eingerichtet wurde:
Übrigens:
Auf den ersten Blick sieht der nebenstehende P'' code aus, als bestünde er ausschließlich aus 'λR' Instruktionen. Unter Verwendung von Syntax-Highlighting wird allerdings leicht ersichtlich, daß auch die iterativen Instruktionen vorkommen:
(Für größere Ansicht auf das Bild klicken)