Domänenspezifische Sprache

A Domänenspezifische Sprache (DSL) ist ein Computer Sprache spezialisiert auf eine bestimmte Anwendung Domain. Dies steht im Gegensatz zu a Allgemeine Sprache (GPL), das weitgehend in Domänen anwendbar ist. Es gibt eine Vielzahl von DSLs, die von weit verbreiteten Sprachen für gemeinsame Bereiche reichen, wie z. Html für Webseiten bis hin zu Sprachen, die nur von einer oder einigen wenigen Software verwendet werden, wie z. BREI Softcode. DSLs können von der Art der Sprache weiter unterteilt werden und umfassen domänenspezifische Markup Sprachen, domänenspezifisch Modellieren Sprachen (allgemeiner, Spezifikationssprachen) und domänenspezifisch Programmierung Sprachen. Im Computerzeitalter gab es schon immer spezielle Computersprachen, aber der Begriff "domänenspezifische Sprache" ist aufgrund des Aufstiegs von beliebter geworden Domänenspezifische Modellierung. Einfachere DSLs, insbesondere solche, die von einer einzigen Anwendung verwendet werden, werden manchmal informell genannt Mini-Sprache.

Die Grenze zwischen allgemeinen Sprachen und domänenspezifischen Sprachen ist nicht immer scharf, da eine Sprache möglicherweise spezielle Merkmale für einen bestimmten Bereich aufweist, jedoch im weiteren Sinne im Prinzip in der Praxis in der Praxis in der Lage ist, hauptsächlich für die Praxis zu werden, die hauptsächlich für die Praxis verwendet werden können eine bestimmte Domäne. Zum Beispiel, Perl wurde ursprünglich als Textverarbeitungs- und Klebersprache entwickelt, für den gleichen Bereich wie Awk und Shell -Skripte, wurde aber später hauptsächlich als allgemeine Programmiersprache verwendet. Im Gegensatz, PostScript ist ein Turing-Complete Sprache und im Prinzip kann für jede Aufgabe verwendet werden, aber in der Praxis wird eng als nutzt Seitenbeschreibung Sprache.

Verwenden

Das Design und die Verwendung geeigneter DSLs ist ein wesentlicher Bestandteil von Domain EngineeringDurch die Verwendung einer für die vorliegenden Domäne geeigneten Sprache kann dies aus der Verwendung eines vorhandenen DSL oder GPL oder der Entwicklung eines neuen DSL bestehen. Sprachorientierte Programmierung Berücksichtigt die Schaffung von Spezialsprachen, um Probleme als Standard-Teil des Problemlösungsprozesses auszudrücken. Erstellen einer domänenspezifischen Sprache (mit Software, um sie zu unterstützen), anstatt eine vorhandene Sprache wiederzuverwenden, kann sich lohnen, wenn die Sprache eine bestimmte Art von Problem oder Lösung ermöglicht, deutlicher ausdrückt als eine vorhandene Sprache und die Art von Art von Das fragliche Problem erscheint ausreichend oft wieder. Pragmatisch kann ein DSL auf eine bestimmte Problemdomäne, eine bestimmte Problemrepräsentationstechnik, eine bestimmte Lösungstechnik oder andere Aspekte einer Domäne spezialisiert sein.

Überblick

Eine domänenspezifische Sprache wird speziell zur Lösung von Problemen in einem bestimmten Bereich erstellt und soll nicht in der Lage sein, Probleme außerhalb davon zu lösen (obwohl dies technisch möglich sein kann). Im Gegensatz dazu werden allgemeine Sprachen erstellt, um Probleme in vielen Bereichen zu lösen. Die Domain kann auch ein Geschäftsbereich sein. Einige Beispiele für Geschäftsbereiche sind:

  • Lebensversicherungspolicen (intern von einem großen Versicherungsunternehmen entwickelt)
  • Kampfsimulation
  • Gehaltsberechnung
  • Abrechnung

Eine domänenspezifische Sprache liegt irgendwo zwischen einer winzigen Programmiersprache und a Skriptspracheund wird oft auf eine Weise analog zu a verwendet Programmierbibliothek. Die Grenzen zwischen diesen Konzepten sind ziemlich verschwommen, ähnlich wie die Grenze zwischen Skriptsprachen und allgemeinen Sprachen.

