Domänenspezifische Programmiersprache


Domänenspezifische Programmiersprache

Eine domänenspezifische Sprache (engl. domain-specific language, DSL) ist eine formale Sprache, die speziell für ein bestimmtes Problemfeld (die Domäne) entworfen und implementiert wird. Beim Entwurf einer DSL wird man bemüht sein, einen hohen Grad an Problemspezifität zu erreichen: die Sprache soll alle Probleme der Domäne darstellen können und nichts darstellen können, was außerhalb der Domäne liegt. Dadurch ist sie durch Domänenspezialisten ohne besonderes Zusatzwissen bedienbar.

Das Gegenteil ist eine universell einsetzbare Programmiersprache, wie C und Java, oder eine universell einsetzbare Modellierungssprache, wie UML.

Inhaltsverzeichnis

Vorteile

Zu den Vorteilen einer DSL gegenüber der Nutzung einer allgemeinen Programmier- oder Spezifikationssprache zählen

  • weniger Redundanz
  • deklarative Beschreibung eines Sachverhaltes
  • bessere Lesbarkeit
  • weniger technische Code
  • domänenspezifische statische Validierung (nur externe DSLs)
  • leichte Erlernbarkeit, aufgrund des beschränkten Umfangs

Auch Endbenutzer können DSLs verwenden, da diese leichter erlernt werden können als universell einsetzbare Programmiersprachen. Man spricht hier von End User Development.

Nachteile

  • Aufwand der Erlernung einer neuen Sprache bei einem verhältnismäßig eingeschränkten Anwendungsbereich der Sprache
  • Aufwand der Implementierung und Pflege der neuen Sprache und der Tools, die zur Definition der Sprache benötigt werden
  • Schwierigkeit der Findung des geeigneten Abstraktionsniveaus

Arten von DSLs

Man unterscheidet zwischen internen (eingebetteten) DSLs und externen DSLs.

Interne / eingebettete DSLs (internal DSL)

Eine interessante Untermenge domänenspezifischer Sprachen stellen die internen DSLs (engl. internal DSL oder auch embedded domain specific language) dar, die wesentliche Komponenten der Sprachimplementierung ihrer Wirtsprache nutzen. Dadurch sinkt der Implementierungsaufwand. Eine interne DSL ist immer eine echte Untermenge einer generelleren Sprache.

Prominente Vertreter von internen DSLs sind:

  • Rake (das make für Ruby)
  • Xunit Frameworks
  • ein domänen-spezifisches UML2-Profil (Stereotypen, Stereotypeigenschaften und Constraints)
  • ein domänen-spezifisches XML-Schema (Elemente, Restriktionen)

Externe DSLs (external DSL)

Eine externe DSL ist eine von grundauf neu definierte Sprache. Sowohl die konkrete Syntax als auch die Semantik können hier frei definiert werden. Externe DSLs gelten daher als flexibler und ausdrucksstärker. War die Erstellung von externen DSLs in der Vergangenheit noch mit sehr viel Aufwand verbunden, so gibt es heute sehr gute Werkzeuge, die das Entwickeln von externen DSLs erheblich vereinfachen.

Prominente Beispiel für externe DSLs sind:

Nutzungsphasen

Eine DSL ist eine formale Sprache und kann daher maschinell unterstützt werden. Während bei internen DSLs die Definition, Nutzung und die Auswertung der DSL durch bestehende Werkzeuge unterstützt werden (Compiler, XML-Parser, XMI-Interpreter), müssen für externe DSL-Ansätze neue Werkzeuge erstellt werden.

Definition der Sprache

Zunächst einmal muss das Alphabet (domänenspezifische Schlüsselworte) der DSL festgelegt werden und die domänenspezifischen Satzbildungsregeln.

Erstellung von Sätzen

In der nächsten Phase erstellen Domänenexperten Sätze, die Alphabet und Satzbildungsregeln konform gehen, und die fachlichen Gegebenheiten in ihrem Problembereich spezifizieren.

Auswertung von Sätzen

