Prüfung Kurs 01888 DSL Engineering

Werbung
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?
Herunterladen