In Design und Implementierung

Domänenspezifische Sprachen sind Sprachen (oder häufig deklarierte Syntaxe oder Grammatiken) mit sehr spezifischen Zielen für Design und Implementierung. Eine domänenspezifische Sprache kann eine einer visuellen Diagrammsprache sein, wie sie, die von der erstellt wurden Generisches Sonnenfinsternis -Modellierungssystemprogrammatische Abstraktionen wie die Eclipse Modeling Frameworkoder Textsprachen. Zum Beispiel das Dienstprogramm des Befehlszeilens Grep hat ein regulären Ausdruck Syntax, die Muster in Textzeilen übereinstimmt. Das sed Das Dienstprogramm definiert eine Syntax zum Abpassen und Ersetzen regulärer Ausdrücke. Oft können diese winzigen Sprachen in a zusammen verwendet werden Hülse komplexere Programmieraufgaben ausführen.

Die Grenze zwischen domänenspezifischen Sprachen und Skriptsprachen ist etwas verschwommen, aber domänenspezifische Sprachen fehlen häufig Funktionen mit niedrigem Niveau für den Dateisystemzugriff, die Interprozesssteuerung und andere Funktionen, die mit vollem einfachem Programmiersprachen, Scripting oder anderweitig charakterisieren. Viele domänenspezifische Sprachen kompilieren nicht zu Byte-Code oder ausführbarer Code, jedoch zu verschiedenen Arten von Medienobjekten: Graphviz -Exporte zu PostScript, GIF, JPEGusw. wo Cound Kompiliert für Audiodateien und eine domänenspezifische Sprache von Strahlen und eine domänenspezifische Sprache POV Kompiliert für Grafikdateien. Eine Computersprache wie Sql präsentiert einen interessanten Fall: Es kann als domänenspezifische Sprache angesehen werden Viele Skriptsprachen und werden oft als eigene Sprache angesehen, möglicherweise aufgrund der Prävalenz der Datenbankmanipulation in der Programmierung und der Menge an Meisterschaft, die erforderlich ist, um ein Experte in der Sprache zu sein.

Weitere Verschwörung dieser Zeile haben viele domänenspezifische Sprachen auf APIs und können von anderen Programmiersprachen zugegriffen werden, ohne den Ausführungfluss zu brechen oder einen separaten Prozess aufzurufen, und können somit als Programmierbibliotheken wirken.

Programmierwerkzeuge

Einige domänenspezifische Sprachen erweitern sich im Laufe der Zeit um umfassende Programmierwerkzeuge, die die Frage, ob eine Sprache domänenspezifisch ist oder nicht, weiter erschwert. Ein gutes Beispiel ist das funktionale Sprache Xsltspeziell für die Transformation eines XML -Diagramms in ein anderes entwickelt, das seit seiner Gründung erweitert wurde, um (insbesondere in seiner 2.0 -Version) für verschiedene Formen der Dateisystem -Interaktion, String- und Datumsmanipulation und Datentypisierung zu ermöglichen.

Im Modellgetriebene EngineeringEs können viele Beispiele für domänenspezifische Sprachen gefunden werden wie OCL, eine Sprache zum Dekorieren von Modellen mit Behauptungen oder Qvt, eine domänenspezifische Transformationssprache. Sprachen mögen jedoch Uml sind typischerweise allgemeine Modellierungssprachen.

Zusammenfassend lässt sich sagen, dass eine Analogie nützlich sein könnte: Eine sehr kleine Sprache ist wie ein Messer, das auf Tausende von verschiedenen Arten verwendet werden kann, vom Schneiden von Lebensmitteln bis hin zum Schneiden von Bäumen. Eine domänenspezifische Sprache ist wie eine elektrische Übung: Sie ist ein leistungsstarkes Werkzeug mit einer Vielzahl von Verwendungszwecken, aber ein bestimmter Kontext, nämlich Löcher in Dinge. Eine allgemeine Sprache ist eine vollständige Workbench mit einer Vielzahl von Tools, die für eine Vielzahl von Aufgaben gedacht sind. Domänenspezifische Sprachen sollten von Programmierern verwendet werden, die, wenn sie ihre aktuelle Workbench betrachten, erkennen, dass sie einen besseren Drill benötigen, und feststellen, dass eine bestimmte domänenspezifische Sprache genau das liefert.

