Werkzeuge für domänenspezifische Sprachen

Seite 6: Was sind DSLs?

Inhaltsverzeichnis

Statt zu versuchen, eine geschlossene Definition des Begriffs "Domänenspezifische Sprache" zu liefern, werden DSLs im Folgenden mit einer Reihe anderer Techniken verglichen und die Unterschiede aufgezeigt.

DSL versus Programmiersprache: Mit einer Programmiersprache lassen sich beliebige Sachverhalte beschreiben und Probleme lösen, sofern es dafür Algorithmen gibt. Programmiersprachen sind daher sehr mächtig und allgemein anwendbar. DSLs sind für die Beschreibung von Sachverhalten und Algorithmik einer bestimmten Fachdomäne optimiert. Daher sind sie in aller Regel einfacher und kleiner. Sie sind oft nicht Turing-vollständig, sondern dienen dazu, domänenspezifische Konzepte präzise und für Tools verarbeitbar zu beschreiben. Codegeneratoren oder Interpreter führen solche Modelle dann aus.

DSL versus XML: Man könnte argumentieren, dass sich mit XML prinzipiell beliebige domänenspezifische Strukturen und Verhaltensweisen beschreiben lassen. In gewisser Weise handelt es sich bei einem XML Schema um ein Mittel zur Sprachdefinition. Der Haken bei der Sache ist allerdings, dass man die Notation (also die konkrete Syntax) nicht anpassen kann. Alles sind geschachtelte und sich gegenseitig referenzierende spitze Klammern. Das hat zur Folge, dass man mit XML nicht wirklich für den Menschen gedachte Modelle und Programme beschreiben kann (auch wenn dies ursprünglich mal die Idee von XML war). DSLs unterscheiden sich also vor allem dadurch von XML, dass sich eine beliebige (grafische, textuelle oder anderweitige) Notation definieren lässt.

DSL versus UML: Auch UML ist eine Modellierungssprache und seit Version 2 so formal definiert, dass man aus UML-Modellen prinzipiell ausführbare Systeme generieren kann. Allerdings ist UML nicht wirklich domänenspezifisch. Man könnte sagen, die Domäne der UML ist "Softwareentwicklung". Wie mit Programmiersprachen lassen sich damit prinzipiell beliebige Systeme beschreiben. Doch erreicht man nicht die Vorteile der Domänenorientierung. Man kann UML über Profile zwar anpassen, in existierenden Tools sind diese Anpassungsmöglichkeiten aber beschränkt. Außerdem lassen sich durch Profile nur Dinge hinzufügen und nicht wegnehmen (man kann sie nur durch Constraints verbieten). (ane)