Wie hat die Computerprogrammierung angefangen?
Im frühen 19 Jahrhundert hat Charles Babbage zwei bahnbrechende Rechenmaschinen entworfen - die “Difference Engine” und die “Analytical Engine”. Bei dieser Arbeit wurde er von Ada Lovelace unterstützt, die eine ausgezeichnete Mathematikerin war und ein Leben lang Interesse an Zahlen und Zahlentheorien hatte. Sie half die Übersetzung zu schreiben, und schrieb dann die ergänzenden Informationen, um die eingehende Analyse eines italienischen Mathematikers über Babbages Arbeit an seinem zweiten Projekt, der Analytical Engine, zu begleiten.
Diese Maschine von Babbage gilt heute als das früheste Modell für den Computer, und Adas eigene Schriften wurden zum ersten Algorithmus, da sie dazu dienen, die Maschine auf der Grundlage des geschriebenen "Programms" zu betreiben. Ihre Arbeit beinhaltete einen Algorithmus, mit dem die Maschine Bernoulli-Zahlen berechnen sollte.
Dieses Schreiben hat Lovelace als den ersten Computerprogrammierer in der Geschichte markiert. Leider hat Babbage die Konstruktion und den Bau der Maschine nicht abgeschlossen, so dass ihr Programm niemals getestet wurde. In ihren Schriften zu den beiden Maschinen betonte Lovelace die Hauptunterschiede zwischen den Geräten von Babbage, aber noch wichtiger war die Theorie, dass es praktische Verwendungsmöglichkeiten und Implikationen für die Analytical Engine gab, die weit über die mathematischen Berechnungen hinausgingen.
====================================================
Einen bahnbrechenden Beitrag zum programmieren hat nach Ada Lovelace eine zweite Frau - Grace Hopper
- gemacht. Sie hat die Idee verwirklicht, dass der Computer Instruktionen in natürlicher Sprache verarbeiten kann. Bis zu dem Zeitpunkt wurden Maschinen-Programme in Folgen von hexadezimal Zahlen programmiert. Jeder Befehlscode hat bis Heute einen Zahlenwert - und der musste direkt mit der dazugehörigen Adresse eingegeben werden. Grace Hopper hat 1952 die Sprache A-0 auf dem Harvard Mark I Computer entwickelt. Diese Art von Programm nennt man Heute “Assembler”, das Befehle wie ADD oder SUB in die entsprechenden Maschinencode-Zahlen übersetzt. Dies erscheint Heute als sehr einfach, aber man musste erstmals darauf kommen. Später war Grace Hopper federführend in der Entwicklung der Computersprache “COBOL”.
Grace Hopper hat sich auch früh Gedanken gemacht über dir Tatsache dass Computerprogramme manchmal auf mysteriöse Weise falsche Werte generieren. Ich habe Sie 1972 in Sydney/Australien in einem Vortrag erlebt. Sie erzählte wie Sie manchmal mehrere Tage und Nächte Fehler in der Hardware der ersten Computer suchten (die damals sehr fehleranfällig waren), aber nichts fanden, bis Sie auf die Idee kam dass ein Fehler im Programm verantwortlich war. Bis zu dem Zeitpunkt hatte man dies nicht beachtet, weil Programme doch so klar und einfach zu sein scheinen!!
Ihr war dies als Programmiererin inzwischen klar aber ihre Vorgesetzten brauchten länger um dies zu begreifen. Sie erzählte die schöne Geschichte, wie 1947 der damalige Computer Fehler machte. Man fand eine Motte (bug auf Amerikanisch) zwischen zwei Kontakten eines Relais. Das Bug wurde ins Log-Buch geklebt und dem Chef gezeigt - als Beweis für die Verzögerung. Als dann später Softwarefehler auftraten war es einfacher dem Chef zu sagen “dass noch ein Bug im Computer aufgetreten war”. So entstand das Wort “debuggen”.
====================================================
Ein weiterer Computer-Pioneer - Maurice Wilkes
- den ich auch “live” in Sydney erlebt hatte, erzählte das Gleiche. Alle waren total überrascht das Fehler im Programmcode für Fehlfunktionen im Computer verantwortlich sein können. Das Hauptproblem war selbst modifizierender Code, ein Grundgedanke in dem Entwurf der von Neumann Maschine. Die Tatsache das Programmcode und Daten im selben Speicher waren, erlaubte das folgende Konstrukt:
loop: lda 0, pointer # dieser Befehl wird modifiziert 
  inc loop  # pointer zeigt auf das nächste Wort 
  add 0, sum  # Summe einer Liste 
  jnz loop  # eine NULL am Ende beendet die Schleife 
von Neumann war sehr stolz auf diese Möglichkeit Iterationen in Schleifen zu verwirklichen. Tatsache aber war, dass die meisten Softwarefehler durch diese Arbeitsweise entstanden. Das oben gezeigte Programm kann man ohne weitere Vorkehrungen nicht zweimal laufen lassen.
Maurice Wilkes hat deshalb unter anderem Index-Register in der CPU erfunden mit denen selbst modifizierender Code vermiedenen werden konnte. Schon 1951 hat er das Konzept der Microprogrammierung erfunden und angewendet um CPU’s mächtiger zu machen.