Compiler-CampusMinden / CB-Vorlesung-Bachelor

Lecture "Compilerbau" (B.Sc.)
https://www.hsbi.de/elearning/goto.php?target=crs_1089779&client_id=FH-Bielefeld
Creative Commons Attribution Share Alike 4.0 International
1 stars 0 forks source link

Weiterentwicklung des Moduls (Bachelor) #243

Open cagix opened 8 months ago

cagix commented 8 months ago

Das Modul wird im Winter 2024 vom 5. Semester Bachelor (Wahl) in das 3. Semester Bachelor (Pflich) rutschen.

Die Studis sind entsprechend noch früher in ihrer Entwicklung (fachlich, persönlich) und wir haben dann auch alle Studis, unabhängig vom Interesse an CB.

Aktuell gehen wir klassisch die Bausteine der Pipeline durch und betrachten pro Block ein bis mehrere Ideen/Konzepte. Im Frontend beschränken wir uns auf CFG und ANTLR, im Backend betrachten wir nur einen AST-basierten Interpreter plus einen eigenen Builder.

Das Vorgehen skaliert recht gut, i.d.R. ist ein Thema äquivalent zu einer Sitzung, man kann Themen leicht austauschen. Nachteil ist, dass man einen relativ langen theoretischen Vorlauf braucht, bis die Studis etwas praktisch umsetzen können und dass sie erst gegen Ende des Semesters eine lauffähige Pipeline in den Händen halten.

Im (Online-) Buch und Kurs Essentials of Compilation wird das anders gemacht: Nach einer kurzen initialen Phase (Parsing) wird eine einfache komplette Pipeline für Integer-Expressions aufgebaut. In der folgenden Sitzung wird diese ergänzt um Variablen, danach Funktionen, Klassen, ... Dabei werden dann die jeweils relevanten Konzepte (Semantische Analyse, Typprüfung/-inferenz, Optimierung, Registerzuweisung, Garbage Collection, ...) schrittweise in den jeweiligen Lektionen untergebracht. (Video ACM SIGPLAN / ICFP'23)

Dadurch hat man einen angenehmen Hands-on-Ansatz und jede Woche einen lauffähigen Interpreter/Compiler in der Hand und erweitert die Konzepte quer über die Compiler-Pipeline. Zusätzlich kommen hier Aspekte verschiedener Programmierparadigmen mit rein.

Ein weiterer interessanter Aspekt: Welche Sprache wollen wir parsen/interpretieren/kompilieren, und in welcher (Implementierung s-) Sprache soll es umgesetzt werden?

Auch interessant: CSE 40243 - Compilers and Language Design mit Online-Buch

Siehe auch https://github.com/Compiler-CampusMinden/CB-Vorlesung-Master/issues/154

cagix commented 8 months ago

@bcg7 Was hältst Du davon? Ich glaube, das wäre in erster Näherung nur eine Art Umstrukturieren unseres Materials.