Vorlesungsankündigung
(Wintersemester 1997/98)
Analyse von Programmen
Prof. Dr. Helmut Seidl - Übersetzerbau - Informatik
Compiler sollen für ihre Eingabeprogramme nicht nur korrekten Code
erzeugen, sondern auch solchen, der möglichst effizient auf der
jeweiligen Zielmaschine ausführbar ist. Geschickte Codeerzeugung
benötigt wiederum möglichst präzise Informationen über das jeweils
zu übersetzende Programm. Wei\3 man zum Beispiel, da\3 sich die
Bedingung einer {\bf if}--Anweisung stets zu {\bf True} auswertet,
kann man die Abfrage einsparen und die gesamte Anweisung durch
ihren {\bf then}--Teil ersetzen. Ähnliche Optimierungen gibt es
auch bei funktionalen oder logischen Programmen. Dabei gilt ganz grob
die folgende Regel: je ``deklarativer'' die Programmiersprache,
desto umständlicher ist der naiv erzeugte Code, desto wichtiger sind
folglich gute Analysen.
Die Vorlesung gibt eine Einführung in
Verfahren, wie der Compiler automatisch Informationen über ein Programm gewinnen kann. Anhand einer Reihe von Beispielen erläutern wir die
Besonderheiten der Analysemethoden für imperative, funktionale und logische Programmiersprachen. Einerseits studieren wir dabei die algorithmischen
Eigenschaften der vorgestellten Verfahren. Andererseits interessieren
wir uns für Möglichkeiten, ihre Korrektheit zu beweisen. Zu diesem
Zweck werden wir ein generelles Schema kennenlernen, das es gestattet,
leicht neue korrekte Analysen zu erfinden.
Vorlesung:
Mittwoch 12-14, E 44
Donnerstag 12-14, E 44
Übung:
Donnerstag 14-16, HS 7