Errors: OUT OF DATA / Out of date

Kürzlich habe ich bei ebay „gefühlte 100.000 Programme“ auf Kassette für den Sinclair ZX Spectrum erstanden. Erfreulich war nicht nur der sehr gute Zustand der Bänder, sondern auch, dass deren Inhalt vollständig dokumentiert war. Mit im Paket lag dazu ein kleines, rotes Ringbuch, das den Katalog der Software enthielt … aber noch mehr! Auf einigen Seiten fanden sich mit Bleistift geschriebene Programmlistings und Hardware-Schemata. Der Schrift nach zu urteilen und der Tatsache, dass der „U880“ mehrfach Erwähnung findet, dürfte es sich beim Vorbesitzer wohl um ein Kind oder einen Jugendlichen der späten DDR gehandelt haben.

Der Grund, warum ich das erwähne, ist aber, dass die meisten dieser Blätter handgeschriebene BASIC-Programme enthalten. (Das erinnert mich an meine eigenen Anfänge 1982/3, in denen ich nur alle 2-3 Wochen einmal am Wochenende Zugriff auf einen TRS-80-Clone hatte und in der Zwischenzeit meine Programme dafür auf Papier entworfen habe.) Unter den Listings findet sich auch das Folgende:

Ein Programm, das auf keinem BASIC-Interpreter so funktionieren dürfte, wie der junge Autor es sich gedacht hat. Der Hintergrund dieses Programmierfehlers ist allerdings historisch interessant. Das 1962 am Dartmouth-College ursprünglich veröffentlichte BASIC war nicht interaktiv konzipiert. Das heißt: Man konnte keine Programme schreiben, die einem später beim Ablauf nach Eingaben fragten, welche dann durch das Programm verarbeitet wurden. Den Ausweg dafür boten die Befehle DATA und READ. Mit DATA ließen sich innerhalb des Programmcodes Daten in serieller Reihenfolge ablegen, die dann beim Ablauf des Programm mit READ wie von einem Stapel abgerufen und verarbeitet werden konnten.

Der Befehl INPUT kam erst in späteren Revisionen von BASIC hinzu und „interaktivierte“ die Programmiersprache durch eine Eingabeschnittstelle (Vgl. BASIC-Kapitel in Wexelblatt). Das obige Programm versucht nun quasi in den Zeilen 10 bis 40 den DATA-„Stack“ interaktiv mit INPUT-Eingaben von Zahlen zu füllen. In der Zeile „30 DATA Z“ glaubt der Autor, mit der Variable Z Daten in den „Daten-Speicher“ zu schreiben, obwohl DATA ja eben Daten im „Programm-Speicher“ ablegt. Es wird also nicht ein Wert durch die Variable Z in den Programmcode hinein geschrieben, sondern eben nur ein „Z“.

Das dürfte der Autor im zweiten Teil des Programms, indem er die zuvor eingegebenen Daten wieder auslesen und darstellen lassen wollte, schnell festgestellt haben. Es dürfte sich ein „OUT OF DATA“-Error ereignet haben, weil einfach keine 6 DATA-Werte vorhanden sind, sondern nur einer („DATA Z“). Die FOR-NEXT-Schleife bricht also nach dem ersten Durchlauf mit einem Fehler ab.

Erstaunlich finde ich, dass der Autor ohne Kenntnis der Entwicklungsgeschichte der Sprache hier intuitiv auf den Widerspruch gestoßen ist, dass es zwei ganz unterschiedliche Daten-Eingabe-Konzepte in BASIC gibt (ein passives und ein interaktives), die beide zugleich gar nicht nötig wären, wenn man das (modernere) interaktive Konzept zusammen mit der (von Beginn an vorhandenen) Möglichkeit, Variablen zu indizieren/dimensionieren nutzt (also im ersten Programmteil einfach Z(1) bis Z(6) mit Daten füllt. Aufgrund dieser Möglichkeit ist das DATA-READ-Konzept in moderneren BASIC-Varianten dann oft zu einer bloßen Möglichkeit „verkommen“, Maschinensprache(unter)programme innerhalb des BASIC-Programms abzulegen.

Übrigens: Schon seine Programme auf Papier zu entwerfen, um sie erst später in den Computer einzugeben, widerspricht der Philosophie von BASIC, das ja eben angetreten war, um den Programmierer aus der Lochkarten-Operator-Tyrannei zu befreien. Dennoch äußert sich BASIC-Mitentwickler Kurtz heute wohlwollend über solche Programmierer, die ihren Code nicht dauernd testen, sondern erst einmal fehlerfrei entwerfen – denn auch dabei sollte BASIC helfen. (Vgl. BASIC-Kapitel in Warden/Biancuzzi).

  • Richard L. Wexelblatt (ed.) History of Programming Languages. New York: Academic Press, 1981.
  • Federico Biancuzzi, Shane Warden: Visionäre der Programmierung: Die Sprachen und ihre Schöpfer. Köln u.a.: O’Reilly 2009.

Über Stefan Höltgen

siehe: http://about.me/hoeltgen
Dieser Beitrag wurde unter Computer, Programmiersprachen, Technikgeschichte/RetroTopie abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.