BASIC
BASIC ist eine imperative Programmiersprache, die 1964 vom John George Kemeny und Thomas Eugene Kurtz am Dartmouth College entwickelt wurde.
Der Name BASIC steht für Beginner's All-purpose Symbolic Instruction Code = Vielseitige, symbolische Programmiersprache für Anfänger. Außerdem bedeutet das englische Wort basic "grundlegend".
Allgemeines
Die Sprache wurde aufgrund von acht Entwurfsprinzipien entworfen:
- Für Anfänger einfach zu lernen
- Als Allzweck-Computersprache einsetzbar
- Erweiterbarkeit der Sprache für Experten
- Interaktivität
- Klare Fehlermeldungen
- Rasche Antwortzeiten
- Hardwareunabhängigkeit
- Betriebssystemunabhängigkeit
BASIC war einst weltweit die populärste Programmiersprache, obwohl sie oft von Informatikern gering geschätzt wird.
Viele Dialekte wurden entwickelt und die neuesten weisen alle professionellen Elemente für höhere Programmiersprachen auf. Ein Nachteil der vielen Versionen ist, dass Programme meist nicht ohne weiteres zwischen diesen Versionen ausgetauscht werden können.
Geschichte
BASIC wurde 1964 von John George Kemeny und Thomas Eugene Kurtz am Dartmouth College entwickelt, um den Elektrotechnikstudenten den Einstieg in die Programmierung mit Algol und Fortran zu erleichtern.
Am 1. Mai 1964 um 4 Uhr Ortszeit New Hampshire liefen die ersten beiden BASIC-Programme simultan auf einem GE-225-Computer von General Electric im Keller des Dartmouth College.
Seinen Höhepunkt erlebte BASIC mit den ersten Heimcomputern Ende der 1970er Jahre, die alle als Benutzeroberfläche und Programmierumgebung ein BASIC besaßen, zum Beispiel Sinclairs ZX-81 oder der Commodore C64, aber auch die Vorläufer der Personalcomputer, wie die von Philips erzeugten, konnten mit CPM-Basic interpretierend oder compiliert arbeiten .
Praktisch alle Besitzer von Heimcomputern beherrschten zu dieser Zeit ein wenig BASIC.
Auch als Mitte der 1980er Jahre grafische Benutzeroberflächen Einzug mit dem Macintosh, Amiga, Atari ST hielten, wurden bei diesen weiter BASIC-Interpreter mitgeliefert, und es gab zusätzliche käufliche Versionen von BASIC-Dialekten.
Einige BASIC-Dialekte konnten nun sogar deutlich schnellere Maschinenprogramme aus BASIC-Code erzeugen.
Das parallel verbreitete MS-DOS enthielt ebenfalls einen BASIC-Interpreter (QBasic), welcher meist eine Rolle im Informatikunterricht an vielen Schulen spielte.
Zu dieser Zeit setzte aber ein Wandel ein, weil andere Programmiersprachen wie C und Assembler für die Heimcomputer verfügbar wurden.
Nach und nach nahm außerdem der Anteil Menschen zu, die einen Computer nur bedienen, aber nicht programmieren konnten.
Hauptgrund dafür, dass BASIC zwischenzeitlich fast in Vergessenheit geriet, war aber, dass nach dem Zusammenbruch von Atari und Amiga der Markt von Windows-PCs dominiert wurde. Bei diesen war kein BASIC-Interpreter inbegriffen, mit dem man Windows-Programme hätte schreiben können.
Microsoft führte allerdings das kommerzielle Visual Basic für die schnelle Entwicklungen von Windows-basierten Anwendungen ein.
Der Code wurde nicht mehr zur Laufzeit interpretiert, sondern von einem Compiler während der Programmentwicklung in maschinennahen Pseudocode beziehungsweise in späteren Versionen sogar in Maschinencode (native code) übersetzt. Durch diese Maßnahme konnte die Geschwindigkeit und die Stabilität der Programmausführung deutlich gesteigert werden.
Da auch die Geschwindigkeit der Computer immer mehr zunahm, wurde Visual Basic außerdem für professionelle Entwicklungen immer interessanter.
Mit Einführung von objektorientierten Sprachelementen wurde der Versuch unternommen, Visual Basic mit anderen objektorientierten Programmiersprachen wie C++ gleichziehen zu lassen.
Besonders in Europa hat sich Visual Basic in der Entwicklergemeinschaft nur in begrenztem Maße behaupten können. Es bot zwar eine bessere und viel einfachere Anbindung an Windows als jede andere Programmiersprache, war aber langsamer.
Erst mit der Implementierung von Visual Basic innerhalb des .NET-Frameworks ist es gelungen, die strukturellen Schwächen von BASIC zu überwinden.
Gleichzeitig aber bedeutete dieser Schritt das Ende von Visual Basic als eigenständiger Programmiersprache. Innerhalb des .NET-Framework handelt es sich bei VB.Net nur noch um eine Sprach-Implementierung neben anderen, die auf einem Java-ähnlichen Kern aufsetzt. Mit Einführung der JIT-Compiler und des .NET-Frameworks als Basis für alle Microsoft Sprachen besteht zwischen der Verarbeitungsgeschwindigkeit von BASIC und anderen Programmiersprachen kein Unterschied mehr.
Das Ziel einer plattformunabhängigen Programmiersprache hat sich nie erfüllt. Im Gegensatz zum gut standardisierten C entstanden von BASIC hunderte Dialekte, die alle, bis auf Ähnlichkeiten, inkompatibel zueinander waren. Allein Microsoft konnte durch die Integration von Visual Basic in nahezu alle seine Softwareprodukte einen Standard etablieren, der allerdings bis auf wenige Ausnahmen auf Microsoft-Produkte beschränkt blieb. Die starke Protegierung von BASIC durch Microsoft ist wahrscheinlich der Hauptgrund, warum BASIC bei professionellen Programmierern immer wieder auf Ablehung stößt. Durch Einführung eines .net-Framework Pendants für LINUX könnte Multiplattform-BASIC Realität werden.
Außerdem waren die frühen BASIC deutlich langsamer als die meisten anderen Hochsprachen. Dies machte es besonders für zeitkritische Anwendungen unattraktiv. Mit Einführung von Visual Basic ab Version 5 erzielte Microsoft allerdings deutliche Erfolge in Bezug auf die Verarbeitungsgeschwindigkeit, die aber den zuvor verlorenen Boden nicht wieder gut machen konnten. Immerhin zeigten Benchmarks das Visual Basic im Vergleich zu C++ oder Java durchaus mithalten konnte. Gegenüber Java konnten sogar in einigen Bereichen deutliche Geschwindigkeitsvorteile erzielt werden.
Beispiele
Das Beispiel 1 zeigt ein Programm, das in einer frühen unstrukturierten Fassung geschrieben wurde, während das Beispiel 2 das gleiche Programm in einem moderneren Dialekt zeigt.
Beispiel 1: Unstrukturierter BASIC-Code
10 INPUT "Geben Sie bitte Ihren Namen ein"; A$ 20 PRINT "Guten Tag "; A$ 30 INPUT "Wieviele Sterne möchten Sie?"; S 40 FOR I = 1 TO S 50 S$ = S$ + "*" 55 NEXT I 60 PRINT S$ 70 INPUT "Möchten Sie noch mehr Sterne?"; Q$ 80 IF LEN(Q$) = 0 GOTO 70 90 L$ = LEFT$(Q$, 1) 100 IF (L$ = "J") OR (L$ = "j") THEN GOTO 30 110 PRINT "Auf Wiedersehen"; 120 FOR I = 1 TO 200 130 PRINT A$; " "; 140 NEXT I 150 PRINT
Beispiel 2: Strukturierter BASIC-Code
INPUT "Geben Sie bitte Ihren Namen ein"; UserName$
PRINT "Guten Tag "; UserName$
DO
INPUT "Wie viele Sterne möchten Sie? "; NumStars
Stars$ = ""
Stars$ = REPEAT$("*", NumStars) '<-ANSI BASIC
'Stars$ = STRING(NumStars, "*") '<-MS BASIC
PRINT Stars$
DO
INPUT "Möchten Sie noch mehr Sterne(J/N)?"; Answer$
LOOP UNTIL Answer$ <> ""
LOOP WHILE UCASE$(LEFT$(Answer$, 1)) = "J"
PRINT "Auf Wiedersehen ";
FOR A = 1 TO 200
PRINT UserName$; " ";
NEXT A
PRINT
(Einige) BASIC Implementationen
BASIC ist heute auf nahezu allen Computer-Plattformen in verschiedenen BASIC-Dialekten erhältlich.
- AMOS Eine BASIC-Version für den Amiga zur Spieleentwicklung. Nachfolger von STOS für den Atari ST.
- Commodore Basic: In Commodores 8-bit-Rechnern (z.B. C64) eingebauter ROM-BASIC-Interpreter
- Dark Basic
- BwBASIC
- Gambas: Eine Visuelle Programmierumgebung für BASIC unter Linux KDE von Benoit Minisini.
- 1986: GfA-Basic wurde ursprünglich für den Atari ST konzipiert, später für Windows umgesetzt.
- Gnome Basic ist ein Projekt das die Entwicklung eines zu Visual Basic kompatiblen BASIC für Gnome anstebt. Die Entwicklung wurde aber inzwischen eingestellt und im Zuge der VB.NET-Unterstützung für Mono weitergeführt.
- GWBasic wurde in den MS-DOS Versionen vor 5.0 ausgeliefert.
- HBasic ist eine auf Qt basierende IDE und ein BASIC Dialekt
- KBasic ist ein auf Qt basierendes kommerzielles BASIC für Windows und Linux
- MBasic war ein von Microsoft entwickeltes BASIC (mit einfachem Zeileneditor), das zum Beispiel unter CP/M lief.
- Omikron BASIC wurde lange Zeit mit neuen Atari STs ausgeliefert
- PowerBasic: Leistungsfähiger kommerzieller BASIC-Compiler für DOS und Windows (Nachfolger von Borlands Turbo Basic)
- PureBasic plattformübergreifendes BASIC für Windows, Linux, AmigaOS und Mac OS (in Vorbereitung).
- REALbasic plattformübergreifendes BASIC für Mac, Linux und Windows
- QBasic wurde in den MS-DOS Versionen 5.0 - 6.22 ausgeliefert.
- QuickBasic war die kommerzielle Profi-Version von QBasic mit Compiler.
- RapidQ ist ein freies, an VisualBasic angelehnter BASIC für grafische Oberflächen, arbeitet aber weitgehend mit QuickBasic-Befehlen.
- sdlBasic: Ein freies BASIC, das auf die Grafikbibliothek von SDL aufbaut
- Simon's BASIC: Ein verbessertes BASIC für den C64, das per ROM-Modul installiert wurde.
- SmallBasic: Ein GPL-ed BASIC das auf PalmOS, Linux etc. läuft
- Turbo-Basic XL (1984), ein mittlerweile als Freeware freigegebener BASIC-Interpreter für den ATARI XL/XE, Autor war Frank Ostrowski, einem der späteren Entwickler von GFA Basic
- Turbo Basic Ein kommerzieller BASIC-Compiler für DOS der Firma Borland
- Visual Basic: Dialekt mit einer Visuelle Programmierumgebung für BASIC von Microsoft.
- VB.Net: Implementierung innerhalb des .NET-Frameworks von Microsoft.
- wxBasic ist ein Open Source BASIC auf Basis des plattformübergreifendes Toolkits wxWidgets
- XBasic ist eine Open Source Version
Dokumente, die BASIC definieren
Die meisten real existierenden Interpreter und Compiler halten sich leider nicht an diese Standards.
- ANSI Standard for Minimal BASIC (ANSI X3.60-1978 "FOR MINIMAL BASIC")
- ISO Standard for Minimal BASIC (ISO/IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC")
- ANSI Standard for Full BASIC (ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC")
- ISO Standard for Full BASIC (ISO/IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC")
- ANSI Addendum Defining Modules (X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987")
- ISO Addendum Defining Modules (ISO/IEC 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT")
Literatur
- BASIC-Dialekte, Dr. Hanz-Joachim Sacht, ISBN 3-581-66524-7