Vergangenheitsbewältigung

Programmieren Sie eigentlich immer noch in Java, C++, Perl oder Ruby? Sie sollten sich mit HQ9+ beschäftigen, einer eleganten Sprache, die mit minimalen Mitteln wichtige und komplexe Aufgaben wie "Hello, World!", Rekursivität und "Quines" löst.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Nicolai Josuttis

Ja, ich gebe zu, ich habe länger nichts mehr geschrieben. Aber ich war wie anscheinend so viele in unserem Business "Land unter". Schuld war auch (der Hinweis sei gestattet) die Fertigstellung der deutschen Version meines SOA-Buchs. Ich hatte natürlich immer mal wieder vor, etwas zu "bloggen", weshalb ich jetzt vermutlich in einigen Artikeln die Vergangenheit der letzten Monate aufarbeiten werde.

Womit wir auch schon beim ersten Thema sind: eine bemerkenswerte Vergangenheitsbewältigung unseres IT-Business. Auf der letzten OOPSLA in Montreal gab es einen Vortrag oder Event von Guy Steele und Richard "Dick" Gabriel mit dem Titel 50 in 50. Dahinter verbarg sich eine Rückschau über die Entwicklung der Programmiersprachen in 50 Essays mit jeweils 50 Worten, die ursprünglich auf der HOPL-III als Keynote gehalten wurde (das ist eine alle 15 Jahre stattfindende Konferenz zur Historie von Programmiersprachen). In dem Vortrag wurde mit "do" und "od" gerappt, manch Anekdote zu den Referenz-Schachtelungen von ALGOL-68 erzählt und es wurden natürlich auch obskure Programmiersprachen vorgestellt. Sowohl auf der HOPL-III als auch auf der OOPSLA gab es am Ende Standing-Ovations.

Bei mir hängen geblieben ist vor allem die äußerst einfache, aber mächtige Programmiersprache HQ9+. Sie deckt die wichtigsten Anforderungen und Akzeptanztests an moderne Programmiersprache so perfekt ab, dass jeweils nur ein Buchstabe für folgende Aufgaben reicht:

  • "Hello, World!" ausgeben
  • Alle Strophen des Songs "99 Bottles of Beer on the Wall" ausgeben (ein rekursiver Abzähl-Song wie "10 kleine Negerlein", für den es regelmäßig Wettbewerbe gibt, diesen mit möglichst kurzen oder verrückten Befehlen in einer Programmiersprache auszugeben)
  • Sie kann sogar sich selbst ausgeben (ist also ein nach dem Philosophen Willard van Orman Quine benanntes Quine).

Womit wir auch schon die ersten drei Befehle der Programmiersprache behandelt haben: H, 9 und Q. Zum Ausprobieren findet man im Internet sogar einen H9Q+-Interpreter und natürlich den objektorientierten Nachfolger, HQ9++, bei dem mit dem Befehl ++ eine perfekt gekapselte Instanz einer abgeleiteten Klasse erzeugt werden kann (perfekt gekapselt, weil es keinerlei Zugriff auf das erzeugte Objekt gibt). Was will man mehr? ()