- Beatnik (Programmiersprache)
-
Beatnik ist eine esoterische Programmiersprache, entwickelt von Cliff L. Biffle vermutlich im Jahr 2001.[1]
Beatnik verwendet, ähnlich wie Forth, einen Stack, hat aber einen wesentlich kleineren Sprachumfang.
Im Gegensatz zu herkömmlichen Programmiersprachen verwendet Beatnik keine feste Zuordnung zwischen Schlüsselwörtern und Funktionen. Ihr Wortschatz ist der der englischen Sprache. Jedes Wort wird nach den englischen Scrabble-Regeln bewertet und entsprechend dem Punktewert eine Funktion zugewiesen. Scrabble vergibt für jeden Buchstaben eines Wortes Punkte, umso mehr Punkte, je seltener dieser Buchstabe in der jeweiligen Sprache verwendet wird.
Beatnik ist für den praktischen Einsatz nicht geeignet, kann jedoch wie viele andere esoterische Programmiersprachen in der Lehre verwendet werden, um Konzepte des Sprachdesigns zu verdeutlichen. Mit der Eigenart, einen natürlichsprachlichen Text in nicht offensichtlicher Weise als Programmtext zu verwenden, demonstriert Beatnik auch Konzepte der Steganografie.
Inhaltsverzeichnis
Syntax
Alle Rechenoperationen in Beatnik werden auf einem Stack ausgeführt. Der einzige Datentyp von Beatnik ist ein vorzeichenloser 8-Bit-Wert, es können also nur Werte von 0 bis 255 dargestellt werden.
Die Werte pro Buchstaben im englischen Scrabble sind wie folgt:
- 1 Punkt: E, A, I, O, N, R, T, L, S, U
- 2 Punkte: D, G
- 3 Punkte: B, C, M, P
- 4 Punkte: F, H, V, W, Y
- 5 Punkte: K
- 8 Punkte: J, X
- 10 Punkte: Q, Z
Eine Überprüfung, ob es sich um ein gültiges Wort der englischen Sprache handelt, findet nicht statt. Ebenso ist es nicht notwendig, dass der Text natürlichsprachig einen Sinn ergibt. Der Autor der Sprache benutzt dies, um ein Beispielprogramm zu schreiben, das aus einer sinnfreien Aneinanderreihung von Wörtern besteht, womit er den Namen Beatnik begründet.
Punktewert Funktion <5 Keine Funktion. Der Interpreter kann möglicherweise den Programmierer wegen seiner schlechten Punktewerte aufziehen. 5 Schreibt den Punktewert des nächsten Wortes auf den Stack, das betroffene Wort wird dann nicht weiter interpretiert 6 Entfernt den obersten Wert vom Stack 7 Addiert (und entfernt) die beiden obersten Werte auf dem Stack miteinander und schreibt das Ergebnis auf den Stack 8 Wartet auf einen Tastendruck und schreibt diesen auf den Stack 9 Entfernt den obersten Wert vom Stack und schreibt diesen als ASCII-Zeichen auf den Bildschirm / Output 10 Subtrahiert den obersten Wert auf dem Stack vom zweitobersten und schreibt das Ergebnis auf den Stack (Ausgangswerte werden entfernt) 11 Vertauscht die Positionen der beiden obersten Werte auf dem Stack 12 Schreibt den obersten Wert auf dem Stack nochmals auf den Stack (Duplikation) 13 Bedingter Sprung. Das nächste Wort wird als Sprungdistanz »n« verwendet. Der oberste Wert vom Stack wird entfernt, ist dieser gleich Null, so werden n+1 Worte übersprungen 14 Bedingter Sprung. Wie vorstehend, jedoch wird bei <>0 gesprungen 15 Bedingter Rückwärtssprung. Bei 0 wird um n Worte rückwärts gesprungen 16 Bedingter Rückwärtssprung. Bei <>0 wird um n Worte rückwärts gesprungen 17 Programmstopp 18–23 Keine Funktion. Aufgrund der hohen Punktzahl wird der Interpreter den Programmierer aber nur dann aufziehen, wenn er einen schlechten Tag hatte >23 Der Interpreter applaudiert dem Programmierer für die hohe Punktzahl Die Beschreibung für die Bedeutung der Werte <5, 18–23 und >23 zeigt, dass der Autor bei der Definition der Sprache eigentlich primär einen Scherz beabsichtigt hatte. Allerdings hat dieser Scherz zu mehreren tatsächlichen Implementierungen der Sprache geführt.
Beispiele
Der Satz »Hello, aunts! Stay around breads!« in Scrabble-Werte übertragen, ergibt das Programm 8, 5, 7, 7, 9. Es wird also ein Zeichen eingelesen, dann wird 7 auf den Stack gelegt, die beiden Werte werden addiert, dann wird das neue Zeichen ausgegeben.
Das gleiche Ergebnis würde auch die Lautfolge »Badaa buu bub bub bllub« ergeben, was sehr deutlich zeigt, wie wenig offensichtlich der Zusammenhang zwischen Darstellung und Funktion bei Beatnik ist.
Der Autor der Sprache gibt auf seiner Website den Satz »Hello, aunts! Swim around brains!« als Beispiel an, dies ergibt 8, 5, 9, 7, 8. Es wird also ein Zeichen eingelesen, dann wird 9 auf den Stack gelegt, die beiden Werte werden addiert und dann wird ein weiteres Zeichen eingelesen. Offensichtlich ist dieser Programmcode nicht korrekt.
Siehe auch: Beatnik in einer Liste von Hallo-Welt-Programmen
Einzelnachweise
Weblinks
Wikimedia Foundation.