Wierd Atari: Verrückter kann man nicht programmieren

Noch eine neue Programmiersprache und eine seltsame dazu.

Schweißnass sitzt der Programmierer vor seinem Programmcode. Nach mehreren Stunden intensiven programmierens ist er in jenem Stadium, in dem er die Pizza trinkt und die Cola ißt. Das Programm hat noch Bugs. Irgendwo wurde der Stern falsch gesetzt und das ganze Konstrukt bricht zusammen. Als nach der bewährten Try&Error-Routine sich der Erfolg endlich einstellt, erschüttert ein lauter Jubelschrei das ganze Haus. Der Nachbar ruft den örtlichen Pater an, um sich zu erkundigen, ob Teufelsaustreibungen noch durchgeführt werden und der Woodstock-Fan nebenan frohlockt: Joe Cocker ist ins Haus eingezogen!
Dabei ist doch bloß ein Programm geschaffen worden, das den Text "Hallo Welt" ausgibt. Ein Programm, für das man selbst als blutiger Anfänger selten länger als 10 Minuten bräuchte - wenn die verwendete Programmiersprache nicht "Wierd" hieße.

Wierd

Wierd gehört zu den sogenannten "tarpit"-Sprachen. Diese zeichnen sich durch eine extrem kleine Kommando-Anzahl aus. Die Sprache ist ein Produkt der Befunge-Mailingliste, wo darüber debattiert wurde, ob Befunge ein zu großes Sprachschwergewicht sei. Dies führte zu einem Streit, welche Sprache mit dem kleinsten Sprachumfang auskommt. Eine Mini-Ausgabe von Befunge gewann diesen Wettbewerb: "BeF***" mit sieben Befehlen.
Doch manche meinten, das schon der klassische Sprachbefehl der falsche Weg sei und schlugen eine visuelle Programmiersprache vor: die Anwendung der Geometrie um eine Reihe von Kommandos auszudrücken. Diese Sprache hat auf den ersten Blick nur ein einziges Kommando - und ist somit eine extreme Herausforderung für jeden Programmierer.
Wierd stammt von Chris Pessey [2], der das Konzept einer winkelorientierten Sprache in einen Interpreter gegossen hat. Das ganze Gebilde hat den Namen Wierd bekommen, eine Mischung aus "weird" (eng. seltsam, eigenartig) und "wired" (das Aussehen von Programmen dieser Sprache). Der Interpreter wurde in Ansi-C verpaßt und fiel somit dem Autor dieses Artikels in die Hände, der nach der Portierung des Taylor-Pilots Ausschau nach weiteren Programmiersprachen hielt [1].

Esoterische Programmiersprachen

Wer nicht gerade im Internet danach sucht, wird denken, das heute nur noch wenige Programmiersprachen verwendet werden: Assembler, Basic, C, Pascal. Tatsächlich kommen ständig neue Sprachen hinzu, die esoterischen sind eigentlich nutzlos und mehr als Scherz gedacht. Mittlerweile gibt es eine Menge solcher Sprachen (u.a. Fromage, dis, Malbolge, Sally ...), aber bis vor kurzem noch keine für den Atari.
Auf der anderen Seite gibt es Sprachen, die zwar ernst gemeint sind, deren Sprachkonzeption aber als furchtbar gilt. "Intercal" wird hier häufig genannt.

Wierd Atari

Die Atari-Version von Wierd ist ein TOS-Programm und benutzt daher nicht die Maus. Es wird ein Programm empfohlen, das die Ausgaben in ein GEM-Fenster lenken kann. Das Programm läuft unter allen TOS-Versionen und den diversen Aufsätzen.
Da Wierd über keinen eigenen Editor verfügt, müssen die Programme in einem externen Editor geschrieben werden. Syntax-Coloring ist nicht notwendig, da Wierd streng genommen nur einen Befehl kennt. Auch wenn Wierd aus dem Unix-Bereich kommt, besteht es nicht auf Unix-Zeilenenden.

Die Sprache

