GOTO 1964

50 Jahre BASIC und kein Ende

Der folgende Beitrag ist vor 2021 erschienen. Unsere Redaktion hat seither ein neues Leitbild und redaktionelle Standards. Weitere Informationen finden Sie hier.

BASIC ist die Programmiersprache mit der vielfältigsten Vergangenheit. 1964 ursprünglich als Lehrsprache für Nicht-Informatiker am Dartmouth College (Hanover, New Hampshire, USA) von Thomas E. Kurtz und John G. Kemeny entwickelt, eroberte die Sprache zunächst die Mini- und dann die Mikrocomputerwelt. Heute wird BASIC in der Informatik gar nicht mehr und bei Programmierern kaum noch verwendet. Innerhalb der Retro-Szenen ist es jedoch beliebt wie eh und je. Und auch über seinen Einsatz im Unterricht sollte man nachzudenken.

10 READ A1,A2,A3,A4
15 LET D=A1*A4-A3*A2
20 IF D=0 THEN 65
30 READ B1, B2
37 LET X1=(B1*A4-B2*A2)/D
42 LET X2=(A1*B2-A3*B1)/D
55 PRINT X2,X2
60 GO TO 30
65 PRINT "NO UNIQUE SOLUTION"
70 DATA 1,2,4
80 DATA 2,-7,5
85 DATA 1,3,4,-7
90 END

Mit diesem Programm testeten die beiden Mathematiker John G. Kemeny und Thomas E. Kurtz zusammen mit einigen ihrer Studenten in der Nacht vom 30. April zum 1. Mai 1964 ihren fertig gestellten BASIC-Compiler. Der Compiler funktionierte, allerdings produzierte das Programm nach kurzer Zeit selbst einen Fehler ("NO DATA"). Selbst dies hätte Teil des Testes sein können, denn BASIC war für Programmierlernende entwickelt worden, die zwar Englisch aber keine Programmiersprache sprachen und auch ansonsten keinen oder kaum Kontakt mit Computer besaßen. Mitte der 1960er-Jahre war das nicht ungewöhnlich und es sollte BASIC sein, das mit dabei half, dies zu ändern.

Programmieren lernen

Kemeny und Kurtz hatten bis dahin schon einige Versuche gestartet, eine Lehrprogrammiersprache zu entwickeln, weil sie die existierenden Alternativen - vor allem Fortran, COBOL und ALGOL - nicht geeignet fanden, von Studierenden der "humanities" (Kunst und Geisteswissenschaften) erlernt zu werden: verwirrende Datentypen und kryptische Fehlerausgaben waren eine Hürde, die es zu überwinden galt. Ihr Weg führte sie über Mixups von Fortran und ALGOL, einem eigenen Assembler (DARSIMCO - Dartmouth Simplified Code) bis hin zur Hochsprache DOPE (Dartmouth Oversimplified Programming Experiment). Von diesen Versuchen ging einiges in BASIC ein - es sollte allerdings noch mehr können.

Thomas E. Kurtz (links) und John G. Kemeny (rechts). Bild: Computer History Museum)

Nämlich mit Zeilennummern strukturiert werden, damit Programmteile schneller aufgefunden und editiert werden können. (Und wo man schon einmal solche "Marken" hatte, konnte man diese doch eigentlich auch gleich als Sprungziele verwenden.) Von Anfang an sauber zu programmieren und dabei trotzdem den "Tipp-Problemen" der Nutzer entgegenzuwirken war ebenso ein Wunsch der Entwickler. So kam es also, dass BASIC nur einen Zahlentyp (Fließkommazahlen, von denen der Compiler bei Ganzzahligkeit automatisch das Komma und die Nachkommastellen abschnitt) kannte, nur wenige, englischsprachige Fehlermeldungen (von denen auch nie mehr als drei angezeigt wurden, um den Frust des Programmieranfängers nicht zu provozieren) ausgab, ausschließlich ein Kommando lange Zeilen zuließ und die Möglichkeit gab, Leerzeichen zwischen den Befehlen wegzulassen. Zu guter letzt sollte die Sprache nur so viele leicht verständliche Kommandos enthalten, dass man sie sich in wöchentlichen Programmierkursen merken konnte. So kam die Version 1 von Dartmouth-BASIC mit nur 15 Befehlen, die aus englischen Begriffen bestanden, "auf den Markt".

