Esoterische Programmiersprache

Whitespace für Entwickler

| Autor / Redakteur: Otto Geißler / Ulrike Ostler

Mit der Erstellung eines Whitespace-Interpreters in Whitespace, hat die Sprache die Kinderstube verlassen.
Mit der Erstellung eines Whitespace-Interpreters in Whitespace, hat die Sprache die Kinderstube verlassen. (Bild: © djama - stock.adob.com)

„Whitespace“ gehört zu den esoterischen Programmiersprachen. Im Vergleich zu den herkömmlichen und anderen modernen Programmiersprachen bestehen die Befehle und Steuersätze aus definierten Folgen von Leerzeichen, Tabs und Zeilenumbrüchen.

Whitespace wurde im Jahre 2003 vorgestellt und ist eine noch relativ junge esoterische Programmiersprache. Mit Esoterik im eigentlichen Sinn haben solche Programmiersprachen - weitere sind etwa „Shakespeare“, „Intercal“, „Brainfuck“, „Befunge“, „Ook!“, „Beatnik“, „Piet“ und „Malbolge“-nichts zu tun. Nichts zu tun hat es ebenfalls mit dem Datacenter-Begriff „White Space“, auch geschrieben: „Whitespace“, der den Raum beziehungsweise die Fläche meint, wo sich die IT befindet. Vielmehr bestechen diese Sprachen durch ungewöhnlichen Sprachkonzepte. Meist werden sie auch nicht für den praktischen Einsatz entwickelt. Wen wundert’s, wenn die Bedienung bisweilen recht sperrig ist ...?

Esoterisch muss es sein

Die Konzeption von esoterischen Sprachen zielt bisweilen darauf ab, möglichst komplizierte Algorithmen oder eine schier unverständliche Syntax hervorzubringen. Manchmal ist es einfach nur eine kleine spielerische Methode, um neue, weiterführende Ideen zu testen oder um ungewöhnliche Möglichkeiten wie zum Beispiel radikale Vereinfachungen beispielhaft aufzuzeigen. Das bedeutet mit anderen Worten: Entwickler von esoterischen Sprachen stellen sich mitunter klare Vorgaben.

So werden in manchen Fällen konventionelle Spracheigenschaften fast vollständig weggelassen, bis Sprachen entstehen, die sich quasi für Turing-Maschinen eignen - beziehungsweise auch mit einem extrem kleinen Compiler klarkommen. Natürlich sind gewisse esoterische Programmiersprachen schlicht und ergreifend nicht mehr als ein akademischer Scherz.

Obwohl Whitespace am 1. April 2003 der Welt vorgestellt wurde und die Entwickler-Community Whitespace als eine Art April-Scherz goutierte, handelt es sich hier um eine ernsthaft gemeinte esoterische Sprache. Mit der Vorgabe, nur Leerzeichen sowie Tabulatoren und Zeilenumbrüche zuzulassen und alle Nicht-Whitespace-Zeichen zu ignorieren, werden Einrückungen unterschiedlichster Art und Weise im Gegensatz zu fast allen anderen Sprachen absolut essenziell.

Vorteile von Whitespace

Nicht nur, dass Whitespace eine „polyglotte“ Programmierung und damit die Entwicklung eines Quellcodes ermöglicht, der in mehr als einer Programmiersprache gültig ist, eignet sich Whitespace hervorragend zum Verbergen von Programmcodes in normalem Text - ähnlich der Steganographie. Sollten Industriespione beabsichtigen, einen streng geheimen Code stehlen zu wollen, so kann dieser im Grunde nicht entschlüsselt werden. Denn wer soll schon ahnen, dass ein leeres Blatt Papier tatsächlich wichtige Computercodes enthält? So kann man sich - gemäß den Erfindern Edwin Brady und Chris Morris - mit Whitespace beim Ausdruck von Quelltexten wertvolle Tinte sparen ...

Apropos, Leerzeichen hatten, obgleich selten benutzt, in der Programmierung schon immer einen besonderen Stellenwert. In verschiedenen Programmiersprachen kommt ihnen die Aufgabe zu, einzelne geschützte Wörter und ebenso Namen von Variablen voneinander zu trennen. So verlangen manche Sprachen wie zum Beispiel Python eine besondere Formatierung durch Whitespace-Zeichen. Dort steuern Tabulatorzeichen am Zeilenanfang den Programmablauf. Die Mehrheit der anderen modernen Sprachen beachten Whitespaces nur am Rande. Für den Leser von Programmcodes dienen sie lediglich zur besseren und schnelleren Visualisierung der Inhalte.

Wie funktioniert Whitespace?

Whitespace wird als eine imperative beziehungsweise Stack-basierte Programmiersprache bezeichnet, die den Entwicklern einen „Stack“ und „Heap“ zur Verfügung stellt. Alle Abläufe arbeiten intern auf Ganzzahlen beliebiger Bit-Länge. Whitespace ermöglicht es ebenso, Zeichen auszugeben, die durch ihren ASCII-Code-Wert identifiziert werden.

Befehle und Steueranweisungen umfassen definierte Folgen von Leerzeichen (l), Horizontal-Tabulatorzeichen (t) und Zeilenumbrüchen (u). Ein Syntaxelement zur Kennzeichnung von Kommentaren ist nicht vorgesehen. Der Interpreter blendet alle Zeichen aus, die als bedeutungslos festgelegt wurden. Die Befehlsstruktur unterteilt sich in fünf Bereiche: „l“ für Stack-Zugriff, „tl“ für Rechenfunktionen, „tt“ für Heap-Speicher-Zugriff, „u“ für Schleifen, Sprünge, Bedingungen sowie „tu“ für Ein- und Ausgaben von Werten.

Während der Programmcode in einem dreiwertigen Stellensystem („l“, „t“, „u“ oder engl. “s”, “t”, “l”) dargestellt wird, verwendet Whitespace das herkömmliche Dualsystem nur für Daten. An der ersten Stelle steht ein „t“ für eine negative Zahl und ein „l“ für eine positive Zahl. Des Weiteren steht „t“ für „1“ und „l“ für „0“. Im Grunde können Zahlen eine beliebige Bitlänge aufweisen, wobei Compiler und Interpreter eine maßgebliche Obergrenze definieren können. Ein Datum wird durch einen Zeilenumbruch abgeschlossen.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45303231 / Definitionen)