|
Systematisches Programmieren 1972
|
über Wirth:
|
|
Erfinder von der Programmiersprache Pascal
Niklaus Wirth war seit 1968 ordentlicher Professor für Computerwissenschaften (später Informatik) der ETH Zürich und emeritierte im Ende April 1999. Niklaus Wirth diplomierte 1959 als Elektroingenieur an der ETH. Danach studierte er an der Université Laval, Kanada. Er doktorierte 1963 an der University of California in Berkeley mit Hilfe eines Stipendiums der Ford Foundation bei Professor H. D. Huskey. Von 1963 bis 1967 lehrte er als Assistenzprofessor an der Stanford University und danach an der Universität Zürich. 1968 wurde er zum Professor für Computerwissenschaften (später Informatik) an die ETH Zürich gewählt. Seine Interessen galten der Software-Technik und ihren Werkzeugen, vorab den Programmiersprachen. 1970 definierte er die Sprache Pascal, 1980 Modula-2 und 1988 Oberon. Er ist Konstrukteur des Rechners Lilith, 1986 des Rechners Ceres. Später befasste er sich mit dem Bau von Werkzeugen für den Schaltungsentwurf mit programmierbaren Bauteilen. Niklaus Wirth ist Mitglied der Association for Computing Machinery (acm), der Computer Society (IEEE), der Schweizerischen Akademie der Technischen Wissenschaften (SATW), der US National Academy of Engineering, der Berlin-Brandenburgischen Akademie und des Ordens Pour le mérite. Er ist Ehrendoktor der Universitäten von York, Linz, Laval (Quebec) und Novosibirsk, der Open University sowie der ETH Lausanne. 1984 erhielt er den acm Turing Award und 1987 den Computer Pioneer von IEEE. |
N. Wirth schreibt über grundlegende Texte von E. Dijkstra und C. Hoare, zwei Taylors der Informatik, die erkannt haben, dass Programmieren "wissenschaftlicher Behandlung und Darlegung zugänglich ist" und damit ein "Revolution" in der Programmierung bahnten: "Beide Artikel argumentieren überzeugend, dass viele Programmierfehler vermieden werden können, wenn man den Programmierern die Methoden und Techniken, die sie bisher intuitiv und oft unbewusst verwendeten, zur Kenntnis bringt" (Wirth, 1983, S. 7).
Die "Erfindung der Programmiersprache" besteht also in der Erfindung, den Steuermechanismus so zu konstruieren, dass seine Bedienung sprachhaft wird. Deshalb kann N.Wirth, der Erfinder von vielen Programmiersprachen, sagen: "Eine Programmiersprache stellt einen abstrakten Computer dar, der die Ausdrücke dieser Sprache verstehen kann" (Wirth, 1983,19).
”Programmieren ist eine konstruktive Tätigkeit” (Wirth,1983,10).
”N.Wirth (...) vergleicht das Programmieren weniger mit dem Schreiben in einer Sprache als vielmehr mit dem Konstruieren einer neuen Maschine auf der zugrundeliegenden Allzweckmaschine” (N.Wirth, zit.in: Ebeling,1988,169).
Damit sich nicht wieder neue quasi sekundäre Abbildungsnotwendigkeiten einschleichen konnten, wie sie sich in Flussdiagrammen und Struktogrammen andeuteten, wurde von Programmiersprachen zunächst hohe Selbsterläuterung gefordert, was Fortran und Cobol begründete. Noch weiter war die Erkenntnis fortgeschritten, als mit der wegweisenden Sprache Pascal von N.Wirth Programme mit möglichst wenig explizitem Dokumentationsbalast ermöglicht wurden. Pascal ist keineswegs eine leicht erlernbare Programmiersprache, wie etwa Duden schreibt (Duden, Informatik,1988,432), sondern verlangt im Gegenteil eine wesentlich tiefere gedankliche Durchdringung als etwa Basic oder Cobol. Natürlich lassen sich anspruchsvolle Aufgaben mit höher entwickelten Sprachen - wenn man sie beherrscht - einfacher lösen.
Wo die Zeichen der Maschinensprachen nicht dadurch wirklich "verzwischenmenschlicht" werden, dass sie als Anweisungen an Menschen gerichtet werden, sind sie keine Symbole, obwohl sie häufig "Symbole" genannt werden. So bezeichnet beispielsweise auch N.Wirth die Entitäten des Vokabulars seiner Sprache "Modula-2" mit dem Ausdruck "Symbole", obwohl er dafür bereits "Token" vereinbart hat und der Ausdruck "Symbol" auch für ihn zusätzliche Missverständnisse hervorzurufen scheint.
”Each sentence (programm) is a finite sequence of symbols from a finite vocabulary. The vocabulary of Modula-2 consists of identifiers, numbers, strings, operators, and delimiters. They are called lexical symbols or tokens, and in turn are composed of sequences of characters” (Wirth, 1978,5). Der von N.Wirth angefügte Hinweis ”(Note the distinction between symbols and characters)” ist sehr doppelsinnig.
Viele Informatiker bezeichnen die "Zeichen" des verwendeten Alphabets als "Zeichen" (characters) und die im Programm verwendeten, aus einem oder mehreren "Alphabetzeichen" bestehenden "Zeichen" als "Symbole". Eine vollständigere Redeweise, die ohne den Ausdruck "Symbol" auskommt, schlägt beispielsweise N.Wirth in der Grundlegung von Modula-2 vor (s. Anm. 155). Seine Programmtexte bestehen aus "tokens" (realisierte Vertreter einer Kategorie) eines "types" (Kategorie), die im "Vokabular" der Sprache enthalten sind. "Typen" sind - neben Namen, Zahlen und Zeichenketten, die natürlicherweise aus einem oder mehreren Zeichen bestehen - Operatoren und Begrenzer.
Von der Reduktion des Programmieraufwandes durch Programmiersprachen, welche IBM mit Fortran anstrebte, dürfte ein wesentlicher Anteil darin bestehen, dass die Programmierer, die dem Computer Befehle geben, praktisch nichts vom Computer wissen müssen. Was es alles zu wissen gäbe, erläutert N.Wirth anhand des vermeintlich einfachen Beispiels, wie die Position eines Objektes im Computer darzustellen ist. Das Problemchen wäre in modernen Computer ohne Programmiersprachen gewaltig. ”Deshalb kann von einem Programmierer kaum verlangt werden, dass er über die zu verwendende Zahlendarstellung oder gar über die Eigenschaften der Speichervorrichtung entscheidet. (...) In diesem Zusammenhang wird die Bedeutung der Programmiersprachen offensichtlich” (Wirth, 1983,18f).
Wirth, N.: Algorithmen und Datenstrukturen, Stuttgart 1983