Dieser "Markt" war zunächst nur das Dartmouth College. Weil dort aber immer wieder wichtige Kongresse und Konferenzen der Computerwissenschaft stattfanden (man denke an das von John McCarthy organisierte Dartmouth Summer Research Project on Artificial Intelligence im Jahre 1956), stießen bald auch andere Informatiker und Programmierer auf BASIC. Die Sprache, die in Dartmouth zwischenzeitlich mehrere Versionssprünge hinter sich gelassen hatte und dabei "interaktiv" sowohl (ein INPUT-Befehl wurde ergänzt) als auch um verschiedene Funktionen für mathematische und String-Operationen bereichert wurde, war von Anfang an "Public Domain". So kam es, dass BASIC in der zweiten Hälfte der 1960er-Jahre seinen Weg in unterschiedliche Mainframe- und Minicomputer fand - allen voran waren es Hewlett Packard und DEC, die zusammen BASIC-Dialekte für die PDP-Rechner adaptierten und die Sprache dabei erweiterten und veränderten.

Bis zur Unkenntlichkeit und darüber hinaus

Hatten die strengen BASIC-Gebote (wie das oben erwähnte "Nur ein Kommando pro Zeile" oder das "obligatorische LET zur Variablen-Deklaration" und natürlich die Plattformunabhängigkeit von Hochsprachen) auf den Mehrplatz-Systemen am Dartmouth College noch unumwunden gegolten, wurden diese aufgeweicht, sobald die Sprache auf anderen Systemen adaptiert war. DEC führte eine Möglichkeit ein, mithilfe eines Sonderzeichens (auch ein "No go!" beim Dartmouth-BASIC) mehrere Befehle in eine Zeile zu pressen und ermöglichte es sogar mit spezifischen Befehlen und Funktionen Bytes in den Speicher zu schreiben und aus ihm herauszulesen. (Adieu Hardware-Unabhängigkeit!) Die Dämme brachen jedoch vollends, als BASIC ab 1975 auf die just neu entstandene Generation der Mikrocomputer portiert wurde.

Niemand geringeres als Bill Gates war es, der einen ersten BASIC-Dialekt für den populären Selbstbaucomputer Altair 8800 entwickelte - zunächst in einer 4, später in einer 8 Kilobyte großen Variante. Damit beendete er die (kurze) Zeit der binären Schalterprogrammierung dieses Rechners und katapultierte ihn in die Welt der symbolischen Programmiersprachen. (Dass Gates und seine beiden Kollegen damit die Firma "Micro-Soft" aus der Wiege hoben und zugleich für den ersten Fall von Software-Piraterie sorgten, sei hier am Rande erwähnt.) Das Microsoft-BASIC für den Altair 8800 brach noch weitere Konventionen um möglichst kompakten Code (für Computer mit nur wenigen Kilobyte RAM) zu ermöglichen und zugleich der Bastelleidenschaft der damaligen Hobbyisten entgegen zu kommen: OUT, POKE, WAIT, PEEK standen zur Ansprache der Hardware zur Verfügung. Einiges davon dürften sich Gates und seine Mitarbeiter vom BASIC der PDP-10 abgeguckt haben, auf der sie einen Intel-8080-Emulator schrieben, um mit diesem das Altair-BASIC zu implementieren.

Das 8-K-BASIC für den Altair 8800 von Micro-Soft auf Lochstreifen. Bild: Michael Holley (public domain )

