2.1.1. Kurzer Abriss der Geschichte der Programmierung

Nächste Seite

Ein graphikfähiger und programmierbarer Taschenrechner wie der TI-85 gehört seit wenigen Jahren zu der Standartausstattung eines sächsischen Abiturienten. Auch einen PC nennt wohl heutzutage beinahe jeder Zweite sein Eigentum. Doch über die Entwicklung und Geschichte unserer heutigen Rechner weiss sicherlich nicht jeder Bescheid.

Mit einem Rechenschieber, wie ihn auch meine Eltern noch in der Schule benutzten und dessen Ursprünge bis ins 17. Jahrhundert zurückreichen, haben unsere Taschenrechner nur noch sehr wenig gemeinsam. Noch frühere Formen von Rechenmaschinen wie z.B. der Abacus oder in der Antike verwendete Rechenbretter, Rechentische oder Rechentücher sind erst recht nicht mehr in Verbindung zu bringen mit dem TI-85.
Die Geschichte der Taschenrechner ist die Geschichte der Informatik, welche erst wesentlich später begann, als die der Mathematik.
Der Beginn der Informatik war verknüpft mit der Suche des Menschen, nach einem System, mit dem er große Datenmengen schnell verarbeiten und Berechnungen mit großer Geschwindigkeit auf mechanische Weise ausführen konnte1.

2.1.1.1. Erste Mechanische Rechenmaschinen und die Lochkartentechnik

Die Fähigkeiten der ersten wirklichen Rechenmaschinen, welche selbständig Überträge von einer (Dezimal-) Stelle zur anderen vornehmen konnten, beschränkte sich im wesentlichen auf die Berechnung der Grundrechenarten und hatte mit Programmierung nur sehr wenig zu tun. Im Jahre 1623 konstruierte z.B. der Astronom Wilhelm Schickard (1592-1635) eine Maschine, die ein sechsstelliges dezimales Addierwerk mit Zehnerübertragung, sowie ein Multiplizierwerk besaß und alle vier Grundrechenarten ausführen konnte. Sie blieb allerdings weitgehend unbeachtet und geriet schnell in Vergessenheit. Aus diesem Grund galt auch lange der französische Mathematiker Blaise Pascal (1623-1662), der fast 20 Jahre später, im Jahre 1641, eine Rechenmaschine entwickelte, mit der sich sechsstellige Zahlen addieren ließen, als Erfinder der ersten Maschine dieser Art. Zur damaligen Zeit war jedoch der Stand der Feinmechanik noch so gering, dass nicht ein zuverlässig arbeitendes Exemplar von Pascals Machine, die nach ihrem Entwickler "Pascaline" genannt wird, hergestellt werden konnte.
Auch der Deutsche Gottfried Wilhelm Leibniz, der 1674 eine Vierspeziesrechenmaschine mit Staffelwalzen konstruierte, hatte mit ähnlichen Schwierigkeiten zu kämpfen und der erhoffte Erfolg der Konstruktion blieb damals aus.
Auch im 19. Jahrhundert war man technisch noch nicht wirklich soweit, um die revolutionären Maschinen zuverlässig und ökonomisch vetretbar bauen zu können, die damals beispielsweise der englische Mathematikprofessor Charles Babbage erfand. Die Idee seiner Maschine beruhte auf der Berechnung der Differenzen zwischen Zahlen und demnach "Differenzmaschine" genannt wurde. Diese "Analytical Engine" bestand aus fünf Grundbestandteilen, die bis heute in elektronischen Rechenanlagen noch anzutreffen sind1:

  1. Eingabe, um Zahlen in die Maschine zu transportieren;
  2. Speicher, in dem für die Rechnung benötigtes Zahlenmaterial und Programminstruktionen untergebracht werden konnte;
  3. Arithmetische Einheit, um arithmetische Operationen vorzunehmen;
  4. Leitwerk, das unter Benutzung eines Programmes die Rechenvorgänge steuern sollte
  5. Ausgabe

