Whitespace ist eine esoterische Programmiersprache, die 2003 von Edwin Brady und Chris Morris an der University of Durham entwickelt und am 1. April 2003 veröffentlicht wurde. Ihre Besonderheit: Nur Leerzeichen, Tabulatoren und Zeilenumbrüche sind signifikant — alle anderen Zeichen werden als Kommentar ignoriert. Der Quellcode ist damit in einem normalen Editor praktisch unsichtbar.
Das Modell: Stack und Heap
Whitespace ist imperativ und stackbasiert. Jeder Befehl beginnt mit einer Befehlsfamilie (z. B. Space für Stack-Operationen), gefolgt von Parametern, die als Binärzahlen mit Space = 0 und Tab = 1 kodiert werden. Ein Heap erlaubt zusätzlich benannten Speicherzugriff.
Die Befehlsfamilien
[Space] Stack-Operationen: push, dup, swap, discard
[Tab][Space] Arithmetik: add, sub, mul, div, mod
[Tab][Tab] Heap: store (schreiben), retrieve (lesen)
[Tab][LF] Kontrollfluss: Labels, call, jump, ret
[LF] I/O: print/read char, print/read number
Konkret: [Space][Space] gefolgt von einer Binärzahl legt den Wert auf den Stack (push), [Tab][LF][Space][Space] gibt die oberste Zahl aus. Das Präfix [LF] kennzeichnet die I/O-Familie, [Space] beziehungsweise [Tab] die Ausgabe als Zeichen beziehungsweise Zahl.
Beispiel: Hello World
...
Jede Zeile beginnt mit [Space][Space] (push) und einer Binärzahl für den ASCII-Wert, gefolgt von [Tab][LF][Space][Space] (Zeichen ausgeben) — nur Leerzeichen, Tabs und Zeilenumbrüche, unsichtbar im Quelltext.
Praxis und Verwandtschaft
- Whitespace war ein Aprilscherz am 1. April 2003, wurde aber zu einer der bekanntesten Esolangs überhaupt.
- Die Entwickler schrieben später mit Kaya und Idris ernsthafte Sprachen — Whitespace blieb ein Experiment.
- Zusammen mit Brainfuck-Befehle und Befunge-Befehle bildet Whitespace das klassische Trio der Turing-Tarpits: minimalistische Esolangs, die nur durch ihre absichtliche Unlesbarkeit auffallen.
- Wer sich mit der Stack-Logik vertraut machen will, findet eine sanftere Einführung in den Python-Befehle und den Haskell-Befehle.