Optimierende Übersetzer
LVA 185.A04, VU 2.0, ECTS 3.0, 2020 W
Optimierende Übersetzer
(zweistündige Vorlesung mit Übung; siehe auch
TISS/185.A04)
Haben Sie Interesse an einem geförderten
Auslandsstudium?
Informationen zu Fördermöglichkeiten finden Sie
hier.
Abhaltemodus: Online
Aufgrund geltender
COVID-19-Beschränkungen
stehen Hörsäle, Übungsgruppenräume und Rechnerlabore
im WS 2020/21 nur mit stark eingeschränkter Sitzplatzkapazität und
Belegbarkeitshäufigkeit zur Verfügung.
Die verbleibenden Raumressourcen sind vorzugsweise
Lehrveranstaltungen des 1. Studienjahrs zur Verfügung gestellt.
Für die Lehrveranstaltung Optimierende Übersetzer
ist deshalb ein Online-Abhaltemodus nötig!
Ziel:
Die aus der Unmittelbarkeit von
Präsenzveranstaltungen resultierenden
Vorteile möglichst
umfassend zu erhalten in Form von Echtzeitvideokonferenzen
als Online-Veranstaltungsformat.
Auszug aus einer Information von VR Matyas vom 31.07.2020:
- Wir möchten [...] darauf hinweisen, dass eine
Verschärfung der Sicherheitsmaßnahmen während der Sommermonate,
bzw. während des Semesters notwendig werden kann.
Änderungen im Lehrveranstaltungsablaufs- und -abhaltungsplan
(auch erheblicher Natur) sind daher jederzeit und auch kurzfristig möglich!
Veranstaltungstermine
Vorbesprechung und erster Vortrag finden am
Dienstag, den 06.10.2020, 15:15 - 16:45 Uhr,
ausschließlich
online in Form einer
Echtzeitvideokonferenz statt.
Die Zugangsinformation
für die Videokonferenz ist als TISS-Nachricht
ausgeschickt (01.10.2020) und kann in TISS unter
"News für Teilnehmer" eingesehen werden.
Alle Termine finden ausschließlich
online
in Form von Videokonferenzen statt.
Die Zugangsinformation
für die Videokonferenz ist als TISS-Nachricht
ausgeschickt (01.10.2020) und kann in TISS unter
"News für Teilnehmer" eingesehen werden.
Vorträge/Umgek. Klassenzimmer
| Ort/Modus
| Thema Vortrag
| Thema umgekehrtes Klassenzimmer/Übung
|
Di, 06.10.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil I, Kap. 1
(Leit- und Kontrollfragen I)
| n.a. / Vorbesprechung
|
Di, 13.10.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil I, Kap. 2
(Leit- und Kontrollfragen II)
| Teil I, Kap. 1
|
Di, 20.10.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil II, Kap. 3, 4
(Leit- und Kontrollfragen III)
| Teil III, Kap. 2
|
Di, 27.10.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil II, Kap. 5.1-6
(Leit- und Kontrollfragen IV)
| Teil II, Kap. 3, 4
|
Di, 03.11.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil II, Kap. 5.7-12
(Leit- und Kontrollfragen V)
| Übung
|
Di, 10.11.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil II, Kap. 6, 7, 8
(Leit- und Kontrollfragen VI)
| Teil II, Kap. 5
|
Di, 17.11.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil II, Kap. 9, 10
(Leit- und Kontrollfragen VII)
| Teil II, Kap. 6, 7, 8
|
Di, 24.11.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil III, Kap. 11
(Leit- und Kontrollfragen VIII)
| Übung
|
Di, 01.12.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil III, Kap. 12-12.1.7
(Leit- und Kontrollfragen IX)
| Teil II, Kap. 9, 10; Teil III, Kap. 11
|
Di, 08.12.2020
| Termin entfällt wg. Feiertags
|
|
|
Do, 10.12.2020, 14:15 - 15:45 Uhr
| Online (Videokonferenz)
| Teil III, Kap. 12.2-12.7,13
(Leit- und Kontrollfragen X)
| Übung
|
Di, 15.12.2020, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil IV, Kap. 14, 15
(Leit- und Kontrollfragen XI)
| Teil III, Kap. 12, 13
|
Di, 12.01.2021, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Teil V, Kap. 16
(Leit- und Kontrollfragen XII)
| Teil IV, Kap. 14, 15; Übung
|
Di, 19.01.2021, 15:15 - 16:45 Uhr
| Online (Videokonferenz)
| Übriggebliebenes, Zukurzgekommenes, Fragen jeder Art
|
|
Terminänderungen werden hier bekanntgegeben. Die Teil- und Kapitelangaben
beziehen sich auf die entsprechenden Teile und Kapitel der Lehrveranstaltungsunterlagen.
Anmeldung
Die Anmeldung zur Lehrveranstaltung erfolgt über
TISS/185.A04
und ist bis
Fr, 16.10.2020 (12:00 Uhr),
möglich.
Die Vorlesung vertieft in Theorie und Praxis das Gebiet
Programmanalyse und -optimierung, das ein wesentliches
Forschungsgebiet im Bereich
Programmiersprachen und
Übersetzerbau ist. Dabei spannt die Vorlesung den Bogen von
den theoretischen Grundlagen bis zur praktischen Anwendung und der
automatischen Generierung von Programmanalysen und Optimierungen. Im
Übungsteil werden die in der Vorlesung behandelten Themen in
theoretischen und praktischen Übungen eigenständig
vertieft. Für die praktischen Übungen wird dabei die
Static Analysis Tool Integration Engine SATIrE eingesetzt;
ein System, das diverse Werkzeuge für die Analyse und Optimierung von
objektorientierten Sprachen integriert, darunter den
Program
Analyzer Generator (PAG), für den auch eine Web-Demo
PAG/WWW verfügbar ist. Die
Web-Demo erlaubt einige Analysen für eine einfache WHILE-Sprache
ausführen zu lassen. Die in der Übung verwendete Umgebung
unterstützt die Visualisierungsmöglichkeiten von
PAG/WWW, stellt aber
darüberhinaus wesentlich umfangreichere Möglichkeiten für die
Analyse und Optimierung von prozeduralen und objektorientierten
Sprachen zur Verfügung.
Die Vorlesung behandelt insbesondere folgende Themen und deren
Realisierung mithilfe von SATIrE:
- Grundlagen und Anwendungen von Programmanalyse und Optimierung
- Datenflussanalyse (vorwärts, rückwärts,
existentiell, universell)
- Datenflussanalyserahmen (intraprozedural, interprozedural)
- Maschinenunabhängige Optimierungen, insbesondere syntaktische
und semantische Redundanzelimination
- Zeiger-, Alias- und Geflechtanalysen
- Analyse und Optimierung objektorientierter Programme
- Generatoren für Analyse und Optimierung, speziell
SATIrE
- ...
Die Studierenden erhalten so ein umfassendes Verständnis der
theoretischen Grundlagen und praktischen Anwendungen von
Programmanalyse und -optimierung im Übersetzerbau. Sie lernen,
die Möglichkeiten und Grenzen automatischer Analysen und Optimierungen
einzuschätzen und sind im Wissen darum in der Lage, über
Anwendungen im Übersetzerbau hinaus, Software so zu schreiben,
dass, wo möglich, Entwurfsziele wie Klarheit, Wartbarkeit,
Robustheit vor unnötigen Effizienzüberlegungen in den Vordergrund
treten.
Im Detail:
- Teil I: Einführung
- Motivation
- Klassische Gen/Kill-Datenflussanalysen
- Teil II: Intraprozedurale Datenflussanalyse
- Intraprozeduraler Datenflussanalyserahmen
- Gen/Kill-Datenflussanalysen reinspiziert
- Konstantenausbreitung und -faltung
- Partielle Redundanzelimination (PRE)
- PRE: Busy Code Motion
- PRE: Lazy Code Motion
- PRE: Sparse Code Motion
- PRE: Zusammenfassung, Ausblick
- Teil III: Interprozedurale Datenflussanalyse
- Grundlagen
- Funktionaler Ansatz
- Kontextinformationsansatz
- Teil IV: Erweiterungen, andere Sprachumgebungen
- Alias- und Heap-Analysen
- Optimierungen für objektorientierte Sprachen
- Teil V: Abschluss und Ausblick
- Zusammenfassung, Ausblick
- Literaturverzeichnis
- Anhänge
- Mathematische Grundlagen
- Flussgraphen, Darstellungspragmatik
- Implementierung von Busy und Lazy Code Motion
- Lazy Strength Reduction
- Ausgewählte Leseempfehlungen
- Flemming Nielson, Hanne Riis Nielson,
Chris Hankin.
Principles
of Program Analysis. Springer, (2nd edition,
452 pages, ISBN 3-540-65410-0), 2005.
- Y. N. Srikant, Priti Shankar. The
Compiler Design Handbook: Optimizations & Machine Code Generation,
CRC Press; 1st edition, (928 pages, ISBN: 084931240X), 2002.
- Steven S. Muchnick. Advanced Compiler
Design and Implementation, Morgan Kaufmann; (856 pages,
ISBN: 1558603204), 1997.
- AbsInt Angewandte Informatik GmbH.
The Program Analyzer Generator, User's Manual; (170 pages), 2002.
- Y. N. Srikant, Priti Shankar. The
Compiler Design Handbook: Optimizations & Machine Code Generation,
CRC Press; 2nd edition, (ISBN: 978-1-4200-4382-2), 2008.
Lehrveranstaltungs- und Übungsunterlagen
Lehrveranstaltung
|
Inhalt
|
Folien
|
Hinweise
|
Vorlesung
| Teil I bis Teil V, Literaturverzeichnis, Anhänge A-D
| pdf
| Stand:
12.01.2021
|
Vorbesprechung
| Motivation,
Organisatorisches
| pdf
| Stand:
06.10.2020
Termin
von Vorbesprechung und erster Vorlesung:
Di, 06.10.2020,
15:15 - 16:45 Uhr,
ausschließlich online in Form einer
Videokonferenz.
|
Übung
vom
|
Abgabetermin
|
Angabe
|
Hinweise und
Bemerkungen
|
Do, 10.12.2020
| Di, 12.01.2021
| Blatt 8.pdf
| Letztes Aufgabenblatt, Termine wg. Feiertags verschoben.
|
Di, 01.12.2020
| Do, 10.12.2020
| Blatt 7.pdf
| Abgabefrist wg. Feiertags verlängert.
|
Di, 24.10.2020
| Di, 01.12.2020
| Blatt 6.pdf
| Keine.
|
Di, 17.11.2020
| Di, 24.11.2020
| Blatt 5.pdf
| Tutorial
(Hinweise zur Benutzung von PAG).
Siehe Abgabehinweis auf Aufgabenblatt.
Rahmendatei da_solution_partial.optla
|
Di, 10.11.2020
| Di, 17.11.2020
| Blatt 4.pdf
| Keine.
|
Di, 03.11.2020
| Di, 10.11.2020
| Blatt 3.pdf
| Keine.
|
Di, 27.10.2020
| Di, 03.11.2020
| Blatt 2.pdf
| Keine.
|
Di, 20.10.2020
| Di, 27.10.2020
| Blatt 1.pdf
| Keine.
|
Abschlussprüfung, Beurteilung, Gesamtnote
Die Abschlussprüfungen zur Lehrveranstaltung sind mündlich.
Termine dafür werden individuell vereinbart und sollten
im Regelfall Ende Januar, Anfang Februar stattfinden.
Andere Termine sind nach Absprache möglich. Die Gesamtnote
ergibt sich je zur Hälfte aus Übungs- und Prüfungsnote.
Die Vorlesung schließt inhaltlich an die Lehrveranstaltung
185.A48
Übersetzerbau an und ergänzt die Lehrveranstaltungen
185.274
Weiterführender Übersetzerbau und
185.276
Analyse und Verifikation. Sie empfiehlt sich deshalb inbesondere
für Studierende, die im Bereich von Programmiersprachen und
Übersetzerbau einen besonderen Schwerpunkt setzen, eine
Seminararbeit, ein Praktikum oder ihre Diplomarbeit anfertigen
möchten.
Vortragender
Jens Knoop.