Domänenspezifische Sprachthemen

Externe und eingebettete domänenspezifische Sprachen

DSLs, die über einen unabhängigen Dolmetscher oder Compiler implementiert sind Externe domänenspezifische Sprachen. Zu bekannte Beispiele gehören Latex oder awk. Eine separate Kategorie bekannt als als Eingebettete (oder interne) domänenspezifische Sprachen werden in der Regel innerhalb einer Hostsprache als Bibliothek implementiert und sind in der Regel auf die Syntax der Hostsprache beschränkt, obwohl dies von den Funktionen der Hostsprachen abhängt.[1]

Nutzungsmuster

Es gibt mehrere Verwendungsmuster für domänenspezifische Sprachen:[2][3]

  • Verarbeitung mit eigenständigen Tools, aufgerufen über den direkten Benutzerbetrieb, häufig in der Befehlszeile oder von a Makefile (z. B. Grep für regelmäßige Ausdrucks Matching, SED, Lex, Yacc, die Graphviz Toolset usw.)
  • Domänenspezifische Sprachen, die mit der Programmiersprache Makrosysteme implementiert werden und zu einer Kompilierungszeit oder Echtzeit in eine Allzwecksprache mit Host umgewandelt oder erweitert werden
  • Eingebettete domänenspezifische Sprache (edsl),[4] Implementiert als Bibliotheken, die die Syntax ihrer Host-Allzweck-Sprache oder eine Teilmenge davon ausnutzen, während domänenspezifische Sprachelemente (Datentypen, Routinen, Methoden, Makros usw.) hinzugefügt werden. (z.B. JQuery, Reagieren, Eingebettete SQL, Linq)
  • Domänenspezifische Sprachen, die (zur Laufzeit) aus Programmen bezeichnet werden, die in Allzwecksprachen wie geschrieben wurden wie C oder Perl, um eine bestimmte Funktion auszuführen und häufig die Betriebsergebnisse zur weiteren Verarbeitung in die Programmiersprache "Host" zurückzugeben; im Allgemeinen ein Dolmetscher oder virtuelle Maschine Für die domänenspezifische Sprache ist in die Host-Anwendung eingebettet (z. Formatketten, a Regelmäßige Ausdrucksmotor)
  • Domänenspezifische Sprachen, die in Benutzeranwendungen eingebettet sind (z. B. Makrosprachen in Tabellenkalkulationen) und (1) zum Ausführen von Code verwendet werden, der von Benutzern der Anwendung verfasst wurde, (2) dynamisch von der Anwendung generiert oder (3) beide.

Viele domänenspezifische Sprachen können in mehr als einer Weise verwendet werden. Der in einer Hostsprache eingebettete DSL -Code kann eine spezielle Syntaxunterstützung haben, wie z.

Designziele

Die Übernahme eines domänenspezifischen Sprachansatzes für Software-Engineering beinhaltet sowohl Risiken als auch Chancen. Die gut gestaltete domänenspezifische Sprache schafft es, das richtige Gleichgewicht zwischen diesen zu finden.

Domänenspezifische Sprachen haben wichtige Designziele, die zu denen von allgemeinen Sprachen stehen:

  • Domänenspezifische Sprachen sind weniger umfassend.
  • Domänenspezifische Sprachen sind in ihrer Domäne viel ausdrucksvoller.
  • Domänenspezifische Sprachen sollten minimal aufweisen Redundanz.

Redewendungen

In der Programmierung, Redewendungen sind Methoden, die von Programmierern auferlegt werden, um häufige Entwicklungsaufgaben zu erledigen, z. B.:

  • Stellen Sie sicher, dass Daten gespeichert werden, bevor das Fenster geschlossen ist.
  • Bearbeiten Sie den Code, wenn sich die Befehlszeilenparameter ändern, da sie das Programmverhalten beeinflussen.

Allzweck-Programmiersprachen unterstützen solche Redewendungen selten, aber domänenspezifische Sprachen können sie beschreiben, z. B.::

  • Ein Skript kann automatisch Daten speichern.
  • Eine domänenspezifische Sprache kann die Befehlszeileneingabe parametrisieren.

Beispiele

