Biografie
1934 geboren am 15. Februar, Schweiz
1959 Abschluss als Elektroingenieur
1963 Promotion, Berekley
1968 Professor an der ETH Zürich
1999 Emeritation
Entwicklungen
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
60 63 68 70 8274 86
ALGOL 60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
60 63 68 70 8274 86
➔ Backus Naur Form
➔ Strukturierte Programmierung
➔ Blockstruktur
➔ Rekursion
➔ Call by name
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Satz ::= Subjekt Prädikat Zusatz
Subjekt ::= “Peter“ | “Siegfried“
Prädikat ::= “arbeitet“ | “schläft“
Zusatz ::= “nicht“ | epsilon
Gültige Sätze:
– Peter schläft nicht
– Siegfried arbeitet
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
<block> ::= <unlabelled block> | <label> : <block>
<unlabelled block> ::= <block head> ; <compound tail>
<block head> ::= begin <declaration> | <block head> ; <declaration>
<declaration> ::= <type declaration> | <procedure declaration> | ...
<type declaration> ::= <type> <variable> | ...
<compound tail> ::= <statement> end | <statement> ; <compound tail>
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
begininteger zahl1, zahl2, summe;
procedure addiere(a,b); integer a,b;begin addiere:=a+bend
zahl1 := 3;Zahl2 := 255;
Summe := addiere(zahl1,zahl2);end
ISUMME = 0IZAHL1 = 0IZAHL2 = 255CALL SUM(SUMME,ZAHL1,ZAHL2)STOPEND
SUBROUTINE SUM(SUMME,A,B)SUMME = A + BRETURNEND
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
integer ergebnis;
integer procedure fak(n); integer n;begin if n=0
then fak := 1 else fak := n * fak(n-1)
end
Ergebnis := fak(5);
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
integer zahl;zahl:=10;
procedure addiere(cbn a:integer);begin
a:=a+10;end
addiere(zahl);
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
integer zahl;zahl:=10;
procedure addiere(cbn a:integer);begin
a:=a+10;end
addiere(zahl);
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Ergebnis: 20
Algol-60
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
integer zahl;zahl:=10;
procedure addiere(cbn a:integer); integer zahl;beginzahl:=5;a:=a+10;end
addiere(zahl);
Algol-60
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
integer zahl;zahl:=10;
procedure addiere(cbn a:integer); integer zahl;beginzahl:=5;a:=a+10;end
addiere(zahl); Ergebnis: 15
ALGOL W
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
60 63 68 70 8274 86
➔ Verbund (Record)➔ Zusammenfassung von Variablen unterschiedlicher
Datentypen
➔ Zeiger• Vermeidung unerwünschter Verhalten (vgl. call by name)• Programmierung verketteter Listen möglich
➔ Ereignisbehandlung
Algol W
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
record STUDENT( integer MATRIKEL_NR; string(20) NAME; string(100) Anschrift; );
reference(STUDENT) S;
Algol WAlgol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
class STUDENT{ int MATRIKEL_NR; String NAME; String Anschrift; }
record EXCEPTION( logical XCPNOTED; integer XCPLIMIT;
XCPACTION; logical XCPMARK; string(64) XCPMSG; );
reference(EXCEPTION) ENDFILE, OVFL, DIVZERO;
begin Integer ZAHL; ENDFILE := EXCEPTION(false,1,1,false,); READ(ZAHL); while ¬ XCPNOTED(ENDFILE) do begin WRITEON(ZAHL); READON(ZAHL) end
end.
Algol W
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
PASCAL
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
60 63 68 70 8274 86
➔ Sprache für den Lehrbereich➔ Sprache sollte leicht erlernbar sein➔ Sprachumfang möglichst einfach und gering
➔ Sprache für eigene Entwicklungen
Pascal
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
➔ Single-Pass-Compiler
➔ Verschachtelung von Prozeduren
➔ P-Code
Pascal
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
procedure Drucke();
procedure oeffneSchnittstelle();begin...end;
beginSchnittstelle();...end;
Pascal
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Pascal
Turbo Pascal
Delphi Free Pascal
Object Pascal
UCSD Pascal
Virtual Pascal
Pascal
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Modula-2
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
60 63 68 70 8274 86
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
OberonModula-2
➔ Sprache für den Lehrbereich➔ Sprache sollte leicht erlernbar sein
➔ Sprache für eigene Entwicklungen
➔ Modulkonzept
➔ Aufteilung großer Probleme in Teilprobleme
➔ Leichte Wartbarkeit von Systemen➔ Wiederverwendbarkeit von Systemteilen
➔ Module gegliedert in
➔ Programmmodule➔ Lokale Module➔ Globale Module
Modula-2
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Modula-2
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Module
Programm-Module
lokaleModule
globaleModule
Benutzer-Module
Basis-Module
Bibliotheks-Module
➔ Separate Erstellung und Übersetzung von Modulen
➔ Kommunikation nur über Schnittstellen➔ Definition➔ Implementation
➔ Programmierung „paralleler“ Prozesse
➔ Kein Goto
Modula-2
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
➔ Modula-2 Compiler:
http://www.modula2.org/source/
Modula-2
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
➔ Basiert auf der Single-user workstation Alto
➔ Innovationen➔ Grafikfähiger Bildschirm➔ Fenstertechnologie➔ Maus
➔ Nutzen➔ Arbeitsinstrument zur Verwaltung des Instituts➔ Lehrzweck
➔ M-Code direkt ausführbar
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
OberonLilith
➔ Betriebssystem der Lilith
➔ Realisierung quasi-paralleler Prozesse
➔ System und Programme in Modula-2 geschrieben• Software und Hardware aufeinander abgestimmt
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
OberonMedos-2
K1 K2Parallele Prozesse als Koroutinen:
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
OberonMedos-2
Oberon
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
60 63 68 70 8274 86
Oberon steht für
➔ Betriebssystem
➔ Systemsprache
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Oberon
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
OberonProgrammiersprache
➔ Sprache für den Lehrbereich➔ Sprache sollte leicht erlernbar sein
➔ Sprache für eigene Entwicklungen
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
OberonProgrammiersprache
➔ Vereinfachung der Schnittstellendefinitionen
MODULE Ausgabe;
FROM InOut IMPORT WriteString, WriteLn; (* nicht qualifizierter Import *)
IMPORT RealInOut; (* qualifizierter Import *)
BEGIN WriteString("Hallo!"); WriteLn; RealInOut.WriteReal(1.0, 0); END Ausgabe.
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
MODULE Ausgabe;
IMPORT Write;
BEGIN Write.String("Hallo!"); Write.Ln; Write.Real(1.0, 0); END Ausgabe.
OberonProgrammiersprache
MODULE Ausgabe;
FROM InOut IMPORT WriteString, WriteLn; (* nicht qualifizierter Import *)
IMPORT RealInOut; (* qualifizierter Import *)
BEGIN WriteString("Hallo!"); WriteLn; RealInOut.WriteReal(1.0, 0); END Ausgabe.
MODULE Ausgabe;
IMPORT Write;
BEGIN Write.String("Hallo!"); Write.Ln; Write.Real(1.0, 0); END Ausgabe.
OberonProgrammiersprache
- Vermeidung von Konflikten durch gleichnamige Prozeduren -
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
OberonProgrammiersprache
➔ Typerweiterung➔ Erweiterbare Records
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
Figurx y
Rechteckx y
Kreisx y
b h r
TYPE Figur = RECORD x, y: INTEGER; (* center *) END;
Rechteck = RECORD (Figur) b, h: INTEGER; END;
Kreis = RECORD (Figur) r: INTEGER; END;
Algol-60
Euler
Algol-W Pascal Modula-2Modula Oberon
Liltith
Medos-2
Ceres
Oberon
OberonProgrammiersprache
Zusammenfassung
Algol W – Algol-NachfolgerStrukturierte Programmierung
Pascal – Strukturierte Programmierung
Modula(-2) – Modularisierung
Oberon – Objektorientierung
Rudolf HerschelFORTRAN Systematische Darstellung für den Anwender
Edsgar DijkstraA Primer of ALGOL 60 Programming
Walter BosseEinführung in das Programmieren mit ALGOL W
Quellen