Wikipedia · einfach zusammengefasst · Stand
BASIC
BASIC ist eine imperative Programmiersprache. Sie wurde 1964 von John G. Kemeny, Thomas E. Kurtz und möglicherweise Mary Kenneth Keller am Dartmouth College …
Inhalt5 Abschnitte
Grundidee und Bedeutung
BASIC ist eine imperative Programmiersprache: Programme bestehen aus Anweisungen, die nacheinander ausgeführt werden und dabei Werte verändern oder Ein- und Ausgaben steuern. Sie wurde 1964 am Dartmouth College als bildungsorientierte, leicht erlernbare Sprache entwickelt. Als Entwickler nennt der Artikel John G. Kemeny und Thomas E. Kurtz; bei Mary Kenneth Keller ist die Zuschreibung im Einleitungsteil als möglich bezeichnet, während sie im Geschichtsteil als Mitentwicklerin genannt wird.
BASIC steht für „Beginners’ All-purpose Symbolic Instruction Code“, also ungefähr „symbolische Allzweck-Programmiersprache für Anfänger“. Das Ziel war eine einfache Sprache für Einsteiger. Frühe BASIC-Formen verwendeten Zeilennummern und Sprunganweisungen wie GOTO und besaßen noch nicht die Merkmale strukturierter Programmierung. Spätere Dialekte entwickelten sich sehr unterschiedlich; einige enthalten Eigenschaften höherer Programmiersprachen, etwa Objektorientierung.
Entwicklung und Verbreitung
Die ersten beiden BASIC-Programme liefen am 1. Mai 1964 um vier Uhr Ortszeit in New Hampshire gleichzeitig auf einem GE-225-Computer von General Electric im Keller des Dartmouth College. BASIC wurde dort über Jahre von Informatikstudenten weiterentwickelt. Kemeny und Kurtz verbreiteten die Sprache ab den späten 1960er Jahren auch an Schulen, die Computerkurse einführten. Für Schulen war BASIC kostenlos, während andere Programmiersprachen oft mehrere tausend Dollar kosteten. Deshalb boten viele Computerhersteller, zum Beispiel DEC, BASIC-Interpreter für Minicomputer an.
Mitte der 1970er Jahre wurde BASIC in der Bastelcomputer-Szene bekannt. Ein abgespecktes BASIC passte gut in den sehr kleinen Speicher früher Microcomputer. Ende der 1970er und Anfang der 1980er Jahre erreichte BASIC mit Heimcomputern einen Höhepunkt: Viele Geräte starteten beim Einschalten direkt einen BASIC-Interpreter, der zugleich Bedienoberfläche und Programmierumgebung war. Beispiele sind der Commodore 64, Apple II, Atari-8-Bit-Heimcomputer, Tandy TRS-80, TI-99/4A und Rechner der Sinclair-ZX-Reihe.
Microsoft BASIC war auf vielen Heimcomputern lizenziert und in den frühen Jahren Microsofts wichtigstes Produkt. Microsoft verkaufte es für 150 US-Dollar, nach heutiger Kaufkraft etwa 870 USD. Weil Hobbyisten Software kopierten und austauschten, veröffentlichte Bill Gates den Open Letter to Hobbyists und rief zum Kauf proprietärer Software auf. Als Reaktion schrieb Dennis Allison die freie, gemeinfreie Variante Tiny BASIC, die zunächst auf dem Altair 8800 lief.
Auch MS-DOS enthielt BASIC-Interpreter: zunächst BASICA beziehungsweise GW-BASIC, später QBasic. In Deutschland wurde QBasic an vielen Schulen im Informatikunterricht verwendet. Ab Mitte der 1980er Jahre nahmen andere Hochsprachen wie C an Bedeutung zu; außerdem unterstützten mitgelieferte BASIC-Interpreter die Ressourcen mancher Systeme nur unzureichend, sodass Programmierer Assembler lernen mussten. Microsoft führte 1991 Visual Basic zur schnellen Entwicklung von Windows-Anwendungen ein. Ab Version 2 war es mit ODBC-Datenbankunterstützung kommerziell erfolgreich. Visual Basic entwickelte sich vom Interpreter zu einer Compilersprache mit objektorientierten Ansätzen; ab Version 5 waren Klassen möglich, in Visual Basic 6 kam Vererbung hinzu. Das kompatible VBA ersetzte in Microsoft Office die frühere Makrosprache. Visual Basic innerhalb von .NET wurde grundlegend neu konzipiert, weshalb keine Abwärtskompatibilität mehr bestand.
Aufbau früher BASIC-Programme
Eine klassische BASIC-Zeile folgt meist dem Muster „Zeilennummer Befehl [Parameter1, Parameter2 ...]“ oder „Zeilennummer Variable1=Variable2“. Die Zeilennummer ist ein meist in Zehnerschritten aufsteigender Wert. So können später Zeilen mit dazwischenliegenden Nummern eingefügt werden. RENUMBER nummeriert ein Programm unter Berücksichtigung seiner Sprungbefehle neu. Eine Eingabe ohne Zeilennummer wird sofort im Interpreter ausgeführt; mit Nummer wird sie als Programmzeile gespeichert.
Ein Befehl ist etwa INPUT. Parameter sind Werte, die an einen Befehl übergeben werden. Bei einer Zuweisung steht die Zielvariable vor dem Gleichheitszeichen und der auszuwertende Ausdruck dahinter. Variablen müssen nur bei Arrays definiert werden. Ihr Typ kann durch ein Sonderzeichen am Ende des Namens erkennbar sein: $ steht für String, also Zeichenkette, % für Integer und & für Long. Das Zeichen % darf weggelassen werden.
Wichtige Befehle sind INPUT zum Einlesen von Werten, PRINT zur Bildschirmausgabe, LOCATE X,Y zum Setzen der Cursorposition, PSET X,Y zum Zeichnen eines Punkts, CLS zum Löschen des Anzeigebereichs und LET für eine Zuweisung. Mehrere Anweisungen können in einer Zeile durch Doppelpunkte getrennt werden. Das spart Speicherplatz und beschleunigt Sprünge erheblich; die Ausführungszeit eines Sprungs ist ungefähr von der Anzahl der Zeilennummern bis zum Ziel abhängig. Die Lesbarkeit leidet jedoch.
Der Doppelpunkt kann auch zur optischen Einrückung verschachtelter FOR-NEXT-Schleifen dienen. Einige Dialekte wie AmigaBASIC erlauben Labels als Sprungziele. Ein Label endet mit Doppelpunkt; dadurch können Programme ohne Zeilennummern auskommen. GOSUB ruft dabei ein Unterprogramm auf, RETURN kehrt daraus zurück. Beim Sharp-PC-1401-BASIC von 1983 können beschriftete Zeilen wie „QUADRAT“ als Ziel von GOSUB verwendet werden.
Typisches Programmverhalten
Das Beispielprogramm fragt zunächst mit INPUT nach einem Namen und begrüßt ihn mit PRINT. Danach fragt es nach der Zahl S der gewünschten Sterne. Es setzt S$ auf die leere Zeichenkette und fügt in einer FOR-I-bis-S-Schleife jeweils ein „*“ an S$ an. Anschließend wird die fertige Sternreihe ausgegeben.
Danach fragt das Programm, ob weitere Sterne gewünscht sind. Ist die Eingabe Q$ leer, führt „IF LEN(Q$) = 0 THEN GOTO 70“ zurück zur Frage. LEFT$(Q$, 1) speichert den ersten Buchstaben der Antwort in L$. Bei „J“ oder „j“ springt das Programm mit GOTO 30 zurück zur Sterneingabe. Andernfalls gibt es „Auf Wiedersehen“ aus und druckt den Namen in einer Schleife zehnmal. Das Beispiel zeigt die für ältere BASIC-Dialekte typische unstrukturierte Steuerung mit GOTO, aber auch die einfache Verarbeitung von Zeichenketten in den Zeilen 70–90.
Dialekte und Standards
Ein BASIC-Dialekt ist eine Variante mit zusätzlichen Befehlen, Funktionen oder Spracherweiterungen. Solche Erweiterungen sollten die jeweilige Plattform vollständiger und effektiver nutzbar machen. Daher unterscheiden sich BASIC-Interpreter und -Compiler häufig im Befehlssatz.
Es gibt unter anderem den ISO-Standard für Minimal BASIC, ISO/IEC 6373:1984, und den Standard für Full Basic, ISO/IEC 10279:1991. Ergänzungen behandeln Module und die Eingabe einzelner Zeichen: X3.113 Interpretations-1992 Basic Technical Information Bulletin #1 sowie ISO/IEC 10279:1991/Amd 1:1994. Die meisten Interpreter und Compiler halten sich laut Artikel jedoch nur teilweise an diese Vorgaben.