Computer Modell Katalog

Programmierungsentwicklung

Parallel zu den greifbaren, technischen Fortschritten im Sinne der Hardware vollzog sich im abstrakten Bereich der Programmierung (Software) ein ähnlicher Vorgang. Die Fragestellung : "Definition eines Problems durch Zerlegung in logische Schritte in maschinenverständlicher Sprache" - die Antwort wandelte sich in den Jahren der Entwicklung, wie auch die verwendete Maschine selbst. Heutige Programmiersprachen wie C und seine Ableger, BASIC, PASCAL oder ALGOL haben mit den ursprünglichen Sprachentwicklungen des Maschinencodes nicht mehr viel gemeinsam, wobei das Endprodukt -> der Maschinencode für eine Prozessorgeneration besteht. Oben genannte Sprachen sind Interpreter- oder Compilationssprachen, die es für den menschlichen Benutzer einfacher gestalten sollen, Problemlösungen in möglichst kurzer Zeit zu produzieren. Das Programmieren eines Programmiersprache selbst erfordert das weitergehende Verständnis des Entwicklers für die Hardware und speziell des verwendeten Prozessors [dazu findet vorwiegend der Assembler Verwendung, der als "Low- Level- Programming" nahe am Prozessor beschrieben werden kann und entsprechende Ergebnisse erzeugen kann]. Ein mit BASIC geschriebenes Programm wird entweder von der Entwicklungsumgebung interpretiert oder für die Systemsoftware lesbar in Maschinencode compiliert.
Die Entwicklung in der Sprache JAVA geht noch einen Schritt weiter, da sie eine vom Betriebssystem und der JAVA Umgebung generierte "Virtual Machine" zur Ausführung verwendet, was einen betriebssystemübergreifenden Einsatz dieser Sprache erleichtert und vor allem im Bereich des Internet eingesetzt wird.
Doch nun der Blick zurück in die Anfangstage der Programmierung : Am Anfang stand das einfache "Geradeausprogramm" der Lochkartenmaschinen, das zuerst fest verdrahtet, später auf Schalttafeln gesteckt, nur einen im wesentlichen sequentiellen Ablauf der einzelnen Programmierschritte zuließ [Dipl. Ing, H. Bornemann ("Die geschichtliche Entwicklung der Datenverarbeitung") IBM Deutschland 1975]. Ähnlich arbeiteten auch die ersten Rechenautomaten, wie Zuses Z3 [Konrad Zuse ("Entwicklungslinien einer Rechengeräte-Entwicklung von der Mechanik zur Elektronik"), Aus "Digitale Informationswandler", Herausgeber W. Hoffmann, Verlag Vieweg & Sohn, Braunschweig 1962] oder Aikens Mark I [M.V. Wilkes ("Automatic Digital Computers", John Wiley Sons Inc. New York], nur daß bereits auswechselbare Lochstreifen die schnellere Umstellung auf ein anderes Programm erleichterten. Der nächste Schritt war der Einbau zusätzlicher Lochstreifenleser für Unterprogramme, wie das Berechnen trigonomischer Funktionen und die bedingte Ausführung einzelner Befehle, beeinflußt durch das Ergebnis von Zwischenrechnungen. Man konnte jetzt in Unterprogramme springen, dort Zwischenrechnungen ausführen und anschließend das Hauptprogramm fortsetzen. Das Überspringen ganzer Programmteile, daß sog. "nach vorn verzweigen" war ebenfalls mit diesen Maschinen möglich. Schon Charles Babbage (1792 bis 1871) hatte daran gedacht, zyklische Programme auszuführen, indem er die für die Programmsteuerung geplanten Jacquardschen Lochkartenbänder vorwärts und rückwärts laufen lassen wollte ; eine Methode die praktisch nie umgesetzt werden konnte. Erst als man seit v. Neumann zu speicherprogrammierten Maschine überging und Operationsbefehle wie Zahlen zu speichern und zu modifizieren lernte, war der Weg geebnet für eine flexible Behandlung der Programmiermethoden.
Zunächst waren alle Anweisung an die Datenverarbeitungsanlage in Form einer codierten Folge von "Maschinenbefehlen", d.h. in einer Maschinensprache, einzugeben, die von Maschine und Hersteller abhängig war. Damit mußten Programme für jede Maschine individuell neu geschrieben werden. In einem ersten Schritt wurden für die codierten Maschinenbefehle funktionsorientiert symbolische oder mnemotechnische Ausdrücke eingeführt, welche mit Hilfe eines 1:1 Übersetzungsprogramms, auch Assembler genannt, Befehl für Befehl in die jeweilige Maschinensprache übersetzt wurden. Selbst dieser Assembler war im wesentlich noch maschinenorientiert. Erst die Entwicklung von "problemorientierten Programmiersprachen" sollte die Möglichkeit eröffnen, allgemein verwendbare, "kompatible" Programme zu schreiben, welche von verschiedenen Maschinentypen mit Hilfe sogenannter Compilierer in deren Maschinensprache umgesetzt werden können [F.L. Bauer & K. Samelson ("Maschinelle Verarbeitung von Programmiersprachen" aus "Digitale Informationswandler", Herausgeber W. Hoffmann, Verlag Vieweg & Sohn, Braunschweig, 1962 / Bauer, Heinhold, Samelson, Sauer ("Moderne Rechenanlagen") B.G. Teubner Verlag 1965]. So wurden in den folgenden Jahren verschiedene Programmiersprachen entwickelt :

 1950 : ASSEMBLER (keine allgemein gültige Sprache (Typabhängig)
 1954 : FORTRAN (FORmula TRANslation) ;gefolgt von FORTRAN II, FORTRAN IV und PL/1
 1958 : ALGOL (Sprache für mathematische Zwecke)
 1960 : COBOL (Common Business Oriented Language) ; (erste kommerzielle Programmiersprache)
 1968 : ALGOL 68

Aus diesen Sprachen entwickelten sich verschiedenste Varianten, wobei APL die Listenverarbeitungssprache von Professor K.E. Iverson besondere Erwähnung in der Literatur findet.