Babbage sah für die Eingabe Lochkarten vor, welche 1801 von dem Franzosen Jacquard in Form von Holzplättchen für die Steuerung von Webstühlen entwickelt worden. Diese Karten sollten auch als Speicher und zur Ausgabe dienen. In diesem Punkt bestand auch das Neue an Babbages Maschine: die Idee der Programmierbarkeit, d.h. die Steuerung von Abläufen mit Hilfe verschiedener Programme. Bisher war diese wesentliche Eigenschaft unserer heutigen Computer keiner Rechenmaschine beschert gewesen und die Programme waren "fest eingebaut". Die Maschinen konnten also nur für einen ganz bestimmten Zweck verwendet werden. Mit Hilfe der Lochkartentechnik erschlossen sich damit erstmals neue Möglichkeiten. Doch auch Babbage scheiterte letztendlich an zu komplizierten Feinmechanik der Maschine.
Ein weiterer wesentlicher Schritt zur programmgesteuerten Rechentechnik war die "Statistikmaschine", die 1890 von Hermann Hollerith erfunden und für die 11. amerikanische Volkszählung eingesetzt wurde.
Vier Jahre zuvor hatte Hollerith eine Lochkarte entwickelt, welche im Vergleich zu Jacquards Variante wesentliche Neuerungen enthielt. Solche Lochkarten wurden dazu verwendet, das Verhalten von Automaten zu Steuern.

2.1.1.2. Konrad Zuse und das duale Zahlensystem

Das wirkliche Computerzeitalter begann trotz aller vorherigen Versuche erst in den 30er Jahren unseres Jahrhunderts. Und es war auch ein Deutscher, der den Entscheidenten Fortschritt machte: Im Jahre 1934 hatte der Ingenieur Konrad Zuse (1910-1995) die richtungsweisende Idee anstatt dem bisher verwendeten dezimalen Zahlensystem, das noch noch relativ unbekannte duale Zahlensysem zum Rechnen in mechanischen Anlagen zu verwenden. Zuse hatte erkannt, dass sich mit Hilfe von Relais die dualen Zustände 0 und 1 beschreiben ließen, was soviel wie ein und aus bedeute. Anstatt der viel komplizierteren mechanischen Konstruktionen, die notwendig waren um im dezimalen System 10 verschiedene Stellen zu besetzen und an denen auch die Pioniere der Informatik wie Babbage gescheitert waren, versuchte man jetzt mit Hilfe von Relais unter Verwendung des dualen Zahlensystems entsprechende elektronische Rechenmaschinen zu bauen. Mitten im 2. Weltkrieg im Jahre 1941 wurde dann auch die erste funktionsfähige programmgesteuerte elektromechanische Rechenmaschine von Zuse selbst fertiggestellt und ging unter dem Namen "Relaisrechner" (oder Z3) in die Geschichtsbücher der Informatik ein. Dem Rechner dienten Lochstreifen als  Eingabemedium.
Leider wurde dieser erste Relaisrechner 1944 durch einen Bombenangriff auf Berlin völlig zerstört. Ein Jahr darauf stellete Zuse die Nachfolgemaschine, den Z4 der Weltöffentlichkeit vor. Dieser von Zuse als "Babbage-Boolescher Typ" charakterisierte Rechner (Z4) wendete das von Babbage erfundene Prinzip der Programmsteuerung auf Boolesche Variablen an.
Weitere Errungenschaften von Konrad Zuse waren die Einführung des Gleitkommas und der Gebrauch der logischen Grundoperation "Und", "Oder" und "Nicht".

