Abstract April

This commit is contained in:
Stefan Schlott 2019-01-06 22:46:25 +01:00
parent f5e37f71f4
commit 80bf582355

View file

@ -10,5 +10,36 @@ location:
location: bib location: bib
public: true public: true
--- ---
(Details folgen) Sprachen sind seit jeher das Rückgrat des Software Engineering:
Programmiersprachen, Modellierungssprachen, Spezifikationssprachen.
Sprachen sind nützlich, da sie es den Entwicklern erlauben, bestimmte
Problemstellungen oder Lösungsalgorithmen möglichst gut auszudrücken.
"Gut" kann bedeuten: möglichst kompakt, möglichst leicht lesbar,
zugänglich für Nicht-Programmierer in interdisziplinären Kontexten, oder
geeignet für bestimmte (semi-)formale Analysealgorithmen. Leicht
vereinfachend kann man sagen: je breiter das Anwendungsspektrum einer
Sprache, desto schlechter erfüllt sie viele dieser Kriterien.
Ein vielversprechender Ansatz besteht daher darin, eine Sprache für
einen ganz konkreten Einsatzzweck zu bauen, sogenannten
domänenspezifische Sprachen: für Steuergesetze, für medizinische
Algorithmen, für die Konfiguration komplexer technischer Geräte oder die
Performanceanalyse von eingebetteten Systemen.
Der Haken dabei? Man muss eine neue Sprache bauen. Die Lösung?
Domänenspezifische Sprachen zur Sprachdefinition. Über die letzten Jahre
haben sich die dafür notwendigen Werkzeuge so weiterentwickelt, dass der
Aufwand zum Bau einer Sprache problemlos im Rahmen eines normalen
Softwareenticklungsprojektes unterzubringen ist. Diese Werkzeuge,
Language Workbenches, unterstützen die Definition aller relevanten
Sprachaspekte, von Struktur über Typsystem bis zu Interpretern,
Compilern und komfortablen IDEs. Sie erlauben modulare Spracherweiterung
und -komposition sowie die Mischung von Syntaxformen wie Text, Tabellen,
und Diagrammen.
In diesem Vortrag zeige den Sprachbau mit einer solchen Language
Workbench, dem Open-Source Werkzeug MPS von Jetbrains. Neben der
Live-Demo einer Spracherweiterung zeige ich ein paar Beispiele für DSLs
aus dem industriellen Umfeld. Ich gehe dabei auch auf die Integration
mit Verifikationwerkzeugen wie SMT Solvern und Model Checkern ein.