Die ab Ende der 1970er-Jahre auf den Markt flutenden Mikrocomputer, die schon bald so erschwinglich wurden, dass sie als "Heimcomputer" Eingang in die Kinder- und Jugendzimmer fanden, wurden vor allem von Microsoft (ab 1977 ohne Bindestrich im Firmennamen) mit BASIC-Dialekten ausgestattet. Je nach Hardware-Möglichkeiten und -Beschränkungen variierten auch diese BASICs in ihren Befehls- und Funktionsumfängen. Manche Unternehmen, wie Commodore, konnten es sich leisten, den Microsoft-Ursprung der BASICs ihrer Heimcomputer zu verschweigen. Andere Unternehmen wie ATARI, Apple, Sinclair, Acorn u. a. entwickelten, um die Lizenzierung zu umgehen, eigene BASIC-Dialekte, so dass Ende der 1980er-Jahre eine schier babylonische Sprachverwirrung in der BASIC-Welt herrschte. Computerzeitschriften, die währwend der Hobby- und Homecomputer-Ära wie Pilze aus dem Boden schossen, veröffentlichten entweder Code für nur eine Plattform oder gleich mehrere Versionen eines Programms in verschiedenen BASIC-Dialekten. Bücher erschienen, die bei der Konvertierung zwischen den gängigsten Heimcomputern-Typen halfen, mit BASICODE versuchten Software-Entwickler sogar eine Art "Esperanto" für alle Heimcomputer zu lancieren: Ein BASIC, dessen Programme auf jedem Rechner mit BASICODE-Interpreter liefen.

(K)Ein Machtwort

