Domain Specific Languages
Jetzt so kurz vor Weihnachten beschäftigt mich ein interessantes Thema, welches das Potenzial hat die Softwareentwicklung an einigen Stellen stark zu vereinfachen: DSL, genauer gesagt Domain Specific Languages. Darunter versteht man eine auf ein Problem zugeschnittene Sprache, wobei Sprache hier nicht unbedingt eine typische Text-Sprache wie Java sein muss. Es kann sich genauso gut um eine grafische Repräsentation handeln.
Jeder von uns hat schon mit einer DSL gearbeitet, wir haben es nur nicht mitbekommen
. Denn genau genommen sind SQL als auch RegEx zwei DSLs, die besonders ausdrucksstark sind in ihrer Domäne. Mit einer RegEx kann ich String-Muster definieren, deren Programmierung in einer “normalen” Programmiersprache dutzende Zeilen benötigen würde. Für Abfragen aus relationalen Datenbanken eignen sich RegEx aber natürlich nicht, daher sagt man die Sprache ist auf eine Domäne – ihr Arbeitsgebiet – beschränkt.
In finde besonders die grafischen DSLs sehr spannend, da man mit ihnen komplizierte Zusammenhänge übersichtlich als Grafik präsentieren kann. Und wir wissen ja auch schon lange, dass eine Grafik mehr sagt als 1000 Codezeilen
. In der Praxis kann man dann mittels eines Designers z.B. in Eclipse oder Visual Studio eine DSL nutzen, um beispielsweise Architekturen, Prozesse oder Automaten zu modellieren. Alles ist möglich!
Einige prominente Beispiele wären die UML mit entsprechend gekoppelter Codeerzeugung oder auch die Windows Workflow Foundation. Beide sind jedoch noch recht allgemein, es sind noch viel spezifischere DSLs denkbar. Man könnte z.B. grafisch die Übergänge zwischen Spielezuständen modellieren so wie es in dem Projekt sharpludus gemacht wird. Ebenfalls sehr speziell aber leistungsfähig sind die DSL Tools von Microsoft mit denen man eigene DSLs erzeugen kann. Diese sind im Visual Studio SDK enthalten und bringen einen grafischen Designer mit, mit dem man eigene grafische Designer bauen kann. Das ganze funktioniert wunderbar, sodass man innerhalb weniger Stunden – mit ein bischen Übung – leistungsfähige Tools bauen kann.
Das Diagramm kann dann per Knopfdruck (oder automatisch) in eine Textform gebracht werden. In Visual Studio steht dazu eine Text Template Engine zur Verfügung mit der man XML als auch Programmcode erzeugen kann. Die DSL Tools nutzen dieses Konzept selber um tausende Codezeilen für die Integration und Umsetzung des Designers in die Entwicklungsumgebung zu kreieren. Man könnte aber natürlich auch statt Code einfach HTML erzeugen zur Dokumentationszwecken so wie es das Projekt Feature Model DSL macht.
Ich werde auf jeden Fall mal selber eine DSL bauen, wenn ich dazu mehr Zeit habe und die richtige Idee. Denn lohnen tut sich soetwas meist erst wenn man die DSL in mehreren Produkten nutzen kann.

Datenmodellierung mit XML Schemata | Leckeres aus der IT-Welt 17:24 on 27.12.2008 Permalink
[...] Designer arbeitet. Essentiell ist dann natürlich außerdem die Codegenerierung. Aber mit den DSL-Tools sollte man sowas ja alles schnell bauen [...]