Loading AI tools
Computersprache für ein bestimmtes Problemfeld Aus Wikipedia, der freien Enzyklopädie
Eine domänenspezifische Sprache (englisch domain-specific language, kurz DSL) oder anwendungsspezifische Sprache ist eine formale Sprache, die zur Interaktion zwischen Menschen und digital arbeitenden Computern („Computersprache“) für ein bestimmtes Problemfeld (die sogenannte 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 sie soll nichts darstellen können, was außerhalb der Domäne liegt. Dadurch ist sie durch Domänenspezialisten ohne besonderes Zusatzwissen bedienbar.
Das Gegenteil einer domänenspezifischen Sprache ist eine Allzweck-Programmiersprache, wie beispielsweise Python oder C, oder eine universell einsetzbare Modellierungssprache, wie UML.
Zu den Vorteilen einer DSL gegenüber der Nutzung einer allgemeinen Programmier- oder Spezifikationssprache zählen
Auch Endbenutzer können DSLs verwenden, da diese leichter erlernt werden können als universell einsetzbare Programmiersprachen. Man spricht hier von End User Development.
Man unterscheidet zwischen internen (eingebetteten) DSLs und externen DSLs.
Eine Untermenge domänenspezifischer Sprachen stellen die internen DSLs (englisch internal DSL oder auch embedded domain specific language) dar, die wesentliche Komponenten der Sprachimplementierung ihrer Wirtssprache nutzen. Dadurch sinkt der Implementierungsaufwand. Eine interne DSL ist immer eine echte Untermenge einer generelleren Sprache.
Prominente Vertreter von internen DSLs sind:
Eine externe DSL ist eine von Grund auf 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, z. B. eine sogenannte Language Workbench.
Prominente Beispiele für externe DSLs sind:
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.
Zunächst einmal müssen das Alphabet / der Wortschatz (domänenspezifische Schlüsselwörter) der DSL festgelegt werden und die domänenspezifischen Satzbildungsregeln.
In der nächsten Phase erstellen Domänenexperten Sätze, die zum Alphabet und den Satzbildungsregeln konform gehen und die fachlichen Gegebenheiten in ihrem Problembereich spezifizieren.
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:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.