Ich habe mir heute mal vorgenommen, die Geschichte eines Teils der frühen Computer aufzurollen, das in vielen Geräten verbaut wurde, bei den Tests damals enorm wichtig war und das heute auch im Zeichen von Reto Computing fast vergessen ist – der obligate BASIC Interpreter.
Wer zuerst kommt, setzt den Standard
Eng verknüpft mit BASIC ist die Geschichte von Micro-soft (den Bindestrich haben sie erst später gestrichen) deren erstes Produkt das Altair BASIC war. Als im Januar 1975 der Altair 8800 von der Zeitschrift „Popular Electronics“ angekündigt wird sehen Paul Allen und Bill Gates dies als die Chance an, ihren Traum umzusetzen. Sie rufen den Hersteller MITS an und bieten ihm an BASIC zu programmieren, das MITS dann mit ihrem Rechner verkaufen könnte. Sie waren wohl nicht die einzigen, aber die Einzigen, die es schließlich auch schafften. Da der Altair der erste Microcomputer ist, fällt damit auch eine Vorentscheidung, nämlich welche Programmiersprache auf diesen Rechnern laufen soll. Warum hat sich Bill Gates für BASIC interessiert? Nun ich denke, es waren zwei Gründe. Zum einen ist BASIC eine Programmiersprache, die sehr kompakt ist. Der Altair kam in der Basisausführung mit nur 256 Byte RAM. BASIC benötigte mindestens eine 4 KByte Speichererweiterung für das Minimalbasic und 8 KByte für das normale BASIC, das auch mit Fließkommazahlen rechnen konnte und mehr Befehle hatte. Verkauft wurden die Speichererweiterungen auch im Bundle mit BASIC und einem ziemlichen Rabatt – 60 Dollar für BASIC, das sonst einzeln 175 Dollar kostete. Das Zweite war das BASIC als Lehrsprache konzipiert wurde. Die Sprache ist ziemlich einfach, die Einstiegshürden für jemand der von Computern keine Ahnung hat, sind relativ gering. Man muss eigentlich nur wissen das BASIC in Zeilen organisiert ist und es nur drei Typen von Variablen gibt, die man mit den Sodnerzeichen %,! und § kennzeichnet. Bei Pascal ist mit den vielen Typen, dem Blockkonzept und dem Konzept von Prozeduren und Funktionen mit Parametern, Rückgabewert und lokalen Variablen die Einstiegshürde erheblich größer, bei vielen anderen Sprachen auch. Hinsichtlich des Speicherplatzverbrauchs wäre Foth noch eine Alternative gewesen. Allerdings ist bei Forth die Einstiegshürde deutlich größer, man muss sich das Konzept des Stapels und der umgekehrten polnischen Notation für mathematische Ausdrücke aneignen, beides Kernelemente von Forth. Forth war dann auch noch in den Achtzigern populär und es gab sogar einen Computer, den Jupiter Ace, der Forth anstatt BASIC im ROM hatte. BASIC war aber populärer, auf Minicomputern verbreitet, und schon damals programmierte man damit Spiele. Der erste Bestseller unter den Computerbüchern war „101 BASIC Computer Games“ aus dem Jahre 1973 (die Spiele waren natürlich alle textbasiert und damals tippte man wirklich Listings aus Zeitschriften oder Büchern ab).,
Damit war ein Standard gesetzt und wer einen BASIC Interpreter brauchte, wandte sich an Microsoft. Der Version für 8080 folgten weitere für andere Prozessoren. „Microsoft-BASIC“ wurde sogar zu einem Standard. Nicht unbedingt für Komfort oder Geschwindigkeit, als vielmehr dafür, dass Programme leicht portiert werden konnten. Denn obwohl BASIC standardisiert war, war es so, das viele Hersteller ihr eigenes Süppchen kochten. Klar war das im Standard Befehle fehlten die Grafik oder Sound betrafen, aber auch die Standardausgabemöglichkeiten in Textform waren bescheiden. Diese wurden mit jeweils eigenen Befehlen erweitert. Eine Funktion zum Abfragen eines einzelnen Buchstabens konnte inkey, key$ oder readkey heißen. Aber auch die Syntax von Standardbefehlen war dehnbar. Mal heiß es GOTO, mal GO TO. Einige Dialekte verlangten ein LET für eine Variablenzuweisung andere nicht. Daneben gab es noch zahlreiche Details in der Implementierung z.B., wie viele Zeichen eine Variable umfassen dürfte (bei manchen Dialekten nur zwei). So gab es in Zeitschriften ganze Listen welches Kommando auf welchen Rechnern verfügbar war und wie es dort hieß oder was es machte.
Ready
Die Blütezeit von BASIC begann mit der zweiten Generation von Minicomputern. Die erste Generation wie der Altair war nicht viel mehr als die CPU mit etwas RAM. Alles andere musste man dazukaufen, von der Tastatur über einen Lochkartenleser bis hin zu einer Karte um auf dem Monitor überhaupt etwas darstellen zu können – die Standardein/-ausgabe beim Altair erfolgte mit einem Fernschreiber. Ab 1977 erschienen Rechner, die standardmäßig einen Fernseher oder Monitoranschluss hatten, eine Tastatur und die auf Kassette speichern konnten wie der Apple II, Tandy TRS 80 oder Commodore Pet. Wenig später kamen noch die Diskettenlaufwerke dazu und man hatte eine Kombination, die für über ein Jahrzehnt Bestand hatte. Alle diese Rechner hatten nun einen BASIC-Interpreter im ROM, damit war er direkt nach dem Einschalten verfügbar und begrüßte einen mit einem „Ready“. Warum BASIC? Weil BASIC zugleich das Betriebssystem war und das Betriebssystem war wegen der Zeilenorientierung von BASIC ganz einfach. Da eine Zeile eine Einheit ist, musste das Betriebssystem nur eine Zeile editieren können. Es war kein Bildschirmeditor nötig, der ja sonst schon fast eine Textverarbeitung ersetzt hätte. Auch die gesamte Ein-/Ausgabe geschah durch BASIC Kommandos sei es zum Drucker (LPRINT) oder Kassettenrekorder (SAVE/LOAD). Damit sparte man sich das Betriebssystem ein.
Zeitgleich begann sich eine zweite Linie zu etablieren, bei denen die Geräte schon mit Floppys ausgeliefert wurden und dann auf einer Diskette das Betriebssystem, damals vor allem CP/M untergebracht war. Das ROM enthielt dann nur die Routinen um die Hardware anzusprechen und ein Bootprogramm, das nach dem Einschalten den ersten Sektor der Diskette lass und das dort befindliche Programm ausführte, das dann das Betriebssystem lud. Diese Systeme hatten kein BASIC, doch sie konnten es auch laufen lassen, wenn man einen, BASIC Interpreter als Programm in den Arbeitsspeicher lud. Einige Anbieter wie Digital Research nutzen dies und brachten ein BASIC heraus, das ganz auf Zeilennummern verzichtete. Neu ist das nicht, das gab es schon bei den Minicomputern.
Ich würde sagen die folgenden Jahre waren die Hochzeit von BASIC. De Faktor konnte man mit diesen „Heimcomputern“, so hießen sie damals, nicht viel mehr machen als in BASIC programmieren. Für die Programme reichte auch ein Kassettenrekorder als Medium aus. Die Rechner hatten wenig RAM und um dieses einzusparen, waren sie meist auch nicht grafikfähig (in dem Sinne, dass man beliebige Grafiken und keine Blockzeichengrafik erstellen konnte). Eine Ausnahme in der Grafikfähigkeit war der Apple II, der aber auch preislich eher bei den PCs lag, mit denen man arbeitete.
Zocken statt programmieren
Meiner Ansicht nach wendete sich das ab 1982/83. Nach wie vor – und das noch für weitere Jahre – wurden die Rechner mit einem BASIC Interpreter ausgeliefert. Das ROM wurde sogar immer größer, es kamen immer mehr Befehle hinzu. Man blieb aber bei dem System mit Zeilennummern. Ab 1982 tauchten aber die ersten Geräte auf die 32 KByte oder mehr Speicher hatten und nun konnte man einen größeren Bereich davon nur für die Bildschirmdarstellung opfern. Es begann die Ära der grafikfähigen Heimcomputer. Die konnte man zwar auch in BASIC programmieren. Doch bald kauften die meisten sie wegen etwas anderes – Spielen. Die Rechner hatten eine höhere Leistung als die damals aktuellen Videospielkonsolen, noch dazu mehr Speicher. Es erschienen immer mehr Speile in immer besserer Qualität und diese waren – ohne dass man Lizenzen an Atari & Co zahlen musste und mit billigen Kompaktkassetten als Medium anstatt ROM billiger als deren Spiele. Es kam sogar zum Video Game Crash der Atari an den Rand der Insolvenz brachte. Viele Jugendliche – die ja technikaffiner als Erwachsene sind und mehr spielen, leierten ihren Eltern die Kohle für einen Computer aus dem Portemonnaie. Azur dem Rechner wurde dann gezockt und auf dem Schulhof Spiele getauscht. Der BASIC-Interpreter mag noch da gewesen sein., sein Nutzen beschränkte sich aber darauf, ein Spiel von Kassette zu laden. Das dies nicht aus der Luft gegriffen ist sieht man bei vielen Rechnern dieser Zeit am Missverhältnis der verkauften Rechner und Floppies, die man, wenn man wirklich ernsthaft programmierte, brauchte – schließlich müssen ja auch Daten verarbeitet und dann geladen oder gespeichert werden. Beim Sinclair Spectrum wurden nur 15 % der Geräte mit Floppys verkauft.
Daneben sanken die Preise der Rechner, die man für „echte“ Anwendungen brauchte wie CP/M Rechner oder später IBM Kompatible weiter. Dort konnte man mit mehr Speicher und einem echten Betriebssystem dann aber jede Programmiersprache lernen und war nicht auf BASIC festgelegt.
Ab Mitte der Achtziger Jahre kamen dann die ersten 16 Bit Heimcomputer auf den Markt der Sinclair QL, Atari ST und Amiga. Sie leiteten über in die heutige Ära. Sie hatten nun eine grafische Oberfläche und waren mehr mit einem PC vergleichbar. Auf ihnen arbeitete man kreativ (vor allem auf dem Amiga) oder schrieb Texte. BASIC Interpreter waren nicht mehr an Bord oder mussten von Diskette geladen werden. Die 8 Bit Rechner mit BASIC wurden noch lange produziert – C64, Spectrum und die CPC-Serie bis in die frühen Neunziger, aber sie waren jetzt eben die Einstiegsspielkonsolen.
END
Bei den „echten“ PC, mit einem von der Diskette geladenen Betriebssystem, hat sich BASIC nie so durchsetzen können. Zuerst mal waren die PCs teurer. Wer einen solchen Computer kaufte, wollte ihn ernsthaft nutzen, er war teuer genug. Dann ist man aber auch eher bereit gleich eine richtige Programmiersprache zu lernen, mit mehr Möglichkeiten und weniger Fehlermöglichkeiten wie Pascal oder C. Zum anderen gab es auch für diese Rechner lange Zeit nur BASIC Interpreter. Neben dem Geschwindigkeitsnachteil – ein interpretiertes Programm ist immer langsamer als ein Kompiliertes – musste man so den Quellcode mit ausliefern, ein No-Go für professionelle Softwarentwicklung. Erst relativ spät erschienen BASIC Compiler, die dann auch die Hauptnachteile von BASIC beseitigten, wie die unübersichtliche Programmstruktur mit GOTO / GOSUB, die fehlende Überprüfung nicht verwendeter Variablen (meist Tippfehler) und das Fehlen von lokalen Variablen, Parametern, Funktionen und bis auf die For Schleife die meisten Kontrollstrukturen. Bis dahin hatten sich die meisten, die ernsthaft programmieren wollten, aber anderen Sprachen zugewandt.
Kenemy und Kurtz, die Erfinder von BASIC waren übrigens sehr unglücklich über BASIC und vertraten in Interviews die Ansicht, das Microsoft mit ihrem Interpreter der als Standard erhoben wurde, den Ruf von BASIC nachhaltig geschädigt hatte. Sie gründeten 1982 die Firma TrueBASIC und brachten 1983 auch einen gleichnamiges BASIC heraus, das sich völlig von der Zeilenstruktur löste, wie auch zahlreiche Interpreter der 16 Bit Ära wie GFA BASIC oder Superbasic. Aber das war eben eine Anwendung für den PC und sie änderte nichts an der Praxis das Heimcomputer nach wie vor mit einem zeilenorientierten BASIC ausgeliefert wurden. Einen anderen Weg ging Gary Kildall der ebenfalls BASIC für völlig ungeeignet hielt um damit programmieren zu lernen. Er schuf eine auf CP/M Rechnern einsetzbare Version der Programmiersprache Logo die für Kinder gedacht ist. Sie bietet zum einen schnelle Erfolge durch die „Turtle Graphic“ zum anderen ist Logo eine durchaus anspruchsvolle Sprache mit Funktionen und Rekursion als prägendes Stilmittel. Beide Ansätze konnten sich aber nicht durchsetzen.
IF BASIC<>Zeilenorientiert then
Ich habe mir Gedanken gemacht, wie die Story wohl weitergegangen wäre, wenn man ein solches BASIC in ein ROM in einen der Heimcomputer mit 32 oder mehr RAM gepackt hätte. Turbo Pascal als Pascal Compiler mit mehr Fähigkeiten als BASIC passt in 32 KByte inklusive Bildschirmeditor. Ein nicht zeilenorientiertes BASIC ist fast zwangsläufig auch ein kompiliertes. Damit verbindet man die Einfachheit von BASIC mit den Möglichkeiten anderer prozeduraler Programmiersprachen, wie man sie für größere Programme benötigt. Zudem ist so der umstieg auf diese Sprachen wie Pascal, Algol oder C einfacher. Dann ergibt sich aber ein Problem: da der Speicher der Rechner immer noch klein war, wird man nicht gleichzeitig Quellcode und Programm im Speicher haben, sondern wird wie bei anderen Compilern ein Binärfile erzeugen, das man abspeichern muss. Damit benötigt ein solches System ein Floppy. Die hebt den Preis für eine Einstiegskonfiguration aber auf das doppelte an. So gab es das, auch erst als die erwähnten 16 Bit Heimcomputer erschienen, die ohne Massenspeicher nicht arbeiten konnten. Daneben – und das schrieb ich ja – wollten wohl die meisten Käufer gar keinen Heimcomputer, sondern eine Spielkonsole. Da ist es dann Wurst, welche Fähigkeiten der BASIC-Interpreter hat, man muss nur mal die Kommentare zu meinem C64 Artikel von C64 Fans lesen und man ahnt das kaum einer von ihnen auf dem Rechner programmiert hat. So denke ich hätte sich wohl nichts geändert.