Fragenkatalog - FernUni Hagen

Werbung
Fragenkatalog















Was sind DSLs?
o Definition
o Teil von Softwaresprachen / formale Sprachen
o Domäne
o Abgrenzung zu GPLs / Unterschiede
o Interne / externe DSLs
o Architektur: Sprache, Execution Engine, Plattform
o Konkrete / abstrakte Syntax
o Konkreter Syntax liegt kontextfreie Grammatik zugrunde
o Interpreter / Generator / Transformation
o Werkzeugunterstützung
Nennen Sie Beispiele für DSLs und GPLs.
o GPLs nicht nur für eine Problemklasse geeignet
o GPLs lassen Verwendung in mehreren Bereichen zu
Wodurch unterscheiden sie sich?
Was sind interne bzw. externe DSLs?
o Interne DSLs verwenden Host-Sprache
o Externe DSLs sind eigenständige Programmiersprachen
Worin besteht der Unterschied zwischen Interpreter, Generator und Transformationen?
Welche Gründe gibt es für die Nutzung von DSLs?
o Vorteile aufzählen
o 9 Vorteile
Gibt es auch Nachteile?
o Nachteile aufzählen
o 8 Nachteile
Wo kann man DSLs einsetzen?
o Anwendungsgebiete aufzählen
o 7 Anwendungsgebiete
Erklären Sie den Unterschied zwischen konkreter und abstrakter Syntax.
Welche Datenstruktur verwendet man für die abstrakte Syntax?
o Abstract Syntax Tree
o Graph mit Querverweisen
Wie sieht der AST von "var x: int = 2 * 42" aus?
Ist die konkrete Syntax immer textuell? Welche Formen gibt es noch? Kann man sie
zusammen verwenden?
Was ist eine kontextfreie Grammatik?
Es gibt Parser-basierte Editoren und projektionale Editoren für DSLs. Erklären Sie den
Unterschied zwischen beiden.
Welche Vor- und Nachteile habe beide Ansätze?
o Komposition von Sprachen
o Interaktion mit Editoren
o Werkzeugunterstützung
1

















In projektionalen Editoren kann die Eingabe von "2+3*4" zum Ergebnis "20" führen. Wie
ist dies zu erklären?
Für den Entwurf von DSLs haben sich verschiedene Entwurfsrichtlinien entwickelt. Welche
sind das? Beschreiben Sie sie.
o 7 Entwurfsrichtlinien
Was sind sprachliche Abstraktionen und was sind sprachinterne Abstraktionen?
Es gibt statische und dynamische Semantik. Was umfassen sie?
o Statisch: Typsystem, Constraints
o Dynamisch: Execution Engine, d.h. Interpreter, Generator, Transformation
Erzählen Sie etwas über Constraints und geben sie ein paar Beispiele.
o Meist ungerichtet
o Constraint-Systeme
o Constraint-Solver
Welche Vor- und Nachteile ergeben sich bei Interpretern und
Transformationen/Generatoren?
Sprachen und können durch Komposition wiederverwendet werden. Welche Arten von
Sprachkompositionen gibt es? Beschreiben Sie die Unterschiede.
o Wiederverwendung
o Einbettung
o Referenzierung
o Erweiterung
Welche Konsequenzen ergeben sich daraus für die konkrete Syntax, die Generatoren /
Transformationen und Typsysteme?
Welche gemeinsamen Paradigmen hinsichtlich der Struktur von DSLs existieren?
o 7 Paradigmen
Listen sie die aus dem Kurs bekannten Verhaltensparadigmen auf und erläutern Sie sie kurz.
Welche Auswirkungen hat die Wahl des Paradigmas auf die Analysierbarkeit und das
Debugging?
o 6 Paradigmen
Was sind definite Klauselgrammatiken?
Bei der Verwendung von Parsern werden Grammatiken für die Definition der konkreten
Syntax eingesetzt. Welche Probleme können einige Grammatiken verursachen?
o Nicht alle Grammatikklassen sind von allen Parsern übersetzbar
o Linksrekursive Grammatiken können nicht von LL(k) Parsern übersetzt werden
o Mehrdeutigkeit (Unterschiedliche ASTs möglich; Operator-Präzedenz)
o Komposition von eindeutigen Grammatiken kann zu Mehrdeutigkeiten führen
Wie kann man diese Probleme beheben?
o Linksrekursion durch Linksfaktorisierung beseitigen
o Mehrdeutigkeit durch Ändern der Produktionsregeln beseitigen (ggf. neue
Produktionsregeln einführen)
Erklären Sie Attributgrammatiken.
Was versteht man unter Scoping und Linking?
Gibt es da Unterschiede zwischen Parser-basierten und projektionalen Editoren?
Wie sind Scopes üblicherweise aufgebaut?
2














Was sind Typsysteme und wofür werden sie benutzt?
o 4 Aufgaben von Typsystemen
Auf welche Arten können Typen berechnet werden? Beschreiben Sie sie.
o Rekursion
o Unifikation
o Pattern Matching
Für die Generierung von Code aus DSLs wird bei XText eine Template Sprache eingesetzt.
Was ist das besondere an einer Template Sprache?
Welche Möglichkeiten sollte eine Template Sprache
MPS verwendet einen anderen Ansatz für die Generierung. Worin besteht der Unterschied,
wie funktioniert er und welche Vor- und Nachteile bringt der Ansatz mit sich?
Expressions und Statements sind grundlegende Elemente von DSLs. Wie sieht hier der
übliche Ansatz bei der Implementierung eines Interpreters aus? Worin unterscheiden sich
Expressions und Statements?
o Rekursive Methodenaufrufe
o Überladene Methoden
Wie werden z. B. Funktionsaufrufe in DSLs in Interpretern implementiert?
o Environments
o Call Stacks
Für eine produktive Nutzung von DSLs werden IDEs eingesetzt, die verschiedene Dienste /
Hilfsmittel zur Verfügung stellen. Welche Hilfsmittel sind das?
Die Korrektur von Syntaxfehlern und die Vervollständigung von Sätzen in Prolog basieren auf
der Verwendung von (Gleichheits-)Constraints. Welche Idee liegt dem zugrunde?
Welche Bestandteile von DSLs können wie getestet werden?
o Syntax
o Constraints
o Semantik
o IDE Services
Das Testen der Syntax in MPS macht eigentlich keinen Sinn. Warum nicht? Wann könnten
dennoch Syntaxfehler auftreten?
Welche Ansätze gibt es, um die Execution Engine (dynamische Semantik) zu testen?
o Unit Tests auf GPL-Ebene
o Unit Tests auf DSL-Ebene
Wie unterscheidet sich das Debugging zwischen Interpreter, Debugger und Source-LevelDebugger?
Welche Mehrdeutigkeiten können bei Spracherweiterungen auftreten und wie löst MPS
diese Konflikte?
o 3 Fälle
3
Herunterladen