- GW-Basic
-
GW-Basic Entwickler: Microsoft Corporation Aktuelle Version: 3.23
(1988)Betriebssystem: MS-DOS Kategorie: BASIC-Interpreter und Entwicklungsumgebung Deutschsprachig: Nein GW-Basic war zwischen 1983 und 1991 eine BASIC-Version der Firma Microsoft für die ersten IBM-kompatiblen PC. Sie war der Vorläufer von QBasic, bzw. QuickBasic.
Inhaltsverzeichnis
Geschichte
BASIC war die erste Programmiersprache für den 1981 erschienenen IBM-PC. Der BASICA-Interpreter von Microsoft war exklusiv für IBM lizenziert und befand sich im ROM. Als später andere Firmen PC-Klone herstellten, verkaufte Microsoft GW-BASIC auf Diskette. GW-BASIC ist eine wesentlich erweiterte zum BASICA kompatible BASIC-Version. Woher der Name kommt, bleibt im Dunkeln. Microsoft selbst behauptet, es komme von "Ghee Wiz!" (zu deutsch so ähnlich wie "Potz Blitz!"). Die Initialen "GW" könnten nach Greg Whitten, einem frühen Angestellten von Microsoft, der für die Standards bei den Microsoft Basic Compilern zuständig war, benannt sein. Andere vermuten aber stark, dass der Name GW-Basic nicht zufällig die Initialen des Microsoft-Gründers, BASIC-Förderers und -Fans William "Bill" Gates enthält, der einen Vorläufer von GW-Basic noch eigenhändig programmiert hatte. Eine weitere Erklärung geht davon aus, dass es sich bei den Initialen GW um die Bezeichnung für "Graphics Workshop" handelt, da GW-BASIC neue Befehle für Zeichen- und Grafikroutinen mitbrachte (CIRCLE, COLOR, DRAW, PAINT, WINDOW).
Für die damaligen Verhältnisse war es ziemlich umfangreich (ca. 60K), bestand aber lediglich aus einer exe-Datei. Es musste noch mit Zeilennummern programmiert werden, war auf die Adressierung von 64K-RAM beschränkt, konnte aber alle aktuellen Standard-Grafikkarten (bis EGA) ansteuern. Die letzte erschienene Version ist die 3.23.
Schon bald begann Microsoft, GW-BASIC mit jeder Kopie von MS-DOS mitzuliefern. Unter anderem durch diese allgemeine Verfügbarkeit ohne weitere Anschaffungskosten spielte es bis Mitte der 80er-Jahre eine nicht unwichtige Rolle in kleinen Unternehmen, da viel Betriebssoftware von angestellten Programmierern in GW-BASIC geschrieben wurde - bis hin zu "ausgewachsenen" Datenbanksystemen, ähnlich, wie heute kleinere Applikationen in Visual Basic geschrieben werden. Ab 1985 wurde es in seiner Bedeutung allerdings zunehmend von Turbo Pascal der Firma Borland verdrängt.
Aufbau
GW-BASIC hat wie das original BASIC aus dem Dartmouth College eine kommandobasierte Entwicklungsumgebung. Alle Programmzeilen müssen mit Zeilennummern beginnen. Eingaben ohne Zeilennummer werden direkt ausgeführt. Außer einigen Befehlen die mit Funktionstasten ausgelöst werden, ist die Benutzerschnittstelle völlig kommandobasiert. Dateien werden normalerweise in einem komprimiertem GW-BASIC Binärformat, bei dem Befehle mit Bytes verschlüsselt werden, gespeichert. Es gibt aber auch die Möglichkeit Programme im ASCII Format zu speichern. In der GW-BASIC IDE gibt es die Befehle
RUN,LOAD,SAVE,LIST,SYSTEM
, wobeiSYSTEM
zur Rückkehr ins Betriebssystem verwendet wird. Obwohl alle diese Befehle auch als Anweisungen in einem Programm verwendet werden können, wird dies mit Ausnahme vonSYSTEM
nur selten gemacht.In GW-BASIC gibt es wenig Unterstützung für strukturiertes Programmieren. Deshalb liegt es in der Verantwortung der Programmierer für eine gute Programmstruktur zu sorgen. Alle bedingten Anweisungen wie IF/THEN/ELSE müssen in einer Zeile geschrieben werden. WHILE/WEND Anweisungen können über mehrere Programmzeilen gehen. Definitionen von Funktionen müssen in eine einzige Zeile passen. Dazu dient die DEF FNf(x)=<Funktion von x> Anweisung (z.B.: DEF FNLOG(basis,nummer)=LOG(nummer)/LOG(basis)). Der Typ einer Variablen kann meist am letzten Zeichen des Namens erkannt werden: A$ ist eine Zeichenkette (string), A% ist eine ganze Zahl (integer), usw. Durch DEFINT, DEFSTR, usw. Anweisungen kann der Typ einer Variablen abhängig vom ersten Zeichen des Variablennamens zugeordnet werden. Der Standardtyp von nicht deklarierten Variablen, die keinen Typ durch solche Anweisungen erhalten haben, ist eine einfach genaue Gleitkommazahl.
Weil viele GW-BASIC Programmierer keine Programmierausbildung hatten, sahen sie nicht die Notwendigkeit einer Strukturierung. Deshalb wurden
GOTOs
nicht als Ersatz für fehlende Kontrollstrukturen, sondern zahlreich und in undisziplinierter Weise verwendet. Siehe unter Spaghetticode.Möglichkeiten
GW-BASIC konnte mit den damaligen Joysticks und Lichtgriffeln umgehen, jedoch nicht mit einer Maus. (Es ist zwar möglich, eine Maus als emulierten Lichtgriffel zu betreiben, jedoch ist die Zuverlässigkeit der Maus dabei schlecht.) GW-BASIC kann Dateien, LPT Ports und COM Ports lesen und schreiben. Mit der
PLAY
Anweisung kann einfache Musik gespielt werden, wobei die Noten als Zeichenkette eingegeben werden (z.B.PLAY "edcdeee2dfedc4"
). Ein Zugriff auf niedrigerer Ebene ist mit derSOUND
Anweisung möglich. Dabei wird die Frequenz in Hertz und die Länge in 'clock ticks' für den Systemlautsprecher angegeben.Grenzen
Neben der Tatsache, dass die Ansteuerung einer Maus nur über Umwege möglich war, bestand die größte Hürde bei der Verwendung von GW-Basic darin, dass die Programmgröße auf 64 KB begrenzt war. Das völlige Fehlen strukturierter Programmierung macht umfangreichere Programme sehr schnell unwartbar, und daher war diese Sprache für größere Projekte ungeeignet.
Nachfolger
Der Platz von GW-BASIC in der MS-DOS Distribution wurde später von QBasic, einer abgemagerten Version des getrennt verkauften QuickBasic, übernommen.
Weblinks
- http://www.antonis.de/qbebooks/index.htm#gwbasman GW-BASIC Manual als E-Book
- http://www.geocities.com/KindlyRat/GWBASIC.html GW-BASIC, Programm und Tutorials
Wikimedia Foundation.