Das Linux Tool dieser Woche ist bwBASIC, ein Interpreter für die Programmiersprache BASIC (Beginner’s All-purpose Symbolic Instruction Code). BASIC zählt zu den ältesten Computer-Programmiersprachen, es gibt sie seit 1964, also seit mehr als 45 Jahren. Seine Popularität in den späten 70er und 80er Jahren verdankt diese Sprache nicht nur ihrer einfachen Erlernbarkeit, sondern auch (und vor allem) dem Aufkommen der Homecomputer zu Beginn der 80er Jahre. Viele Computer-Begeisterte (zu denen auch der Verfasser gehört), leisteten sich damals einen Commodore VC20, C64 oder einen Texas TI 994A. Alle diese Rechner teilten einige wichtige Eigenschaften:
Commodore 64 (Quelle: Anders/Wikipedia)
Sie verfügten aus heutiger Sicht über sehr wenig Ressourcen, zur Grundausstattung gehörten meist weniger als 64 KB RAM, ein 8-Bit Mikroprozessor und ein Bandlaufwerk, auf dem die Programme gespeichert werden konnten. Erst etwas später folgten die deutlich schnelleren 5.25 Floppy Disks. Abgerundet wurde die Ausstattung durch Farbgrafik und einen mehrstimmigen Soundchip.
Das Betriebssystem passte auf einen 64 Kilobyte ROM Chip, war in Assembler geschrieben und enthielt nebst den elementaren Ein-/Ausgabe Routinen einen BASIC Interpreter. Nach dem Einschalten konnte also sofort mit dem Laden oder Abtippen von BASIC Anweisungen begonnen werden. Für BASIC-Programme standen meist zwischen 16 und 64 Kilobyte RAM zur Verfügung. Wem das nicht genügte, oder wem BASIC zu langsam wurde, der wich auf Assembler aus (direktes Programmieren des Microprozessors). Assembler Anweisungen konnten mit einem sogenannten Maschinenmonitor direkt in den Speicher des Computers geschrieben und dort ausgeführt werden!
Homcomputer der damaligen Zeit wurden zum Spielen benutzt, das war nicht anders als heute. Sie waren aber auch faszinierende Werzeuge zu Lernen und kreativ werden. Die Homecomputer waren ja die ersten programmierbaren Computer überhaupt, die zu einem erschwinglichen Preis angeboten wurden und sich auch für den Heimgebrauch eigneten, da sie am Farbfernseher angeschlossen werden konnten. Mit einen C64 oder ZX Sinclair wurde es erstmals möglich, zuhause im eigenen Wohnzimmer autodidaktisch eine Programmiersprache zu erlernen. Und eigene Software zu entwickeln.
Gewiss, mit weniger als 64 KB RAM und einem langsamen 8-Bit Prozessor waren den Möglichkeiten enge Grenzen gesetzt. Sobald ein Programm eine gewisse Komplexität erreichte, wurden die Ressourcen knapp. Aber genau darin lag ja auch der Reiz der Sache; die Herausforderung, eine gestellte Aufgabe trotz der einengenden Ausstattung lösen zu können. Das Ergebnis davon wer eine verblüffende Kreativität, die von den Programmieren entwickelt wurde. Durch immer neue Techniken, in Verbindung mit selbstgeschriebenen Assemblerteilen und direktem Zugriff auf die Hardwarefunktionen, wurde plötzlich möglich, was kurz zuvor noch unrealisierbar galt. Auf dem C64 etwa hielt sich lange das Dogma, dass eine grafische Benutzeroferfläche wie GEM oder Windows nicht machbar sei. Bis eine Firma Berkeley Softworks mit GEOS das Gegenteil bewies.
Zurück aber zu BASIC. Zur damaligen Zeit war BASIC eine recht schlichte Sprache, die kaum mehr als 50 Sprachbefehle (Statements) kannte. Ausserdem mussten die einzelnen Anweisungen mit Zeilennummern durchnummeriert werden. Das konnte zu einer mühseligen Geduldsprobe werden, sobald das Programm wuchs und modifiziert werden sollte. Blockanweisungen, so wie sie jede moderne Sprache kennt, gab es noch nicht. Und auch keine Funktionen, Prozeduren, Module oder Objekte. Kurz: strukturiertes oder gar objektorientiertes Programmieren war nicht möglich. Dies führte dazu, dass BASIC schon bald einen ziemlich schlechten Ruf bekam, BASIC-Programme wurden verächtlich Spaghetti-Code genannt und der Ruf nach strukturierten Sprachen, wie Pascal oder C wurden laut.
Damit stellt sich natürlich die Frage: warum ist ein BASIC-Interpreter das Linux Tool der Woche? Ganz einfach: weil es einen spannenden Blick in die Anfänge der Heimcomputer und PC’s ermöglicht. Und weil viele alte Programmierer mit BASIC gerne die zuvor erwähnte Tugend verbinden: limitierte Systemressourcen nicht als gegebenen Grenzen zu sehen, sondern als Herausforderung, einen Weg zu finden, um diese zu überwinden.
bwBASIC gehört zum Lieferumfang der meisten Linux Distributionen, wer es in der Paketverwaltung nicht findet, kann es direkt auf der Homepage herunterladen. In bezug auf den Funktionsumfang ist bwBASIC an GWBASIC angelehnt, an den Interpreter also, der während fast 20 Jahren mit MS-DOS mitgeliefert wurde. Ein einfaches BASIC-Programm, das mit bwBASIC ausgeführt werden kann, mag so aussehen:
Es könnte als Lernbeispiel der ersten Stunde dienen, da er bereits alle drei elementaren Teile eines Programmes erfüllt: die Eingabe von Daten (INPUT), die Verarbeitung (prüfen, ob Eingabe leer ist) und die davon abhängige Ausgabe (PRINT). Das Fehlen von Zeilennummern zeigt, dass bwBASIC diese zwar erlaubt, aber nicht erfordert. Dies macht die Sache etwas leichter und erlaubt in diesem Fall bereits Blockanweisungen.