Niklaus Wirth: Prinzipien der Programmiersprachen und
PASCAL Seminar Geschichte der Informatik
Christoph Grün
2
Überblick
Leben und Arbeit Nikolaus Wirths in der USA und der Schweiz
Übersicht über Generationen von Programmiersprachen
Wirths Verdienste an höheren Programmiersprachen
3
Nikolaus Wirth Geboren 1934 in Winterthur
in der Schweiz Interesse an Technik,
insbesondere Modellflugzeugen
Gymnasium Interesse an Elektronik,
Funkfernsteuerungen im Modellbau
4
1954-58 Studium der Elektrotechnik an der ETH Zürich, Diplom 1959
1959-60 Assistenzstelle Universität Quebec in Kanada
1960-63 Doktorand an der Universität Berkeley als Stipendiat
Mitarbeit in einer Gruppe an dem Bau erster Compiler
5
ALGOL 60 Report
Erste mathematisch klare und eindeutige Definition von Programmiernotation
13 Wissenschaftler aus aller Welt, darunter der Holländer v. Wiingaarden
Idee von mehr Ordnung in Programmiersprachen, Aufbau von wenigen, allgemeingültigen Konzepten
Dissertationsthema „Generalized Algol“
6
1963-67 Assistant Professor for Computer Science an der Stanford University
Weitere Arbeiten in Richtung seiner Doktorarbeit
Mitarbeit im Komitee für ALGOL 68 1967-68 Urlaubssemester an der
Universität Zürich
7
Rückkehr in die Schweiz
Seit 1968 Professor für Computerwissenschaften an der ETH Zürich
1970 entwickelt er PASCAL 1980 Informatik eigenständiger
Studiengang auf Druck der Industrie
8
1976-77 Urlaubssemester bei Firma Xerox in Palo Alto
Bau von unabhängigen Arbeitsplatzrechnern
In der Schweiz Bau eines eigenen Rechners
Schaffung weiterer Programmiersprachen
9
1984 Turing Award 1988 IEEE Computer Society, Computer Pioneer Award 1989 IBM Europe Science and Technology Prize 1988 1992 Member, Swiss Academy of Engineering 1994 Foreign Associate, US Academy of Engieering 1996 Orden Pour le merite 1999 ACM SIGSOFT, Outstanding Research Award in
Software Engineering 1999 Leonardo da Vinci Medal. Societe Europeenne
pour la Formation des Ingenieurs (SEFI) Zahlreiche Ehrendoktorate
10
Generationen von Programmiersprachen
1. Maschinensprache
2. Assembler
3. Höhere Sprachen:problemorientierte Sprachen (Fortran, Basic, Pascal)objektorientierte Sprachen (Prolog, Lisp, C++) oder lösungsorientierte (SQL)
11
Maschinensprache
0000 0101
0001 0001
0000 1000
0001 0010
...
0010 0010
0010 0001
0010 0001
0100 0000
0011 0000
0001 0000
z.B. Pascal
r1:=5;
r2:=8;
....
r0:=r1*r1+r2;
Assembler
CON 5
STR R1
CON 8
STR R2
...
LD R2
LD R1
LD R1
MUL
ADD
STR R0
12
13
Maschinensprache
0000 0101
0001 0001
0000 1000
0001 0010
...
0010 0010
0010 0001
0010 0001
0100 0000
0011 0000
0001 0000
z.B. Pascal
r1:=5;
r2:=8;
....
r0:=r1*r1+r2;
Assembler
CON 5
STR R1
CON 8
STR R2
...
LD R2
LD R1
LD R1
MUL
ADD
STR R0
Assembler Compiler/Interpreter
14
Arten von Übersetzern
Interpreter
Zeilenweise, immer neu übersetzte Ausführung des Programms
Compiler
Übersetzung in Selbstausführende Datei, die immer im Maschinencode vorliegt
15
Höhere Programmiersprachen
FORTRAN – Formula Translator
1954 für wissenschaftliche Rechnungen eingeführt
keine genaue Grammatik
verwirrend durch GOTO-Sprünge und Zeilennummern
16
COBOL1960 von John Backus vorgestellt
Verarbeitung von Daten, Texten und Buchungen
Textlastig
Ebenfalls keine strukturierte Programmierung
Millenium Bug
17
ALGOL 60
Urahn der prozeduralen Programmiersprachen
Einheitliche Notation zur Formulierung von Algorithmen
klar strukturierte Syntax, Konzept von SchleIFen und Blöcken
18
IF a < 0 THEN U+V ELSE IF a * b < 17 THEN U/V ELSE IF k <> y THEN V/U ELSE 0
a * SIN(omega * t)
IF q THEN n-1 ELSE n
BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY „HELLO WORLD!“;
WHILE TRUE DO
BEGIN
WRITE (F,*,E);
END;
END.
19
PASCAL
Übernahme elementarer Konzepte ALGOLS
Strenge Syntax
Eigene Datentypen, Mengen und Verbundtypen
Zeiger zur dynamischen Variablenerzeugung
Stapelmaschine mit lokalen Variablen
Vollwertige Stringroutinen
Ausgefeiltes Blockkonzept
20
Pascal weiterGute Lesbarkeit - Lehrsprache
Sehr erfolgreich mit etlichen Ablegern
Heute noch zu finden in Borland Delphi als Objekt-Pascal
Nachteile: Mangelnde Modularisierung zur Erstellung größerer Projekte
21
Modula – 21982 von Wirth vorgestellt
Neue Sprache mit Modulkonzept
(information hiding)
und getrennter Übersetzung von Modulen
Genaue Schnittstellendefinitionen
Wenig erfolgreich wegen Erweiterung Turbo Pascals durch Units
22
Oberon1986 von Wirth vorgestellt
Teil des Oberon-Betriebssystems
Einführung von Typerweiterung alsobjektorientierter Ansatz
Nutzung in der Lehre
23
Ordnung in die Programmierung
Von der Idee über die Programmiersprache zum Rechner
Vom Rechner über die Programmiersprache zum Verständnis der Idee
24
„Heute sehe ich mit Schrecken, wie viele Studenten bei uns Elektrotechnik studieren, die noch nie etwas selbst gebastelt haben. Genauso ist es in der Informatik: Viele haben noch nie selber ein Programm geschrieben.“
Vielen Dank für Ihre Aufmerksamkeit