Vorlesungsankündigung
(Wintersemester 1999/2000)
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ß man zum Beispiel, dass sich die
Bedingung einer if-Anweisung stets zu True auswertet,
kann man die Abfrage einsparen und die gesamte Anweisung durch
ihren thenTeil 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, objektorientierte 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.
Die Vorlesung ist dabei nicht nur theoretisch ausgelegt.
Vielmehr wird die Möglichkeit geboten, mit verschiedenen
Analyse-Problemen und -Verfahren zu experimentieren.
Zu diesem Zweck stehen
Analyse-Generatoren zur Verfügung, die das allgemeine
Schema für konkrete Programmiersprachen umsetzen.
Vorlesung:
Montag 12-14, V E 45
Dienstag 12-14, V 302
Übung:
Mittwoch 12-14, V 301