Nachdem die Fachexperten ihre Spezifikationen erstellt haben, gilt es diese maschinell auszuwerten und automatisiert weiterzubearbeiten. Eine DSL kann mittels einer Domänentransformation in eine andere DSL überführt werden, um das fachliche Problem dort weiterzuverarbeiten. Irgendwann wird aber der Bereich der DSL verlassen und man überführt eine domänenspezifische Spezifikation in eine generische Spezifikation und kann diese dann mit Standardwerkzeugen in eine Problemlösung überführen.

Die domänenspezifische Spezifikation wird auf folgende Arten in eine andere DSL transformiert, oder in eine generische Spezifikation übersetzt:

Werkzeuge

Literatur

Siehe auch


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Domänenspezifische Sprache — Eine domänenspezifische Sprache (englisch domain specific language, DSL) ist eine formale Sprache, die speziell für ein bestimmtes Problemfeld (die Domäne) entworfen und implementiert wird. Beim Entwurf einer DSL wird man bemüht sein, einen… …   Deutsch Wikipedia

  • Problemorientierte Programmiersprache — Eine domänenspezifische Sprache (engl. domain specific language, DSL) ist eine formale Sprache, die speziell für ein bestimmtes Problemfeld (die Domäne) entworfen und implementiert wird. Beim Entwurf einer DSL wird man bemüht sein, einen hohen… …   Deutsch Wikipedia

  • M (Programmiersprache) — M ist eine von Microsoft als Teil des Oslo Projekts[1] entwickelte Programmiersprache[2]. M ist eine domänenspezifische Sprache zur Beschreibung von Datenmodellen. Die Sprache kann nur in Zusammenhang mit dem Entwicklungssystem Quadrant und dem… …   Deutsch Wikipedia

  • Relative Expression-Based Object Language — REBOL /ˈrebl/ (Relative Expression Based Object Language) ist eine plattformübergreifende Skriptsprache, die von Carl Sassenrath entwickelt wurde. Wichtigstes Merkmal der Sprache ist das sogenannte Dialecting (siehe auch Domänenspezifische… …   Deutsch Wikipedia

  • Konzeptorientierte Programmierung — ist ein Programmierparadigma, das zur Umwandlung von Konzepten in der Planungsphase eines Programmes in die Darstellungen der Konzepte in Maschinencode dient. Das Paradigma der konzeptorientierten Programmierung wurde 2001 von Christophe de… …   Deutsch Wikipedia

  • Innovator (UML-Werkzeug) — Innovator Entwickler: MID GmbH Aktuelle Version: 10.0.3 (19. Oktober 2008) Betriebssystem: ab Windows 2000, ab SuSE Linux 10.3, ab Solaris 8, (Red Hat auf Anfrage) Kategorie: UML Werkzeug …   Deutsch Wikipedia

  • Innovator Modellierungsplattform — Innovator Entwickler: MID GmbH Aktuelle Version: 10.0.3 (19. Oktober 2008) Betriebssystem: ab Windows 2000, ab SuSE Linux 10.3, ab Solaris 8, (Red Hat auf Anfrage) Kategorie: UML Werkzeug …   Deutsch Wikipedia

  • Modellgetriebene Architektur — (MDA; engl. Model Driven Architecture, MDA) bezeichnet einen Modellgetriebenen Softwareentwicklungsansatz, der auf einer klaren Trennung von Funktionalität und Technik beruht. Inhaltsverzeichnis 1 Ursprung und Abgrenzung zum CASE Ansatz 2 Ziele 2 …   Deutsch Wikipedia

  • Strategisches Programmierspiel — Ein Programmierspiel ist ein Computerspiel, bei dem der Spieler keinen direkten Einfluss auf den Spielverlauf hat, sondern statt dessen ein Computerprogramm in einer domänenspezifischen Programmiersprache schreibt, das die Steuerung der… …   Deutsch Wikipedia

  • Adenine — Adenine, benannt nach der Nukleinbase Adenin, ist eine Skriptsprache, welche im Rahmen des Haystack und Oxygen Projekts vom MIT Computer Science And Artificial Intelligence Laboratory (CSAIL) in Zusammenarbeit mit NTT entwickelt wird. Ein… …   Deutsch Wikipedia