Beispiele für domänenspezifische Sprachen umfassen Html, Logo Für Bleistift-ähnliche Zeichnung, Verilog und VHDL Hardware -Beschreibung Sprachen, Matlab und Gnu octave Für die Matrixprogrammierung, Mathematica, Ahorn und Maxima zum Symbolische Mathematik, Spezifikation und Beschreibung Sprache für reaktive und verteilte Systeme, Kalkulationstabelle Formeln und Makros, Sql zum relationale Datenbank Abfragen, Yacc Grammatiken zum Erstellen Parser, Reguläre Ausdrücke zum Angeben Lexer, das Generisches Sonnenfinsternis -Modellierungssystem zum Erstellen von Diagrammsprachen, Cound Für Klang- und Musiksynthese und die Eingangssprachen von Graphviz und GrGen, Softwarepakete für verwendet für Grafiklayout und Grafikumschreiben, Hashicorp -Konfigurationssprache verwendet für Terraform und andere Hashicorp Werkzeug, Marionette hat auch eine eigene Konfigurationssprache.

Gamemaker -Sprache

Die GML -Skriptsprache von verwendet von Gamemaker Studio ist eine domänenspezifische Sprache, die sich an Anfängerprogrammierer richtet, um problemlos Programmierung zu lernen. Während die Sprache als Mischung aus mehreren Sprachen dient, einschließlich der Sprache Delphi, C ++, und BASICEs fehlt Strukturen, Datentypen und andere Funktionen einer vollwertigen Programmiersprache. Viele der eingebauten Funktionen sind Sandbox zum Zweck der einfachen Portabilität. Die Sprache dient in erster Linie, es jedem leicht zu machen, die Sprache aufzunehmen und ein Spiel zu entwickeln.

Coldfusion Markup Sprache

ColdfusionDie zugehörige Skriptsprache 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 zusammenzustellen.

Das Coldfusion Markup Sprache (CFML) enthält eine Reihe von Tags, die in ColdFusion -Seiten verwendet werden können, um mit Datenquellen zu interagieren, Daten zu manipulieren und die Ausgabe anzuzeigen. Die CFML -Tag -Syntax ähnelt der HTML -Elementsyntax.

Erlang OTP

Die Erlang Open Telecom Platform wurde ursprünglich für den Einsatz im Inneren entwickelt Ericsson als domänenspezifische Sprache. Die Sprache selbst bietet eine Plattform von Bibliotheken, um endliche Zustandsmaschinen, Generika und Eventmanager zu erstellen, die es einem Ingenieur schnell ermöglichen, Anwendungen bereitzustellen oder Bibliotheken zu unterstützen, die in Branchen -Benchmarks gezeigt wurden , wie C und C ++. Die Sprache ist jetzt offiziell Open Source und kann von ihrer Website heruntergeladen werden.

Filtermeister

Filtermeister ist eine Programmierumgebung mit einer Programmiersprache, die auf C basiert, um den spezifischen Zweck des Erstellens zu erstellen Photoshop-kompatible Bildverarbeitungsfilter-Plug-Ins; Filtermeister wird als Photoshop-Plug-In selbst ausgeführt und kann Skripte laden und ausführen oder als unabhängige Plug-Ins kompilieren und exportieren. Obwohl die Filtermeistersprache einen signifikanten Teil der C-Sprache und Funktionsbibliothek reproduziert, enthält sie nur die Merkmale, die im Kontext von Photoshop-Plug-Ins verwendet werden können, und fügt eine Reihe spezifischer Funktionen hinzu, die in dieser spezifischen Domäne nur nützlich sind.

Medienwiki -Vorlagen

Das Schablone Merkmal von Mediawiki ist eine eingebettete domänenspezifische Sprache, deren grundlegender Zweck darin besteht, die Schaffung von zu unterstützen Seitenvorlagen und die Transclusion (Einbeziehung durch Bezugnahme) von Medienwiki -Seiten in andere Medienwiki -Seiten.

Software Engineering verwendet

Es gab großes Interesse an domänenspezifischen Sprachen, um die Produktivität und Qualität von zu verbessern Softwareentwicklung. Die domänenspezifische Sprache könnte möglicherweise einen robusten Tools für effizientes Software-Engineering bieten. Solche Tools beginnen, sich in die Entwicklung kritischer Softwaresysteme zu entwickeln.