In den USA wurde zu der Zeit (1944) eine dem Z3 ähnlich arbeitende Maschine entwickelt. Der "Mark 1", der zwar noch auf dem dezimalen Zahlensystem beruhte, enthielt eine weitere wesentliche Neuerung: als Schalter wurden erstmal aus der Radiotechnik bekannte Elektronenröhren eingesetzt, was die benötigte Rechenzeit (Schaltzeit) im Gegensatz zum Relais auf ein Tausendstel herabsetzte.
Der erstmal 1946 gebaute Rechner mit dem Namen ENIAC (Electronic Numerical Integrator and Calculator) bestand aus 18000 Elektronenröhren und 1500 Relais und war in Bezug auf Leistungsfähigkeit den Zuse-Rechnern absolut ebenbürdig. Im Gegensatz zu diesen benutzte man zur Programmspeicherung beim ENIAC Streckbretter, welche damals in Telefonzentralen zur Handvermittlung verwendet wurden. Der 30 Tonnen schwere Großrechner, der entsprechend seiner Komplexität noch sehr unzuverlässig arbeitete, erwies sich allerdings als Spezialrechner, der nur mit sehr großen Aufwand umprogrammiert werden konnte.

2.1.1.3. Der von-Neumann-Rechner

Mit Hilfe von Elektronenröhren und Relais konnte man jetzt Speicher bauen, in denen Zwischenergebnisse von komplexeren Berechnungen abgelegt werden konnten. Damit war auch die Vorraussetzung für den letzten Schritt auf dem Weg zum heutigen Rechner geschaffen:
Im Juni 1945 trat der aus Ungarn stammende Mathematiker John von Neumann (1903-1957) der Projektierungsgruppe eines neuen Rechners bei. Während der Arbeit am EDVAC (Electronic Discrete Variable Automatic Computer) kam ihm dann die revolutionäre Idee, an die Stelle der starren Programmsteuerung eine interne Programmsteuerung zu setzen. Der Programmablauf sollte codiert und im Speicher des Rechners abgelegt werden. Das aus einer Folge von einzelnen Befehlen bestehende Programm enthielt bedingte Befehle, die Vorwärts- und Rückwärtsverzweigungen ermöglichten.
Dieses Prinzip führte zu einer wesentlich schnelleren Arbeitsweise und Programmausführung des Computers, da das Programm aus einem schnelleren Speicher als der Lochkarte gelesen wurde. Daten und Zwischenergebniss konnten dort ebenfalls abgelegt werden und der Maschine war es möglich jeden Programmbefehl selbst zu ändern.
Damit war die Voraussetzung für den heutigen Computer geschaffen und einer modernen flexiblen und sequentiellen Datenverarbeitung stand nichts mehr im Weg. Der erste Computer mit einem flexiblen Speicherprogramm wurde 1952 von von-Neumann entworfen und erhielt den Namen "MANIAC 1".

Die Computerarchitektur, die von J. v. Neumann konzipiert wurde, versprach einen geringen technischen Aufwand und universelle Anwendungsmöglichkeiten.
Demnach sollte ein Computer folgende Eigenschaften haben3:

  1. Er besitzt einen Speicher für Programm- und Verarbeitungsdaten, eine steuernde und eine informationsverarbeitende Einheit, sowie Einrichtungen für die Ein- und Ausgabe von Daten
  2. Er arbeitet vollautomatisiert, d.h., wenn im Speicher Programm- und Verarbeitungsdaten vorliegen, ist außer dem Start der Verarbeitung kein Bedieneingriff notwendig
  3. Programm- und Verarbeitungsdaten werden binär codiert, wobei die Art der Daten nicht markiert ist. Ohne äußere Bezüge lassen sie sich also nicht identifizieren. Die Bezüge werden durch Adressenangaben in den Befehlen hergestellt, wobei die Adressen auf Speicherplätze zeigen.
  4. Der Computer arbeitet die Programme Befehl für Befehl (sequentiell) ab und setzt im Normalfall die natürliche Reihenfolge voraus. Im Ausnahmefall kann im Programm vorwärts und rückwärts gesprungen werden, und zwar unbedingt sowie bedingt in Abhängigkeit von vorher erzielten Verarbeitungsergebnissen.

Die von-Neumann-Architektur war somit der eigentliche Ursprung der Programmierung im heutigen Sinne: das Programm als eine im Speicher abgelegte Verknüpfung logischer Aussagen.


1 Zitat aus "Die faszinierende Welt der Informatik, S. 8
2 vgl. "Vorlesungen zur Geschichte der Mathematik", S.301

3 vgl. "Taschenbuch der Informatik S.58