BASIC war in den 80ern in aller Munde - zumindest bei Computernutzern. Manche Bücher über das Programmieren erwähnten in ihren Titeln schon gar nicht mehr, dass sie damit "Programmieren in BASIC" meinten. Kurtz und Kemeny, die ihr Dartmouth-BASIC konsequent nach der "reinen Lehre" weiterentwickelten, meldeten sich gelegentlich zu Wort (etwa 1987 mit einem umfangreichen Buch zum "Structured BASIC Programming", hielten sich aus der Mikrocomputer-Welt jedoch ansonsten heraus. Dadurch, dass sie keine Lizenzgeber waren, mussten sie sich auch keine Gedanken um Gedeih und Verderb ihrer Sprache auf anderen Systemen machen. Zumindest solange nicht, bis sich Didaktiker und Informatiker zu Wort meldeten und gegen BASIC allgemein zu Feld zogen.

Wegen Kassettenknappheit wurde BASICODE in der DDR auf Schallplatte vertrieben. Bild: Stefan Höltgen

Schon 1979 hatte man zum Beispiel an der Technischen Universität Berlin überlegt, ob BASIC, das sich in Schulen und Universitäten langsam als Lehrsprache zu etablieren drohte, wirklich die beste Möglichkeit sei, Computerprogrammierung zu erlernen. Anfang des Jahrzehnts hatte der Schweizer Niklaus Wirth mit Pascal eine schon fast zwanghaft strukturierte Programmiersprache entwickelt, die vollständig von der Hardware, auf der sie lief, abstrahierte. Genau das Gegenteil von BASIC mit seinen POKEs und GOTOs also. Die TU-Berlin prüfte aber nicht nur diese Alternative, sondern stampfte sogar eine eigene Lehrsprache (ELAN - Educational Language) aus dem Boden, die auf einem ebenso esoterischen Betriebssystem (EUMEL, einem frühen Vorläufer des heute noch bekannten Systems L2) lief. Bei der Auswertung der Untersuchung zur perfekten Lehrsprache entschied man sich nicht nur gegen Pascal und für ELAN, sondern hängte auch noch einen geharnischten Verriss zu BASIC an das Paper, in welchem man der Sprache - zu Recht? - "Problemferne und Maschinennähe" vorwarf.

"Structured BASIC Programming" - Ein Leitfaden zum Spaghettikochen. Bild: Stefan Höltgen

Auch von anderswo wurde BASIC zugesetzt: Der niederländische Informatiker Edsger W. Dijkstra (http://www.cs.utexas.edu/users/EWD/), bekannt für seine Fachpolemiken, veröffentlichte schon 1975 einen Rundumschlag gegen die meisten gängigen Programmiersprachen mit dem Titel "How do we tell truths that might hurt?". Darin widmete er BASIC einen kurzen Absatz: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." Dies war - zusammen mit Invektiven Dijkstras gegen das GOTO-Statement, das sich in so vielen Programmiersprachen fand und findet - der fachliche Todesstoß für BASIC und nötigte Kurtz und Kemeny 1985 schließlich, ein Buch mit dem Titel "Back to BASIC" zu publizieren, in welchem sie ihre Ideen noch einmal verteidigten und die "History, Corruption, and Future of the Language" (Untertitel des Buches) vorstellten.

Edsger W. Dijkstra - einer der leidenschaftlichsten BASIC-Kritiker. Bild: Hamilton Richards. Lizenz: CC-BY-SA-3.0

Don't lose my number!

BASIC war allerdings zu retten, denn es war ja gar nicht tot zu kriegen. Nach wie vor erschienen neue Computer mit der Sprache fest auf ihren ROM-Chips implementiert. Die Variantenzahl wuchs und wuchs und die Entwickler lernten schnell dazu. Der recht exotische Heimcomputer "Enterprise" erschien mit IS-BASIC, einer Sprache, die bereits objektorientiert programmierbar war und die BASICs der zur selben Zeit reüssierenden 16-Bit-Computer brachten gleich noch ganz andere und viel mehr Ideen mit in die Heimcomputerheime. Im selben Jahr (1985), in dem Phil Collins' Forderung "Don't lose my number" (auf seinem Album "No Jacket required") forderte publizierte Microsoft für den jüngst erschienenen "Amiga" ein BASIC, das erstmals ohne Zeilennummern daherkam und also strukturiert programmiert werden musste. GOTOs waren aber dennoch möglich: zu Labels (wie in Fortran).

Das Handbuch vom Amiga-BASIC (im Unterschied zu den 1970er-Jahren gab Commodore nun recht freizügig zu, dass ihr BASIC vom Microsoft stammt). Bild: www.ntrautanen.fi

Microsoft hatte zu dieser Zeit gerade damit begonnen, auf dem Feld einer anderen Software-Gattung Boden zu gewinnen: der Entwicklung von grafischen Betriebssystemen. Wurde schon mit jedem MS-DOS gern ein Microsoft-BASIC ausgeliefert, so war natürlich auch Windows-Usern das Programmieren in dieser Sprache möglich. Sukzessive hatte Microsoft seine BASICs für IBM-kompatible Mikrocomputer in den vergangenen Jahren erweitert und mit den aktuellsten Programmierphilosophien aufgehübscht. Anfang der 1990er kam dann "Visual BASIC" auf den Markt, das an der Beliebtheit von BASIC anschließen und den an Sprachen wie C und C++ verloren gegangenen Markt zurückerobern sollte. Und auch hier setzten sich nach und nach Strukturierungszwang, Objektorientierung und andere Aspekte moderner Programmierungparadigmen und -stile durch und schlugen sich in der Syntax von BASIC nieder.

Das Ende von BASIC

Letztlich war BASIC für den breiten Markt aber dennoch nicht zu retten. Selbst die Bemühungen seiner Erfinder, mit TrueBASIC den wahren und erweiterten Kern des Programmier-Lernkonzeptes am Leben zu halten, fruchteten nicht. Die Kompetenz, die sich Hobbyisten mit dieser Sprache in zweieinhalb Jahrzehnten erarbeitet hatten, schien für die Katz' zu sein. Allenfalls für den Betrieb des vergleichsweise teuren Einplatinen-Bastelcomputer BASIC Stamp (einem Vorläufer von Arduino und Co.), der 1992 erschienen war, war BASIC noch relevant. Ansonsten war die Sprache tot … und lebte wie alle Totgesagten sprichwörtlich länger und länger und länger.

Die BASIC-Stamp von Parallax. Bild: Parallax

Denn mit dem Ende der Heimcomputerära begann auch schon gleich ihre nostalgische Verklärung und - im Zuge der in den 1990ern schon früh einsetzenden "80s-Nostalgie-Welle" (erste Musiksampler zu dieser Dekade waren schon 1989 erschienen!) - auch ihre Wiederauferstehung als Retro-Computing. Das ab Mitte der 90er vormarschierende Internet leistete hierzu seinen Beitrag. Nicht nur konnten sich Computerafficionados nun weltweit in Newsgroups, Foren und Mailinglisten austauschen. Mit Plattformen wie Ebay (ab 1995) entstanden auch Alternativen zu den Flohmärkten, auf die alte Rechner bislang wanderten, wenn sie ausgedient hatten aber zu schade für die Mülltonne erschienen. Die Preise für "klassische Computer" wie den C64, Apple 2 oder TRS-80 begannen zu steigen, was als indirekter Indikator für ihre "Verkultung" interpretiert werden kann. (Den diesbezüglichen Höhepunkt stellen vom Standpunkt des Hardware-Bastlers einigermaßen "günstige" Architekturen wie der "Apple I" oder der "goldene C64" dar).

Mit dem Wiedereinzug der alten Computer in die Hobbyräume der Thirtysomethings kam auch das gute alte, zeilenbasierte, POKE-angereicherte und Doppelpunkt-versetzte BASIC wieder zurück ans Tages- bzw. Kellerlicht. Auch wenn die meisten Computernutzer dieser Gruppe die alten Rechner ihrer Spiele wegen wieder anschafften, erschienen doch merklich häufiger neue Programme für alte Computer - zumeist in Assembler entwickelt, zeitweise aber auch in BASIC. Die Tradition der Spielentwicklung und -veröffentlichung alter Tage wurde wieder aufgenommen, es fanden "One-Liner"-Wettbewerbe statt und in regelmäßigen Abständen fanden sich Interviews mit BASIC-Programmierern, Interpreter-Entwicklern und sogar mit Thomas E. Kurtz (sein Kollege John G. Kemeny war 1992 gestorben). Am liebsten immer dann, wenn die Sprache oder einer ihrer Dialekte ein rundes Jubiläum feierte.

Still Beginner's All-purpose Symbolic Instruction Code

Heute wird BASIC von Teilen der Retrocomputer-Gemeinde wieder hochgehalten. Die Dialekte werden im Rahmen von Hobbyprojekte wiederentdeckt und genutzt. Sie werden nach unentdeckten Fehlern und ungeahnten Möglichkeiten durchforstet. Es erscheinen sogar alte BASIC-Dialekte für neue Plattformen, neue BASIC-Dialekte und Sprachen, die auf BASIC basieren oder seine Philosophie übernehmen. Die Unstrukturiertheit wird nicht länger bloß als Obfuskation, die Hardwarenähe nicht mehr nur als wirtschaftliche Proprietärität gewertet - sondern stellt eine kreative Grenze und Herausforderung dar. "Pac-Man" und andere Arcade-Klassiker in einer einzigen BASIC-Zeile nachprogrammieren? Kein Problem, wenn man sich mit den Idiosynkrasien der ZIelplattform auskennt.

BASIC ist auch heute noch in aller Munde - zumindest in den Retrocomputer-Szenen. Bild: Stefan Höltgen

Und selbst in die Programmierlehre hat BASIC zurück gefunden, nicht trotzdem, sondern weil es nicht dazu geeignet ist, sauber programmierende Informatiker auszubilden. Seine Hardwarenähe ermöglicht es im Zeitalter verklebter und verschweißter, auf jeden Fall aber überkomplizierter Plattformen (vom Smartphone über die 4th-Generation-Spielkonsole bis hin zum iMac) wieder Erkenntnisse über die softwaregesteuerte Funktionsweise von Computern zu Tage zu fördern. Die Einfachheit eines langsamen BASIC-Interpreters, allenfalls beschleunigt im Rahmen einer Emulation der alten Plattform auf neuester Hardware) macht den Programmablauf nachvollzieh- und (mit den Befehlen TRON/TROFF) sogar sichtbar.

Und damit dies nicht zum bloßen "Oversimplified Programming Experiment" gerät, lassen sich in der BASIC-Lehre, wie sich am Vorangegangenen zeigt, auch trefflich Kapitel aus der Geschichte des Computers und seiner Programmiersprachen vermitteln. Man hält sich als BASIC-Benutzer heute in der Geschichte selbst auf und aktualisiert sie durch die Nutzung dieser Sprache zugleich. Vor allem das ist retro! Und ohne BASIC wäre dies - wie auch manche andere individualhistorische Randnotiz der eigenen Computerbiografie - um so vieles ärmer.

Auf die nächsten 50 Jahre also!

Stefan Höltgen ist Chefredakteur des RETRO-Magazins (von welchem im Dezember vergangenen und April diesen Jahres zwei BASIC-Ausgaben erschienen sind) und lehrt im Rahmen seines Forschungsprojekts zur Archäologie des frühen Mikrocomputers und seiner Programmierung) Programmieren für Medienwissenschaftler - in Assembler und natürlich BASIC.