Das Toolkit zur Softwarekostenreduzierung[5] ist ein Beispiel dafür. Das Toolkit ist eine Reihe von Versorgungsunternehmen, einschließlich eines Spezifikationseditors zum Erstellen von a Anforderungsspezifikation, Ein Abhängigkeits -Graph -Browser zum Anzeigen von variablen Abhängigkeiten, ein Konsistenzprüfer, um fehlende Fälle in fehlenden Fällen zu fangen gut geformte Formeln in der Spezifikation a Modellprüfung und ein Theorem Prover Überprüfen Sie die Programmeigenschaften anhand der Spezifikation und einen invarianten Generator, der automatisch Invarianten basierend auf den Anforderungen konstruiert.

Eine neuere Entwicklung ist Sprachorientierte Programmierung, ein integriertes Software -Engineering Methodik Basierend auf dem Erstellen, Optimieren und Verwenden domänenspezifischer Sprachen.

Metacompiler

Ergänzen Sprachorientierte Programmierungsowie alle anderen Formen von domänenspezifischen Sprachen werden die Klasse von Compiler-Schreibwerkzeugen genannt Metacompiler. Ein Metacompiler ist nicht nur nützlich für die Erzeugung Parser und Codegeneratoren für domänenspezifische Sprachen, aber a Metacompiler selbst kompiliert eine domänenspezifische Metallanguage speziell für die Domäne von entwickelt von Metaprogrammierung.

Neben der Parsen von domänenspezifischen Sprachen sind Metacompiler nützlich, um eine breite Palette von Tools für Software-Engineering und Analyse zu generieren. Die Meta-Kompiler-Methodik wird häufig in gefunden Programmtransformationssysteme.

Metacompiler, die sowohl in der Informatik als auch in der Computerindustrie eine wichtige Rolle spielten Meta-II,[6] und sein Nachkomme Treemeta.[7]

Unreale Engine vor Version 4 und anderen Spielen

Unwirklich und Unwirkliches Turnier enthüllte eine Sprache, die genannt wurde Unrealscript. Dies ermöglichte eine schnelle Entwicklung von Modifikationen im Vergleich zum Wettbewerber Beben (Verwendung der ID Tech 2 Motor). Der ID -Tech -Motor verwendete Standard C Code, was bedeutet, dass C gelernt und ordnungsgemäß angewendet werden musste, während Unrealscript für die Benutzerfreundlichkeit und Effizienz optimiert wurde. In ähnlicher Weise hat die Entwicklung neuerer Spiele ihre eigenen spezifischen Sprachen eingeführt, ein weiteres gemeinsames Beispiel ist Lua zum Skripten.

Regeln Engines für Richtlinienautomatisierung

Verschiedene Geschäftsregeln Engines wurden für die Automatisierung von Politik- und Geschäftsregeln entwickelt, die sowohl in der Regierung als auch in der Privatindustrie verwendet werden. ILOG, Oracle Policy Automation, Dtrule, Sabber und andere unterstützen DSLs, die darauf abzielen, verschiedene Problembereiche zu unterstützen. DTRULES geht so weit, eine Schnittstelle für die Verwendung mehrerer DSLs innerhalb eines Regelsatzes zu definieren.

Der Zweck von Geschäftsregeln Engines besteht darin, eine Repräsentation der Geschäftslogik so lesbar wie möglich zu definieren. Dies erlaubt beides Fachexperten und Entwickler, um mit der gleichen Darstellung der Geschäftslogik zusammenzuarbeiten und zu verstehen. Die meisten Regeln -Motoren bieten sowohl einen Ansatz zur Vereinfachung der Kontrollstrukturen für die Geschäftslogik (z. B. unter Verwendung von deklarativen Regeln oder Entscheidungstabellen) verbunden mit Alternativen zur Programmiersyntax zugunsten von DSLs.

Statistische Modellierungssprachen

Statistische Modellierer haben domänenspezifische Sprachen wie z. R (eine Implementierung der S Sprache),Käfer, Jags, und Stan. Diese Sprachen bieten eine Syntax für die Beschreibung eines Bayes'schen Modells und generieren eine Methode zum Lösen mit Simulation.

Generieren Sie Modell und Dienste für mehrere Programmiersprachen

