Prüfung Kurs 01888 DSL Engineering 2017 Prüfer Prof. Steimann Studiengang M.Sc. Informatik Note 1,0 Die Prüfung hatte eher den (angenehmen) Charakter eines lockeren Gesprächs. Eine Frage führte zur nächsten, teils erläuterte Prof. Steimann auch selbst weitere Details. Letzteres kann zunächst etwas verunsichern, hat aber offensichtlich keinen negativen Einfluss auf die Benotung. Einige Fragen (sinngemäß und unvollständig): • Was sind DSLs? • Haben Sie sich eines der drei Tools (Prolog, Xtext, MPS) näher angeschaut? Welches bevorzugen Sie? Warum? • Wie wird eine Sprache definiert? (Grammatik in Xtext und Prolog, Sprachkonzepte und Editoren in MPS) Reicht das? Was braucht man u.U. noch darüber hinaus? (Typsystem, Constraints, IDE-Unterstützung) Wie wird das definiert/implementiert? • Was kann in einer Xtext-Grammatik außer der Syntax spezifiziert werden? (Zuweisungen zum AST, Referenzen) • Welche Vorteile/Unterschiede bietet ein projektionaler Editor wie MPS? • Welche Features/Unterstützung erwartet man als Benutzer einer IDE für eine DSL? • Welchen Nutzen haben Attributgrammatiken (z.B. auf Basis von DCGs in Prolog)? • Wenn zwei Sprachen kombiniert werden, wenn z.B. SQL in Java eingebettet wird, welche Probleme können dabei auftreten? 1 Master Praktische Informatik: Modulprüfung DSL Engineering – 1888 Gedächtnisprotokoll aus 2016 Prüfer: Prof. Dr. Steimann Dauer: ca. 25 Minuten Note: 1.0 Allgemein Viele Fragen haben sich aufgrund meiner vorhergehenden Antworten ergeben. Die unten aufgelisteten Fragen sind deshalb sinngemäß und nicht wortwörtlich zu verstehen. Insgesamt habe ich zu den meisten Fragen sehr ausführlich geantwortet und so ggf. die ein oder andere Rückfrage/Detailfrage vermieden. Kein Anspruch auf Vollständigkeit. Insgesamt ist Herr Prof. Dr. Steimann ein sehr guter Prüfer, der wohlwollend benotet und es einem auch nicht übel nimmt, wenn man mal auf dem Schlauch steht. Fragen Was ist eine DSL? Welche Vorteile/Nachteile haben DSLs? Wann sollte man eine DSL einsetzen, wann eher nicht? Was ist eine Language Workbench? Welche Funktionen sollten geboten werden? Was ist der Unterschied zwischen Compiler und Interpreter? Wie funktioniert so ein Compiler? Was ist Syntax, was ist Semantik (allgemein)? Was ist Syntax und Semantik im Bezug auf DSLs? Welche Arten der Syntax gibt es? Was ist statische Semantik? Was ist der Hauptunterschied zwischen MPS und Xtext? Welche Vorteile/Unterschiede gibt es bei MPS und Xtext bzgl. der Notation/Syntax? Was sollte man beim Debugging von DSLs beachten? Ist es einfacher einen Debugger für eine interpretierte oder für eine compilierte DSL zu entwickeln? Warum? Was sind Attributgrammatiken? Weitere Fragen (wurden mir nicht gestellt, kann aber gut sein, dass danach gefragt wird) Was sind Grammatiken (inkl. Beispiel)? Was ist ein abstrakter Syntaxbaum (inkl. Beispiel)? Erklären Sie den Begriff XYZ aus dem Zusatztext! Wie haben Sie mit MPS/Xtext gearbeitet? Was hat Ihnen dabei gefallen, was hat Ihnen nicht gefallen? Was erwarten Benutzer von einer DSL?