Wierd unterscheidet nur zwischen zwei Zeichen: einem Leerzeichen und etwas anderem. Eine Kette von nicht-Leerzeichen ergibt ein Wierd-Programm. Die Ausführung beginnt mit dem ersten Zeichen der Datei und geht dann weiter nach rechts unten. Dies geht solange weiter, bis ein Umdrehen erforderlich ist.
Der Interpreter nimmt aber immer den Weg des geringsten Widerstands und bevorzugt den Weg, der gerade gegangen wird. Ein Beispiel aus dem Handbuch:

*********
    *
     *
      *

Vollkommen isolierte Zeichen erzeugen einen Fehler:

****** *

Die Befehle, die ausgeführt werden, werden durch den Winkel bezeichnet:
0 Grad: keinen Befehl ausführen, im Programmtext weitergehen.
45 Grad: eine "1" wird auf dem Stapel abgelegt.
90 Grad: liefert den letzten Wert des Stapels. Ist der Wert Null, wird mit der Programmausführung normal weiter gemacht. Bei einem anderen Wert wird die Richtung umgedreht.
135 Grad: liefert den letzten Wert des Stapels. "Null" veranlasst den Interpreter die nächsten zwei Werte zu nehmen und diese als Koordinaten für den nächsten Wert zu gebrauchen. Der erste Wert beschreibt die X-Achse und der zweite die Y-Achse. Der ermittelte Wert wird auf dem Stapel abgelegt.
Ist der Wert jedoch nicht "Null", wird der Wert unterhalb der Koordinaten vom Stack genommen und an den Koordinaten abgelegt.
180 Grad: Eine Lücke überspringen, wenn möglich. Ansonsten wird das Programm beendet.
225 Grad: liefert den letzten Wert des Stapels. Bei "Null" wird ein Zeichen von der Eingabe gelesen und auf dem Stapel abgelegt. Ansonsten wird der letzte Stack-Wert als Zeichen ausgegeben - auf diese Weise wird auch lesbarer Text erzeugt.
270 Grad: Entspricht 90 Grad.
315 Grad: Der obere Wert des Stapels wird mit dem darunterliegenden subtrahiert. Beide Werte werden vom Stapel genommen und das Ergebnis wieder raufgeschoben.

Es stehen somit nur zwei Rechenarten zur Verfügung. Diese Befehle reichen für das Ausgeben von Texten und einfachen Rechenaufgaben. Um zu verdeutlichen, wie ein fertiges Programm aussehen kann, sehen Sie sich am besten Listing 1 an. Dieses Programm - das auch im Wierd-Archiv enthalten ist - gibt den kompletten Zeichensatz des STs aus. Dieses Programm läuft in einer Endlosschleife.

Schwierigkeit

Selbst das Beschreiben der Sprache verursacht schon einen Drehwurm. Es ist eine Herausforderung für jeden Programmierer und zudem eine prima Verschlüsselungsmethode, denn selbst mit der Sprachbeschreibung dauert die Analyse eines Wierd-Programms einige Zeit.
Wer erfolgreich ein Wierd-Programm geschrieben hat, möge es bitte an [3] schicken, damit mehr Beispiele im Programmarchiv mitgeliefert werden können.

Sourcecode

Basis zur Wierd ist der 14 KB große Sourcecode in ANSI-C. Die Atari-Version wurde um ausführlichere Fehlermeldungen in Deutsch und Englisch erweitert. Im Archiv sind auch sämtliche Texte und Programme von [2] enthalten.

Fazit

Wierd war erst der Anfang, weitere seltsame Sprachen werden folgen. Immerhin 70 User haben sich den Interpreter in 1 1/2 Wochen heruntergeladen. Atari-Besitzer können nun endlich wieder am Stammtisch mitreden, wenn es heißt: "Gibt esch Wierd auch für den Atari, hicks?!".

[1] http://www.mypenguin.de/prg/
[2] http://www.catseye.mb.ca/esoteric/wierd/index.html


Mia Jaap
Aus: ST-Computer 10 / 2001, Seite 28

Links

Copyright-Bestimmungen: siehe Über diese Seite