Basic war in den 70er(?) aber spätestens in den 80er Jahren das Ding in Sachen Programmierung für die Massen. Dies wie hier schon aufgezeigt wurde, weil BASIC bei den meisten 8Bit-Homecomputer die quasi „Betriebsystemoberfläche“ war und damit auch immer schon eingebaut war.
Verwendungszweck Computer > Programmierung zu Nutzung
Anders gesagt: Programmierung war die erste Anwendung. Der Rechner (mit Variablen) wie beim technischen Konzept und im Manual des ZX81 bis heute zu lesen ist . Der Prompt in der 8bit-Welt war ein Basic Prompt.
Einfach anschalten. Man* konnte Basic benutzen auch ohne Erweiterungen wie einem Disklaufwerk oder einem Printer. Mit der Einführung des GUIs endete auch die Kopplung von Betriebssystem und Programmiersprache. Der Computer wird als Instrument eher zu einem Programm-Consumer-Produkt als einer Programmiermaschine. Programmiersprachen werden noch mitgeliedert, wie das eher für grössere Computersystem üblich war (vgl. UNIX, Apple II, MS-DOS, CP/M).
Heute liefert niemand mehr eine Programmiersprache per default mit und sie ist schon gar keine Erstanwendung mehr. Die Programmierung ist in den Hintergrund getreten und Spezialanwendung. Interessanterweise kommt neu wiederum die „Natürlichsprachliche Programmierung“ per AI dazu und schliesst damit (wie auch schon erwähnt) den Bogen der 80er Jahre.
BASIC Hintergrund
Basic wurde bekanntlich schon in den 60er Jahren entwickelt, als einfach Möglichkeit Programmieren zu lernen und zu Coden. Die Programmiersprache lehnt sich am Alltag an, hat wenige Keywörter und vereinfacht die Programmierung gegenüber Platzhirschen wie ALGO oder FORTRAN. Es ist quasi ein Zwischending zwischen der Nicht-Programmierung und Hochschulrechnen. Die Hochsprachen wie ALGO oder FORTRAN sind nicht verwunderlich – auf 8Bit Rechnern eher selten aufgetaucht. Zur Konkurrenz von Basic entwickelte sich eher dann PASCAL von Wirth (ETH) und die Compiler Basic Varianten auf den 16/32 Bittern.
// ToDo: Gibt es Algo für c64? Fortran?)
BASIC Coding Praxis
Die Basics jener Zeit waren alle Zeilennummern basiert. Was sie bis heute abhebt von den Platos Tutor etc. die mit Labeln arbeiten.
Zeilennummern
10 PRINT "HALLO"
20 GOTO 10
RUN
Die Zeilenbasierung macht es einfach zu unterscheiden zwischen Direkteingaben und Programmierung. Beginnt etwas mit einer Nummer, dann ist es Teil des Programms und kann da auch so verarbeitet werden. Dies ist wichtig, weil die meisten Oberflächen einfach mit dem Bildschirmtextspeicher arbeiten und ein Return bestimmt, was mit dieser Zeile passiert.
NR > updaten Source Code
Keine NR > direkt ausführen
Durch die Zeilennummerierung muss auch nicht unterschieden werden zwischen Editor und Ausführung. Es ist alles-eines. So wundert es nicht, dass die meisten 8Bitter im Homecomputerbereich damit arbeiten und damit quasi die Grundbedienung des Computers hierhin verlagern („Load ‚xyha.prg‘,8,1).
Anschungsmaterial dazu auch C64-Basic oder MS-Dos-Basic.
Eine Zeile – ein Command
Pro Zeile ist eigentlich (vs C64 etc) eine Command erlaubt. Das bedeutet, dass jeweils eine Zeilennummer gefunden werden muss und dazu der Befehl eingegeben werden kann.
Dabei ist auch IF ein Befehl, so dass komplexere IFs in der Ausführung immer zu Gotos führen müssen. Denn letztlich folgt einem If kein Statement-Block. Und Basic kennt – mit Ausnahme der Konstruktionen FOR etc keine Statementblocks.
All dies führt zu sehr seltsamen und unübersichtlichem Code.
Schnell drauf los programmieren
Und so fängt man dann an etwas zu programmieren und lernt schnell: Einfach so drauf los coden ist nicht. Oder anders gesagt: Schnell drauf los coden für etwas kleines, etwas Demonstratives funktioniert.
Erste Schritte
Aber dann? Bei einem grösseren Projekt? Da wird es sehr schnell nicht mehr so produktiv. Als erstes fehlen immer wieder Zeilen, die man dann einfügen muss. Dafür gibt es noch behelfsmässig den Befehl „RENUMBER“.
Aber irgendwann merkt man dann: Ok, so einfach geht das nicht. Ich kann da nicht einfach Code rumschieben, wie das mit späteren Nicht-Zeilen-Orientierten-Programmiersprachen üblich ist.
Zweite Schritte
So versucht man es im zweiten Schritt mit ein bisschen Planung und fängt von vorne an (Denn die Übernahme von Codezeilen ist wieder auch nicht so einfach – hilfe Renumber?). Man verlagert Code in Subroutinen und diese Subroutinen (GOSUB RETURN) in höhere Zeilen (Wie weit gehen die Zeilennummern wohl?).
Aber auch hier wird zunehmend zum Problem, dass man beim Gosub halt an irgend eine Zeile springt und dies dann auch nicht sprechend ist, etwa GOSUB 6000.
Bei der Strukturierung hilft als Erstes REM (Remarks). Aber auch das nur begrenzt, denn der Code ist wegen den Einwordcommands-pro-Linie immer lang.
Dritter Schritt
In einem dritten Schritt fängt man dann an, eine eigene externe Doku auf Papier zu machen für sich selbst.
Vierter Schritt
Das Eingeständnis: Die heute viel genutzte Technik: Anfangen und Ausbauen ist bei Basic nicht so einfach.
Darum: Planung im Vorfeld und dann eine erste Einteilung etc
Fazit
Die Art und Weise wie man Basic-Programmierung in Erinnerung hatte, funktioniert eher nur für kleine Programme und nicht für Grosse. Und es sollte nachgefragt werden, wie der Entwicklungsprozess von Basic-Programmen war und heute noch ist (NeoBasic-Entwickler).
Es zeigt aber auch, warum gerade auf 16/32Bit sich dann so schnell die Zeilenlosen bzw. Label-orientieren Basics sich durchgesetzt haben und vielleicht dann auch verschwunden sind (mit Ausnahme von VisualBasic vielleicht).