Motivation
Einen Compiler zu entwickeln macht große Freude. Aber selbst wenn Sie dies (noch) nicht beabsichtigen, ist eine Auseinandersetzung mit der Disziplin des Compilerbaus von großem Nutzen:
- Sie werden immer wieder vor der Herausforderung stehen Parser für selbstdefinierte Datei- bzw. Datenformate zu programmieren. Dies ist ein wichtiges Teilgebiet des Compilerbaus. Wir lernen Tools und Ansätze kennen, die Ihnen den größten Teil der Arbeit abnehmen. Ganz ohne ChatGPT. Dafür aber zuverlässig korrekt.
- Den Übersetzungsprozess vom Programmcode in den Maschinencode zu verstehen, macht Sie zu einem besseren Programmierer:
- Sie verstehen, welche Fehler zur Compilezeit und welche erst zur Laufzeit erkannt werden können. Dies hilft Ihnen Programme so zu entwickeln, dass Fehler möglichst schon zur Compilezeit gefunden werden können.
- Sie entwickeln ein besseres Verständnis für die Bedeutung, d.h. für die Semantik von Programminstruktionen: Wie werden diese auf Maschinenebene tatsächlich ausgeführt? Dies hilft Ihnen Fehler bei der Programmierung, die aus einem Mangel an Verständnis für die Semantik resultieren zu vermeiden.
- Sie verstehen wie der Compiler Optimierungen an Ihrem Programm vornimmt und wie dies die Ausführung ihres Codes auf dem Prozessor beeinflusst. Dies hilft Ihnen effizientere Programme zu entwickeln.
- Sie verstehen den Pfad von der High-Level Programmiersprache bis zur Prozessorarchitektur, insofern das Zusammenspiel von Elektrotechnik und Informatik
- Sie verstehen welche Informationen im Prozess der Übersetzung eines Programmcodes in Maschinencode verloren gehen, weshalb also Reverse Engineering, d.h. die Umkehrung des Übersetzungsprozesses, die Rückgewinnung der Programmlogik aus dem Maschinencode schwierig und allgemein unmöglich ist, aber auch wie und wo man dennoch ansetzen kann um wesentliche Elemente der Programmlogik auf Basis des Maschinencodes zu verstehen
- Sie verstehen endlich warum und wofür Sie sich durch das Fach Theoretische Informatik gequält haben
- Sie entwickeln eine Motivation sich weitergehend mit den Themen Programmanalyse und Programmverifikation zu beschäftigen.
Praktikum: Schritt-für-Schritt Entwicklung eines Compilers für eine einfache Programmiersprache.
Inhalt
- Grundlagen
- Lexikalische Analyse
- Syntaktische Analyse
- Semantische Analyse
- Zwischencode-Erzeugung
- Code-Generierung
- Weiterführende Themen
Literatur
- A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman: Compilers: Principles, Techniques, and Tools, Addison-Wesley Longman, 2nd ed. 2006.
- W. Appel, M. Ginsburg: Modern Compiler Implementation in C, Cambridge University Press, 2004
- W. M. Waite, G. Goos: Compiler Construction, Springer, 1985.
- U. Meyer, Grundkurs Compilerbau, Rheinwerk Verlag, zweite Auflage 2024
- C. Wagenknecht, M. Hielscher, Formale Sprachen, abstrakte Automaten und Compiler, Springer 2022