Generieren Sie Objekthandhabung und -dienste basierend auf einem Schnittstellenbeschreibung Sprache Für eine domänenspezifische Sprache wie JavaScript für Webanwendungen, HTML für Dokumentation, C ++ für Hochleistungscode usw. Dies geschieht durch Cross-Sprach-Frameworks wie z. B. Apache -Sparsamkeit oder Google Protocol Puffer.

Gurke

Gurke ist eine Sprache, mit der Testfälle definiert werden sollen, um das Verhalten von Software zu überprüfen, ohne festzustellen, wie dieses Verhalten implementiert wird. Es soll von nicht-technischen Benutzern gelesen und verwendet werden, die eine natürliche Sprachsyntax und a linienorientiertes Design. Die mit Gherkin definierten Tests müssen dann in einer allgemeinen Programmiersprache implementiert werden. Anschließend fungieren die Schritte in einem Gherkin-Programm als Syntax für die Methodenaufruf, die für Nichtentwickler zugänglich ist.

Andere Beispiele

Weitere herausragende Beispiele für domänenspezifische Sprachen sind:

Vorteile und Nachteile

Einige der Vorteile:[2][3]

  • Domänenspezifische Sprachen ermöglichen es, Lösungen im Idiom und auf der Ebene der Abstraktion der Problemdomäne auszudrücken. Die Idee ist, dass Domänenexperten selbst möglicherweise domänenspezifische Sprachprogramme verstehen, validieren, ändern und häufig sogar entwickeln. Dies ist jedoch selten der Fall.[8]
  • Domänenspezifische Sprachen erlauben Validierung auf Domänenebene. Solange die Sprachkonstrukte sicher sind, kann jeder mit ihnen geschriebene Satz als sicher angesehen werden.
  • Domänenspezifische Sprachen können dazu beitragen, die Entwicklung von Geschäftsinformationssystemen von herkömmlichen Softwareentwicklern auf die typisch größere Gruppe von Domänen-Experten zu verlagern, die (trotz weniger technischer Fachkenntnisse) ein tieferes Wissen über die Domäne haben.[9]
  • Domänenspezifische Sprachen sind angesichts ihres begrenzten Umfangs leichter zu lernen.

