|
|
Zur Themenwahl |
![]() |
Das Hardwarekonzept | |
In ´First Draft of a Report on The EDVAC` definierte J.v. Neumann 1945 ein Konzept für einen digitalen Universalrechenautomaten, das sich als so erfolgreich herausstellte, dass es auch heute noch die grundsätzliche Funktionsweise eines herkömmlichen Computers charakterisiert. Natürlich hat sich die technische Realisierung völlig verändert, aber die Prinzipien der Funktionsweise eines Computers sind im Wesentlichen gleich geblieben. (Siehe: Lindner,..., Planen, Entscheiden, Herrschen, rororo, 1984, S.98ff) Zur Veranschaulichung des Konzepts dient das folgende Blockschaltbild: |
Das Buch ist sehr |
![]() |
|
Wichtige Elemente der Darstellung von J.v.Neumann zur Beschreibung des Blockschaltbildes:Die folgenden Überlegungen befassen sich mit der Struktur eines schnellen digitalen automatischen Rechensystems und im Besonderen mit seiner logischen Steuerung... Die Instruktionen, die den Ablauf der Berechnungen steuern, müssen dem Gerät vollständig detailliert in einer Form gegeben werden, die das Gerät erfassen kann. Dabei ist die Verwendung eines Codes erforderlich, um die logische und algebraische Definition des zu lösenden Problems auszudrücken. Sind diese Instruktionen einmal dem Gerät mitgeteilt worden, muss es in der Lage sein, sie vollständig und ohne weiteren menschlichen Eingriff auszuführen. Am Ende der gewünschten Operationen muss das Gerät die Ergebnisse wieder in einer lesbaren Form ausgeben. |
Code |
Die Bestandteile der Maschine: Die Kontrolle über den Ablauf der Operationen kann am wirkungsvollsten durch ein zentrales Kontrollorgan ausgeführt werden. Falls das Gerät elastisch sein soll, d.h. für möglichst alle Zwecke verwendbar, dann muss unterschieden werden zwischen den spezifischen Instruktionen für ein bestimmtes Problem und den allgemeinen Kontrollorganen. Die ersteren werden mit der Eingabe der Instruktionen gespeichert (s.o). (Anmerkung: Eine entscheidende Eigenschaft: Daten und Befehle sind im Rechner gespeichert. ´Speicherprogrammierung`) Die letzteren sind durch bestimmte Funktionsteile, dem Steuerwerk des Gerätes repräsentiert. | Rechenwerk Speicher- Steuerwerk |
Das Gerät benötigt einen beträchtlichen internen Speicher. Dabei müssen die Informationen aus dem Speicher wiedergewinnbar sein. | Speicher |
Diese drei Bestandteile entsprechen den assoziativen Nervenzellen des menschlichen Nervensystems. Die Ein- und Ausgabegeräte entsprechen den sensorischen und motorischen Neuronen. Das Gerät muss die Fähigkeit haben, durch Ein- und Ausgabe den Kontakt mit einem spezifischen Medium, dem externen Speicher, aufrecht zu erhalten. |
externer Speicher |
Das Gerät muss Organe besitzen, um Informationen vom externen Speicher in Rechenwerk, Steuerwerk und interne Speicher zu übertragen. Diese Organe bilden seine Eingabe. Umgekehrt muss das Gerät Informationen aus diesen Teilen auf die Ausgabe übertragen können.Erst durch dieses Konzept eines speicherprogrammierbaren, flexiblen, universellen Rechenautomaten wurde es möglich, Maschinen zu bauen, die ihr Verhalten nach den Regeln der formalen Logik selber beeinflussen konnten. |
EingabeAusgabe |
Das Softwarekonzept | |
Auch bei der Entwicklung von Verfahren zur Formulierung von Instruktionen zur Lösung von Problemen mit dem Computer hat J.v. Neumann einen wesentlichen Anteil. J.v. Neumann hat eine logische Analyse zur Struktur von Lösungsverfahren (Lösungsalgorithmen - Programme) vorgelegt, die aufzeigt, welche Befehlstypen eine allgemeine Programmiersprache enthalten muss. Nur durch die Beachtung dieser Strukturen können auch für komplexe Probleme Lösungen in relativ knapper Form formuliert werden.Jede allgemeine Programmiersprache muss aus logischen Gründen diese Befehlstypen ´beherrschen`:
|
Lösungsalgorithmus Programm |
Es gibt Sprungbefehle, die den sequentiellen Ablauf der Berechnungen unterbrechen, indem zu irgendeinem Befehl gesprungen wird und an dieser Stelle das Programm fortgesetzt wird. Es gibt bedingte Sprungbefehle, d.h. der Sprung zu einem Befehl erfolgt nur, wenn eine Bedingung wahr ist. Im andern Fall wird weiter seqentiell vorgegangen. |
SequenzSprungbefehl bedingt. Sprungbef. |
Flussdiagramme erlauben es, diese Strukturen geometrisch zu veranschaulichen. An einem Beispiel soll das gezeigt werden. |
Flussdiagramm |
Problem | |
![]() |
|
Flussdiagramme waren in der Anfangszeit des Programmierens eine wichtige Möglichkeit, bei komplexen Programmen die Übersicht über Eigenschaften eines Programms zu behalten, denn die Eingabe erfolgte zunächst im Maschinencode. Dabei waren die einzelnen Daten und Befehle Folgen von Nullen und Einsen. Letztlich war das gesamte Programm nichts anderes als eine Folge von Nullen und Einsen.Beispiel für die Addition zweier Zahlen a und b: | Maschinencode |
Für die Addition zweier Zahlen a und b mussten die beiden Zahlen zunächst gespeichert werden. Dann mussten als 'Additionsprogramm' 3 Maschinenbefehle gespeichert werden. Der 1. Befehl bewirkte den Transport des Inhalts der Speicherzelle, die a enthält in den Akkumulator im Rechenwerk (Prozessor). Der 2. Befehl bewirkte den Transport der Zahl b in den Akkumulator und addierte b auf den Akkumulatorinhalt. Damit war c =a+b bestimmt. Im 3. Befehl wurde der Akkumulatorinhalt im Speicher gespeichert. Damit war das Problem gelöst. Das Programm konnte damit letztlich als Folge von Nullen und Einsen geschrieben werden:
|
|
![]() |
|
Ein großer Fortschritt wurde durch die Programmierung in Assembler erreicht. Hierbei wurden Teilprogramme (Subroutines) symbolisch bezeichnet und diese Symbole wurden dann zum Gesamtprogramm zusammengefügt. Aber auch auf dieser Programmierstufe musste sich der Programmierer nach den Maschinenbefehlen des speziellen Computers richten. Die Programme liefen nicht auf anderen Computern. Erst mit der Einführung von problemorientierten Programmiersprachen konnten Programme geschrieben werden, die erstens auf andere Computer übertragbar waren und außerdem in (nahezu) üblicher Weise auch vom Menschen lesbar waren. Damit kann für die die Addition zweier Zahlen im Programm in üblicher Weise a=b+c geschrieben werden. Damit diese symbolische Schreibweise für ein Programm aber vom Computer verarbeitet werden kann, muss es Übersetzungsprogramme für den speziellen Computer geben, die eine Übersetzung in Maschinencode durchführen. Solche Programme heißen Compiler. Im Laufe der Entwicklung entstanden viele problemorientierte Sprachen, die aber alle die Grundanforderungen von J.v. Neumann an eine Programmiersprache erfüllen. Beispiele für problemorientierte Programmiersprachen: Fortran, Cobol, Algol, C, Pascal, Delphi, C++, Basic,...,Javascript Für spezielle Aufgaben gibt es Spezialsprachen wie z.B. in Derive5. Mit dieser Programmiersprache werden wir uns beschäftigen. In dieser Sprache für mathematische Probleme gibt es ´Makrobefehle` für häufig benötigte mathematische Lösungsbausteine, so dass man oft mit kurzen Programmen Lösungsalgorithmen formulieren kann. Das oben behandelte Problem der Stabilisierung einer Würfelhäufigkeit kann (etwas verallgemeinert) in folgender Weise geschrieben werden
| AssemblerSubroutine problemorientierte Compiler |
![]() |
|
|
|
Zur Themenwahl |