Domeinspecifieke taal
Voorbeelden van domeinspecifieke talen zijn onder meer HTML, Logo voor potloodachtig tekenen, Verilog en VHDL hardwarebeschrijvingstalen, MATLAB en GNU Octave voor matrixprogrammering, Mathematica, Maple en Maxima voor symbolische wiskunde, Specificatie- en beschrijvingstaal voor reactieve en gedistribueerde systemen, spreadsheetformules en -macro’s, SQL voor relationele database-query’s, YACC grammatica’s voor het maken van parsers, reguliere expressies voor het specificeren van lexers, het Generic Eclipse Modeling System voor het maken van diagramtalen, Csound voor geluids- en muzieksynthese, en de invoertalen van GraphViz en GrGen, softwarepakketten die worden gebruikt voor grafieklay-out en het herschrijven van grafieken, de Hashicorp Configuration Language die wordt gebruikt voor Terraform en andere Hashicorp-tools, Puppet heeft ook een eigen configuratietaal.
GameMaker LanguageEdit
De GML scripttaal die door GameMaker Studio wordt gebruikt, is een domeinspecifieke taal die is gericht op beginnende programmeurs om gemakkelijk te kunnen leren programmeren. Hoewel de taal dient als een mix van meerdere talen waaronder Delphi, C++, en BASIC, is er een gebrek aan structuren, datatypes, en andere kenmerken van een volwaardige programmeertaal. Veel van de ingebouwde functies zijn “sandboxed” met het oog op gemakkelijke portabiliteit. De taal dient in de eerste plaats om het voor iedereen gemakkelijk te maken de taal op te pakken en een spel te ontwikkelen.
ColdFusion Markup LanguageEdit
De bijbehorende scripttaal van ColdFusion is een ander voorbeeld van een domeinspecifieke taal voor gegevensgestuurde websites.Deze scripttaal wordt gebruikt om talen en diensten zoals Java, .NET, C++, SMS, e-mail, e-mail servers, http, ftp, exchange, directory services, en bestandssystemen voor gebruik in websites.
De ColdFusion Markup Language (CFML) omvat een set tags die kunnen worden gebruikt in ColdFusion pagina’s om te interageren met databronnen, gegevens te manipuleren, en output weer te geven. De syntaxis van CFML-tags is vergelijkbaar met die van HTML-elementen.
Erlang OTPEdit
Het Erlang Open Telecom Platform is oorspronkelijk ontworpen voor gebruik binnen Ericsson als een domeinspecifieke taal. De taal zelf biedt een platform van bibliotheken voor het maken van eindige toestandsmachines, generieke servers en event managers waarmee een ingenieur snel applicaties kan implementeren, of ondersteunende bibliotheken, waarvan in industrie benchmarks is aangetoond dat ze beter presteren dan andere talen die bedoeld zijn voor een gemengde set van domeinen, zoals C en C++. De taal is nu officieel open source en kan worden gedownload van hun website.
FilterMeisterEdit
FilterMeister is een programmeeromgeving, met een programmeertaal die is gebaseerd op C, voor het specifieke doel van het maken van Photoshop-compatibele beeldverwerkingsfilter plug-ins; FilterMeister draait als een Photoshop plug-in zelf en het kan scripts laden en uitvoeren of ze compileren en exporteren als onafhankelijke plug-ins.Hoewel de FilterMeister taal een aanzienlijk deel van de C taal en functie bibliotheek reproduceert, bevat het alleen die functies die kunnen worden gebruikt binnen de context van Photoshop plug-ins en voegt een aantal specifieke functies toe die alleen nuttig zijn in dit specifieke domein.
MediaWiki templatesEdit
De Template-functie van MediaWiki is een ingebedde domeinspecifieke taal waarvan het fundamentele doel is om de creatie van paginasjablonen en de transclusie (insluiting door verwijzing) van MediaWiki-pagina’s in andere MediaWiki-pagina’s te ondersteunen.
Software engineering usesEdit
Er is veel belangstelling geweest voor domeinspecifieke talen om de productiviteit en kwaliteit van software engineering te verbeteren. Domeinspecifieke talen zouden mogelijk een robuuste set gereedschappen kunnen bieden voor efficiënte software engineering. Dergelijke hulpmiddelen beginnen hun weg te vinden in de ontwikkeling van kritische softwaresystemen.
De Software Cost Reduction Toolkit is hier een voorbeeld van. De toolkit bestaat uit een reeks hulpprogramma’s, waaronder een specificatie-editor om een eisenspecificatie te maken, een dependency graph browser om afhankelijkheid van variabelen weer te geven, een consistentie-checker om ontbrekende gevallen in welgevormde formules in de specificatie op te sporen, een model-checker en een theorem prover om programma-eigenschappen te toetsen aan de specificatie, en een invariant-generator die automatisch invarianten construeert op basis van de eisen.
Een nieuwere ontwikkeling is taal-georiënteerd programmeren, een geïntegreerde software engineering methodologie die voornamelijk is gebaseerd op het maken, optimaliseren en gebruiken van domeinspecifieke talen.
MetacompilersEdit
Aanvullend op taalgericht programmeren, evenals alle andere vormen van domeinspecifieke talen, is de klasse van compiler-schrijfgereedschappen die metacompilers worden genoemd. Een metacompiler is niet alleen nuttig voor het genereren van parsers en codegeneratoren voor domeinspecifieke talen, maar een metacompiler compileert zelf een domeinspecifieke metataal die specifiek is ontworpen voor het domein van metaprogrammeren.
Naast het parseren van domeinspecifieke talen zijn metacompilers nuttig voor het genereren van een breed scala aan software engineering- en analysegereedschappen. De metacompiler-methodologie wordt vaak aangetroffen in programmatransformatiesystemen.
Metacompilers die een belangrijke rol hebben gespeeld in zowel de informaticawetenschap als de computerindustrie zijn onder meer Meta-II, en zijn afstammeling TreeMeta.
Unreal Engine vóór versie 4 en andere gamesEdit
Unreal en Unreal Tournament onthulden een taal genaamd UnrealScript. Dit maakte een snelle ontwikkeling van modificaties mogelijk in vergelijking met de concurrent Quake (die de Id Tech 2 engine gebruikte). De Id Tech engine gebruikte standaard C-code, wat betekende dat C moest worden geleerd en goed toegepast, terwijl UnrealScript was geoptimaliseerd voor gebruiksgemak en efficiëntie. Op dezelfde manier introduceerde de ontwikkeling van meer recente games hun eigen specifieke talen, een meer voorkomend voorbeeld is Lua voor scripting.
Regels Engines voor Beleids AutomatiseringEdit
Verschillende Business Rules Engines zijn ontwikkeld voor het automatiseren van beleids- en bedrijfsregels die worden gebruikt in zowel de overheid als de particuliere industrie. ILOG, Oracle Policy Automation, DTRules, Drools en anderen bieden ondersteuning voor DSL’s gericht op het ondersteunen van verschillende probleemdomeinen. DTRules gaat zelfs zover dat het een interface definieert voor het gebruik van meerdere DSL’s binnen een Rule Set.
Het doel van Business Rules Engines is het definiëren van een representatie van bedrijfslogica op een zo menselijk-leesbaar mogelijke wijze. Hierdoor kunnen zowel materiedeskundigen als ontwikkelaars werken met dezelfde representatie van de bedrijfslogica en deze begrijpen. De meeste Rules Engines bieden zowel een benadering voor het vereenvoudigen van de controlestructuren voor bedrijfslogica (bijvoorbeeld met behulp van Declarative Rules of Decision Tables) als alternatieven voor de programmeringssyntax ten gunste van DSL’s.
Talen voor statistische modelleringEdit
Statistische modelleurs hebben domeinspecifieke talen ontwikkeld, zoals R (een implementatie van de S-taal),Bugs, Jags, en Stan. Deze talen bieden een syntaxis voor het beschrijven van een Bayesiaans model en genereren een methode voor het oplossen ervan met behulp van simulatie.
Genereer model en diensten naar meerdere programmeertalenEdit
Genereer objectafhandeling en diensten op basis van een Interface Description Language voor een domeinspecifieke taal, zoals JavaScript voor webapplicaties, HTML voor documentatie, C++ voor high-performance code, enzovoort. Dit wordt gedaan door cross-language frameworks zoals Apache Thrift of Google Protocol Buffers.
GherkinEdit
Gherkin is een taal die is ontworpen om testgevallen te definiëren om het gedrag van software te controleren, zonder te specificeren hoe dat gedrag is geïmplementeerd. Het is bedoeld om te worden gelezen en gebruikt door niet-technische gebruikers met behulp van een natuurlijke taal syntaxis en een regel-georiënteerd ontwerp. De tests die met Gherkin worden gedefinieerd, moeten vervolgens in een algemene programmeertaal worden geïmplementeerd. De stappen in een Gherkin-programma fungeren dan als een voor niet-ontwikkelaars toegankelijke syntaxis voor het aanroepen van methoden.
Andere voorbeeldenEdit
Andere prominente voorbeelden van domeinspecifieke talen zijn:
- Emacs Lisp
- Game Description Language
- OpenGL Shading Language
- Gradle
- ActionScript