Domänenspezifische Sprache
Beispiele für domänenspezifische Sprachen sind HTML, Logo für bleistiftähnliches Zeichnen, die Hardwarebeschreibungssprachen Verilog und VHDL, MATLAB und GNU Octave für Matrixprogrammierung, Mathematica, Maple und Maxima für symbolische Mathematik, Specification and Description Language für reaktive und verteilte Systeme, Tabellenkalkulationsformeln und Makros, SQL für relationale Datenbankabfragen, YACC-Grammatiken für die Erstellung von Parsern, reguläre Ausdrücke für die Spezifikation von Lexern, das Generic Eclipse Modeling System für die Erstellung von Diagrammsprachen, Csound für die Klang- und Musiksynthese und die Eingabesprachen von GraphViz und GrGen, Softwarepakete für Graphen-Layout und Graphen-Rewriting, die Hashicorp Configuration Language für Terraform und andere Hashicorp-Tools, Puppet hat auch eine eigene Konfigurationssprache.
GameMaker LanguageEdit
Die von GameMaker Studio verwendete Skriptsprache GML ist eine domänenspezifische Sprache, die sich an Programmieranfänger richtet, um das Programmieren leicht erlernen zu können. Während die Sprache als eine Mischung aus mehreren Sprachen wie Delphi, C++ und BASIC dient, fehlt es an Strukturen, Datentypen und anderen Funktionen einer vollwertigen Programmiersprache. Viele der eingebauten Funktionen sind zum Zweck der einfachen Portierbarkeit in einer Sandbox untergebracht. Die Sprache dient in erster Linie dazu, es jedem leicht zu machen, die Sprache in die Hand zu nehmen und ein Spiel zu entwickeln.
ColdFusion Markup LanguageEdit
Die zugehörige Skriptsprache von ColdFusion ist ein weiteres Beispiel für eine domänenspezifische Sprache für datengesteuerte Websites.
Diese Skriptsprache wird verwendet, um Sprachen und Dienste wie Java, .NET, C++, SMS, E-Mail, E-Mail-Server, http, ftp, Exchange, Verzeichnisdienste und Dateisysteme für die Verwendung in Websites.
Die ColdFusion Markup Language (CFML) enthält eine Reihe von Tags, die in ColdFusion-Seiten verwendet werden können, um mit Datenquellen zu interagieren, Daten zu manipulieren und Ausgaben anzuzeigen. Die Syntax der CFML-Tags ähnelt der Syntax von HTML-Elementen.
Erlang OTPEdit
Die Erlang Open Telecom Platform wurde ursprünglich für den Einsatz innerhalb von Ericsson als domänenspezifische Sprache entwickelt. Die Sprache selbst bietet eine Plattform von Bibliotheken zur Erstellung von Finite-State-Machines, generischen Servern und Event-Managern, die es einem Ingenieur ermöglichen, schnell Anwendungen zu entwickeln, oder Bibliotheken zu unterstützen, die in Industrie-Benchmarks gezeigt haben, dass sie andere Sprachen, die für einen gemischten Satz von Domänen gedacht sind, wie C und C++, übertreffen. Die Sprache ist jetzt offiziell quelloffen und kann von ihrer Website heruntergeladen werden.
FilterMeisterEdit
FilterMeister ist eine Programmierumgebung mit einer auf C basierenden Programmiersprache für den speziellen Zweck der Erstellung von Photoshop-kompatiblen Filter-Plug-ins für die Bildverarbeitung; FilterMeister läuft selbst als Photoshop-Plug-in und kann Skripte laden und ausführen oder sie als unabhängige Plug-ins kompilieren und exportieren.Obwohl die FilterMeister-Sprache einen bedeutenden Teil der C-Sprache und der Funktionsbibliothek reproduziert, enthält sie nur die Funktionen, die im Kontext von Photoshop-Plug-ins verwendet werden können, und fügt eine Reihe von spezifischen Funktionen hinzu, die nur in diesem speziellen Bereich nützlich sind.
MediaWiki templatesEdit
Das Template-Feature von MediaWiki ist eine eingebettete domänenspezifische Sprache, deren grundlegender Zweck es ist, die Erstellung von Seitenvorlagen und die Transklusion (Einbindung durch Verweis) von MediaWiki-Seiten in andere MediaWiki-Seiten zu unterstützen.
Software Engineering usesEdit
Es gab viel Interesse an domänenspezifischen Sprachen, um die Produktivität und Qualität des Software Engineering zu verbessern. Domänenspezifische Sprachen könnten möglicherweise einen robusten Satz von Werkzeugen für effizientes Software-Engineering bereitstellen. Solche Werkzeuge beginnen ihren Weg in die Entwicklung kritischer Softwaresysteme zu finden.
Das Software Cost Reduction Toolkit ist ein Beispiel dafür. Das Toolkit ist eine Suite von Dienstprogrammen, darunter ein Spezifikationseditor zum Erstellen einer Anforderungsspezifikation, ein Abhängigkeitsgraphen-Browser zum Anzeigen von Variablenabhängigkeiten, ein Konsistenzprüfer zum Auffinden von fehlenden Fällen in wohlgeformten Formeln in der Spezifikation, ein Modellprüfer und ein Theorembeweiser zum Überprüfen von Programmeigenschaften anhand der Spezifikation und ein Invariantengenerator, der automatisch Invarianten auf der Grundlage der Anforderungen konstruiert.
Eine neuere Entwicklung ist die sprachorientierte Programmierung, eine integrierte Software-Engineering-Methodik, die hauptsächlich auf der Erstellung, Optimierung und Verwendung domänenspezifischer Sprachen basiert.
MetacompilerBearbeiten
Ergänzend zur sprachorientierten Programmierung sowie zu allen anderen Formen domänenspezifischer Sprachen gibt es eine Klasse von Compiler-Schreibwerkzeugen, die Metacompiler genannt werden. Ein Metacompiler ist nicht nur nützlich, um Parser und Codegeneratoren für domänenspezifische Sprachen zu erzeugen, sondern ein Metacompiler kompiliert selbst eine domänenspezifische Metasprache, die speziell für die Domäne der Metaprogrammierung entwickelt wurde.
Neben dem Parsen von domänenspezifischen Sprachen sind Metacompiler nützlich, um eine breite Palette von Software-Engineering- und Analyse-Tools zu erzeugen. Die Metacompiler-Methodik findet sich häufig in Programmtransformationssystemen.
Metacompiler, die sowohl in der Informatik als auch in der Computerindustrie eine bedeutende Rolle spielten, sind Meta-II und sein Abkömmling TreeMeta.
Unreal Engine vor Version 4 und andere SpieleEdit
Unreal und Unreal Tournament führten eine Sprache namens UnrealScript ein. Diese ermöglichte die schnelle Entwicklung von Modifikationen im Vergleich zum Konkurrenten Quake (mit der Id Tech 2 Engine). Die Id Tech-Engine verwendete Standard-C-Code, was bedeutete, dass C erlernt und richtig angewandt werden musste, während UnrealScript auf Benutzerfreundlichkeit und Effizienz optimiert war. In ähnlicher Weise führte die Entwicklung neuerer Spiele ihre eigenen spezifischen Sprachen ein, ein häufigeres Beispiel ist Lua für die Skripterstellung.
Regel-Engines für die Automatisierung von Richtlinien
Es wurden verschiedene Business Rules Engines für die Automatisierung von Richtlinien und Geschäftsregeln entwickelt, die sowohl in der Regierung als auch in der Privatwirtschaft eingesetzt werden. ILOG, Oracle Policy Automation, DTRules, Drools und andere bieten Unterstützung für DSLs, die verschiedene Problemdomänen unterstützen sollen. DTRules geht sogar so weit, eine Schnittstelle für die Verwendung mehrerer DSLs innerhalb eines Regelsatzes zu definieren.
Der Zweck von Business Rules Engines ist es, eine Repräsentation von Geschäftslogik in möglichst menschenlesbarer Form zu definieren. Dadurch können sowohl Fachexperten als auch Entwickler mit der gleichen Darstellung der Geschäftslogik arbeiten und diese verstehen. Die meisten Rules Engines bieten sowohl einen Ansatz zur Vereinfachung der Kontrollstrukturen für die Geschäftslogik (z.B. durch deklarative Regeln oder Entscheidungstabellen) als auch Alternativen zur Programmiersyntax zugunsten von DSLs.
Statistische ModellierungssprachenEdit
Statistische Modellierer haben domänenspezifische Sprachen wie R (eine Implementierung der S-Sprache),Bugs, Jags und Stan entwickelt. Diese Sprachen bieten eine Syntax zur Beschreibung eines Bayes’schen Modells und generieren eine Methode, um es mit Hilfe von Simulationen zu lösen.
Generieren von Modellen und Diensten für mehrere ProgrammiersprachenBearbeiten
Generieren von Objekthandling und Diensten auf Basis einer Interface Description Language für eine domänenspezifische Sprache wie JavaScript für Webanwendungen, HTML für Dokumentation, C++ für Hochleistungscode usw. Dies geschieht durch sprachübergreifende Frameworks wie Apache Thrift oder Google Protocol Buffers.
GherkinEdit
Gherkin ist eine Sprache zur Definition von Testfällen, um das Verhalten von Software zu überprüfen, ohne zu spezifizieren, wie dieses Verhalten implementiert wird. Sie ist dafür gedacht, von nicht-technischen Anwendern gelesen und verwendet zu werden, wobei eine natürlichsprachliche Syntax und ein zeilenorientiertes Design verwendet werden. Die mit Gherkin definierten Tests müssen dann in einer allgemeinen Programmiersprache implementiert werden. Die Schritte in einem Gherkin-Programm dienen dann als Syntax für Methodenaufrufe, die auch für Nicht-Entwickler zugänglich sind.
Weitere Beispiele
Weitere prominente Beispiele für domänenspezifische Sprachen sind:
- Emacs Lisp
- Game Description Language
- OpenGL Shading Language
- Gradle
- ActionScript