Einige der Nachteile:

  • Kosten für das Erlernen einer neuen Sprache
  • Begrenzte Anwendbarkeit
  • Kosten für das Entwerfen, Implementieren und Aufrechterhalten einer domänenspezifischen Sprache sowie der Tools, die zur Entwicklung erforderlich sind (damit erforderlich ist (Ide)
  • Finden, Einstellen und Aufrechterhaltung des ordnungsgemäßen Umfangs.
  • Schwierigkeit, Kompromisse zwischen Domänenspezifität und allgemeinen Programmiersprachenkonstrukten auszugleichen.
  • Potenzieller Verlust des Prozessors Effizienz verglichen mit handcodierter Software.
  • Die Verbreitung ähnlicher nicht standardmäßiger domänenspezifischer Sprachen, beispielsweise eine DSL, die innerhalb einer Versicherungsgesellschaft verwendet wird, im Vergleich zu einem DSL, das innerhalb einer anderen Versicherungsgesellschaft verwendet wird.[10]
  • Experten für nichttechnische Domänen können es schwierig finden, DSL-Programme selbst zu schreiben oder zu ändern.[8]
  • Erhöhte Schwierigkeit bei der Integration der DSL in andere Komponenten des IT-Systems (im Vergleich zur Integration in eine allgemeine Sprache).
  • Das geringe Angebot an Experten in einem bestimmten DSL erhöht die Arbeitskosten.
  • Es schwieriger zu finden, Codebeispiele zu finden.

Tools zum Entwerfen domänenspezifischer Sprachen

  • Jetbrains Abgeordnete ist ein Werkzeug zum Entwerfen domänenspezifischer Sprachen. Es verwendet Projektionsbearbeitung Dies ermöglicht die Überwindung der Grenzen von Sprachparsers und dem Aufbau von DSL -Redakteuren, wie z. B. mit Tabellen und Diagrammen. Es implementiert die sprachorientierte Programmierung. MPS kombiniert eine Umgebung für die Sprachdefinition, a Sprachworkbenchund eine integrierte Entwicklungsumgebung (IDE) für solche Sprachen.[11]
  • Monticore ist eine Sprachwerkbank für die effiziente Entwicklung domänenspezifischer Sprachen. Es verarbeitet ein erweitertes Grammatikformat, das die DSL definiert und Java -Komponenten für die Verarbeitung der DSL -Dokumente generiert.[12]
  • Xtext ist ein Open-Source-Software-Framework für die Entwicklung von Programmiersprachen und domänenspezifischen Sprachen (DSLs). Im Gegensatz zu Standard -Parser -Generatoren generiert Xtext nicht nur einen Parser, sondern auch ein Klassenmodell für den abstrakten Syntaxbaum. Darüber hinaus bietet es eine vollständig vorgestellte, anpassbare Eclipse-basierte IDE.[13]
  • Schläger ist eine plattformübergreifende Sprach-Toolchain, einschließlich natives Code, JIT und JavaScript-Compiler, IDE (zusätzlich zur Unterstützung von EMACs, VIM, VISCODE und anderen) und Befehlszeilen-Tools, mit denen sowohl domänenspezifische als auch allgemeine Sprachen erstellt werden sollen.[14][15]

Siehe auch

Verweise

  1. ^ Fowler, Martin; Parsons, Rebecca. "Domänenspezifische Sprachen". Abgerufen 6. Juli 2019.
  2. ^ a b Marjan Mernik, Jan Heering und Anthony M. Sloane. Wann und wie man domänenspezifische Sprachen entwickelt. ACM Computing -Umfragen, 37 (4): 316–344, 2005.doi:10.1145/1118890.1118892
  3. ^ a b Diomidis spinellis. Bemerkenswerte Entwurfsmuster für domänenspezifische Sprachen. Zeitschrift für Systeme und Software, 56 (1): 91–99, Februar 2001. doi:10.1016/s0164-1212 (00) 00089-3
  4. ^ Fellisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (März 2018). "Eine programmierbare Programmiersprache". Kommunikation der ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010. Abgerufen 15. Mai 2019.
  5. ^ Heitmeyer, C. (1998). "Verwenden des SCR* Toolset zum Angeben von Softwareanforderungen" (PDF). Verfahren. 2. IEEE -Workshop über formelle Spezifikationstechniken der industriellen Stärke. IEEE. S. 12–13. doi:10.1109/WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058. Archiviert von das Original (PDF) Am 2004-07-19.
  6. ^ Shorre, D. V. (1964). "Meta II Eine syntaxorientierte Compiler-Schreibsprache". Proceedings der 19. ACM Nationalen Konferenz von 1964: 41.301–41.3011. doi:10.1145/800257.808896. S2CID 43144779.
  7. ^ Carr, C. Stephen; Luther, David A.; Erdmann, Sherian (1969). "Das Baum-Meta-Compiler-Kompiler-System: Ein Meta-Compiler-System für den Univac 1108 und General Electric 645". Technischer Bericht der Universität von Utah RADC-TR-69-83. Archiviert von das Original am 1. Februar 2020.
  8. ^ a b Freudenthal, Margus (1. Januar 2009). "Domänenspezifische Sprachen in einem Zollinformationssystem". IEEE -Software: 1. doi:10.1109/ms.2009.152.
  9. ^ Aram, Michael; Neumann, Gustaf (2015-07-01). "Mehrschichtige Analyse der gemeinsamen Entwicklung von Geschäftsinformationssystemen" (PDF). Journal of Internet Services und Anwendungen. 6 (1). doi:10.1186/s13174-015-0030-8. S2CID 16502371.
  10. ^ Miotto, Eric. "Über die Integration von domänenspezifischen und wissenschaftlichen Wissensgremien in modellgetriebenem Engineering" (PDF). Archiviert von das Original (PDF) Am 2011-07-24. Abgerufen 2010-11-22.
  11. ^ "Jetbrains MPS: Domänenspezifischer Sprachkreator".
  12. ^ "Monticore".
  13. ^ "Xtext".
  14. ^ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Fellisen, M. (2011). "Sprachen als Bibliotheken" (PDF). Programmiersprache Design und Implementierung.
  15. ^ Flatt, Matthew (2012). "Sprachen im Schläger erstellen". Kommunikation der ACM. Abgerufen 2012-04-08.

Weitere Lektüre

Externe Links

Artikel