Jazyk specifický pro doménu - Domain-specific language
A jazyk specifický pro doménu (DSL) je počítačový jazyk specializované na konkrétní aplikaci doména. To je na rozdíl od a univerzální jazyk (GPL), který je široce použitelný napříč doménami. Existuje široká škála DSL, od široce používaných jazyků pro běžné domény, jako je HTML pro webové stránky, až po jazyky používané pouze jedním nebo několika kusy softwaru, například KAŠE měkký kód. DSL lze dále rozdělit podle druhu jazyka a zahrnují specifické pro doménu označení jazyky, specifické pro doménu modelování jazyky (obecněji, specifikační jazyky ) a specifické pro doménu programování jazyky. Počítačové jazyky se zvláštním účelem vždy existovaly v počítačovém věku, ale termín „jazyk specifický pro doménu“ se stal populárnějším kvůli vzestupu modelování specifické pro doménu. Jednodušší DSL, zejména ty, které používá jedna aplikace, se někdy neformálně nazývají minijazyky.
Hranice mezi univerzálními jazyky a jazyky specifickými pro doménu není vždy ostrá, protože jazyk může mít pro určitou doménu specializované funkce, ale může být použit širší, nebo naopak může být v zásadě schopen široké aplikace, ale v praxi se používá především pro konkrétní doménu. Například, Perl byl původně vyvinut jako jazyk pro zpracování textu a lepení pro stejnou doménu jako AWK a shell skripty, ale později se většinou používal jako univerzální programovací jazyk. Naproti tomu PostScript je Turing dokončen jazyk, a v zásadě lze použít pro jakýkoli úkol, ale v praxi se úzce používá jako a jazyk popisu stránky.
Použití
Klíčovou součástí je návrh a použití příslušných DSL doménové inženýrství pomocí jazyka vhodného pro danou doménu - to může spočívat v použití stávajícího DSL nebo GPL nebo ve vývoji nového DSL. Jazykově orientované programování považuje vytvoření speciálních jazyků pro vyjadřování problémů za standardní součást procesu řešení problémů. Vytvoření jazyka specifického pro doménu (se softwarem, který jej podporuje), místo opětovného použití existujícího jazyka, může být užitečné, pokud jazyk umožňuje jasnější vyjádření konkrétního typu problému nebo řešení, než jaký by existující jazyk umožňoval, a typ daný problém se znovu objevuje dostatečně často. Pragmaticky může být DSL specializován na konkrétní problémovou doménu, konkrétní techniku reprezentace problému, konkrétní techniku řešení nebo jiné aspekty domény.
Přehled
Jazyk specifický pro doménu je vytvořen speciálně pro řešení problémů v konkrétní doméně a není určen k tomu, aby byl schopen řešit problémy mimo ni (i když to může být technicky možné). Naproti tomu jsou univerzální jazyky vytvářeny k řešení problémů v mnoha doménách. Doménou může být také obchodní oblast. Mezi příklady oblastí podnikání patří:
- životní pojistky (interně vyvinuté velkým pojišťovacím podnikem)
- bojová simulace
- výpočet platu
- fakturace
Jazyk specifický pro doménu je někde mezi malým programovacím jazykem a skriptovací jazyk, a je často používán způsobem analogickým k a programovací knihovna. Hranice mezi těmito koncepty jsou docela rozmazané, podobně jako hranice mezi skriptovacími jazyky a univerzálními jazyky.
Při návrhu a implementaci
Jazyky specifické pro doménu jsou jazyky (nebo často deklarované syntaxe nebo gramatiky) s velmi konkrétními cíli v oblasti designu a implementace. Jazyk specifický pro doménu může být jedním z jazyků vizuálního diagramu, jako jsou například jazyky vytvořené doménou Obecný systém modelování zatmění, programové abstrakce, například Eclipse Modeling Framework nebo textové jazyky. Například obslužný program příkazového řádku grep má regulární výraz syntaxe, která odpovídá vzorům v řádcích textu. The sed obslužný program definuje syntaxi pro shodu a nahrazení regulárních výrazů. Tyto malé jazyky lze často používat společně uvnitř a skořápka provádět složitější programovací úkoly.
Hranice mezi jazyky specifickými pro doménu a skriptovací jazyky je poněkud rozmazaný, ale jazykům specifickým pro doménu často chybí nízkoúrovňové funkce pro přístup k souborovému systému, řízení meziprocesu a další funkce, které charakterizují plnohodnotné programovací jazyky, skriptování apod. Mnoho jazyků specifických pro doménu se nezkompiluje byte-code nebo spustitelný kód, ale do různých druhů mediálních objektů: GraphViz exportuje do PostScript, GIF, JPEG atd., kde Zvuk kompiluje do zvukových souborů a ray-tracing specifický jazyk domény POV kompiluje do grafických souborů. Počítačový jazyk jako SQL představuje zajímavý případ: lze jej považovat za jazyk specifický pro doménu, protože je specifický pro konkrétní doménu (v případě SQL přístup a správa relačních databází) a je často volán z jiné aplikace, ale SQL má více klíčových slov a funkcí než mnoho skriptovacích jazyků, a je často považován za jazyk sám o sobě, snad kvůli prevalenci manipulace s databází v programování a množství zvládnutí vyžadovaného k tomu, aby byl odborník v daném jazyce.
Dále rozmazání tohoto řádku, mnoho jazyků specifických pro doménu vystavilo API a lze k nim přistupovat z jiných programovacích jazyků, aniž by došlo k přerušení toku provádění nebo volání samostatného procesu, a může tak fungovat jako programovací knihovny.
Programovací nástroje
Některé jazyky specifické pro doménu se časem rozšiřují o plnohodnotné programovací nástroje, což dále komplikuje otázku, zda je jazyk specifický pro danou doménu. Dobrým příkladem je funkční jazyk XSLT, speciálně navržený pro transformaci jednoho grafu XML do jiného, který byl od svého založení rozšířen tak, aby umožňoval (zejména v jeho verzi 2.0) různé formy interakce souborového systému, manipulace s řetězci a datem a psaní dat.
v modelové řízení, mnoho příkladů jazyků specifických pro doménu lze najít jako OCL, jazyk pro zdobení modelů tvrzeními nebo QVT, transformační jazyk specifický pro doménu. Jazyky se však líbí UML jsou obvykle univerzální modelovací jazyky.
Abychom to shrnuli, může být užitečná analogie: Velmi malý jazyk je jako nůž, který lze použít tisíci různými způsoby, od řezání jídla až po kácení stromů. Jazyk specifický pro doménu je jako elektrická vrtačka: je to mocný nástroj s širokou škálou použití, ale se specifickým kontextem, konkrétně s děrováním věcí. General Purpose Language je kompletní pracovní plocha s řadou nástrojů určených k provádění nejrůznějších úkolů. Jazyky specifické pro doménu by měli používat programátoři, kteří si při pohledu na svůj aktuální pracovní stůl uvědomují, že potřebují lepší nácvik a zjistí, že konkrétní jazyk specifický pro danou doménu to přesně poskytuje.
Jazyková témata specifická pro doménu
Jazyky specifické pro externí a integrovanou doménu
DSL implementované prostřednictvím nezávislého tlumočníka nebo překladače jsou známé jako Jazyky specifické pro externí doménu. Známé příklady zahrnují LaTeX nebo AWK. Samostatná kategorie známá jako Integrované (nebo interní) jazyky specifické pro doménu jsou obvykle implementovány v hostitelském jazyce jako knihovna a mají tendenci být omezeny na syntaxi hostitelského jazyka, i když to závisí na schopnostech hostitelského jazyka.[1]
Vzory použití
Existuje několik vzorů použití pro jazyky specifické pro doménu:[2][3]
- Zpracování pomocí samostatných nástrojů vyvolaných přímou obsluhou uživatele, často na příkazovém řádku nebo z a Makefile (např. grep pro porovnávání regulárních výrazů, sed, lex, yacc, the GraphViz sada nástrojů atd.)
- Jazyky specifické pro doménu, které jsou implementovány pomocí makrosystémů programovacích jazyků a které jsou převedeny nebo rozšířeny do hostitelského obecného jazyka v době kompilace nebo v reálném čase
- vložený jazyk specifický pro doménu (eDSL),[4] implementovány jako knihovny, které využívají syntaxi svého hostitelského jazyka pro obecné použití nebo jeho podmnožinu při přidávání jazykových prvků specifických pro doménu (datové typy, rutiny, metody, makra atd.). (např. jQuery, Reagovat, Vestavěný SQL, LINQ )
- Jazyky specifické pro doménu, které se nazývají (za běhu) z programů napsaných v obecných jazycích, například C nebo Perl, provádět specifickou funkci, často vracet výsledky operace do „hostitelského“ programovacího jazyka pro další zpracování; obecně tlumočník nebo virtuální stroj pro jazyk specifický pro doménu je vložen do hostitelské aplikace (např. řetězce formátu, a modul regulárního výrazu )
- Jazyky specifické pro doménu, které jsou zabudovány do uživatelských aplikací (např. Jazyky maker v tabulkách) a které se (1) používají ke spouštění kódu, který píší uživatelé aplikace, (2) dynamicky generované aplikací nebo (3) oba.
Mnoho jazyků specifických pro doménu lze použít více než jedním způsobem.[Citace je zapotřebí ] Kód DSL vložený v hostitelském jazyce může mít speciální podporu syntaxe, jako jsou regulární výrazy v sed, AWK, Perl nebo JavaScript, nebo může být předán jako řetězce.
Cíle designu
Přijetí jazykového přístupu specifického pro doménu k softwarovému inženýrství zahrnuje rizika i příležitosti. Dobře navržený jazyk specifický pro doménu dokáže najít správnou rovnováhu mezi nimi.
Jazyky specifické pro doménu mají důležité designové cíle, které kontrastují s cíli jazyků pro všeobecné účely:
- Jazyky specifické pro doménu jsou méně komplexní.
- Jazyky specifické pro doménu jsou ve své doméně mnohem expresivnější.
- Jazyky specifické pro doménu by měly vykazovat minimum nadbytek.
Idiomy
V programování jsou idiomy metody uložené programátory pro zpracování běžných vývojových úkolů, např .:
- Před zavřením okna zajistěte uložení dat.
- Upravte kód, kdykoli se změní parametry příkazového řádku, protože ovlivňují chování programu.
Programovací jazyky pro obecné účely takové idiomy zřídka podporují, ale jazyky specifické pro doménu je mohou popsat, např .:
- Skript může automaticky ukládat data.
- Jazyk specifický pro doménu může parametrizovat vstup z příkazového řádku.
Příklady
Mezi příklady jazyků specifických pro doménu patří HTML, Logo pro kresbu tužkou, Verilog a VHDL jazyky popisu hardwaru, MATLAB a GNU oktáva pro programování matic, Mathematica, Javor a Maxima pro symbolická matematika, Jazyk specifikace a popisu pro reaktivní a distribuované systémy, tabulkový kalkulátor vzorce a makra, SQL pro relační databáze dotazy, YACC gramatiky pro tvorbu analyzátory, regulární výrazy pro upřesnění lexers, Obecný systém modelování zatmění pro vytváření diagramovacích jazyků, Zvuk pro syntézu zvuku a hudby a vstupní jazyky jazyka GraphViz a GrGen, softwarové balíčky používané pro rozložení grafu a přepis grafu.
Jazyk GameMaker
Skriptovací jazyk GML používaný serverem Studio GameMaker je jazyk specifický pro doménu zaměřený na začínající programátory, aby se snadno naučili programovat. Zatímco jazyk slouží jako směs více jazyků včetně Delphi, C ++, a ZÁKLADNÍ, chybí plno struktur, datových typů a dalších funkcí plnohodnotného programovacího jazyka. Mnoho z integrovaných funkcí je pískoviště za účelem snadné přenositelnosti. Jazyk slouží především k tomu, aby si kdokoli mohl snadno osvojit jazyk a vyvinout hru.
Unixové skripty prostředí
Unix shell skripty uveďte dobrý příklad jazyka specifického pro doménu pro data[5] organizace. Mohou manipulovat s daty soubory nebo vstup uživatele mnoha různými způsoby. Zahrnují doménové abstrakce a notace proudy (například stdin a stdout) a operace s proudy (jako je přesměrování a potrubí). Kombinace těchto abstrakcí vytváří robustní jazyk popisující tok a organizaci dat.
Jazyk se skládá z jednoduchého rozhraní (skript) pro běh a ovládání procesy které hrají malé úkoly. Tyto úkoly představují idiomy organizování dat do požadovaného formátu, jako jsou tabulky, grafy, tabulky atd.
Tyto úkoly se skládají z jednoduchých regulační tok a mechanismy manipulace s řetězci, které pokrývají mnoho běžných zvyklostí, jako je vyhledávání a nahrazování tětiva v souborech nebo počítání výskytů řetězců (počítání frekvence).
Přestože skriptovací jazyky Unixu jsou Turing dokončen, liší se od univerzální jazyky.[je zapotřebí objasnění ]
V praxi, skriptovací jazyky se používají k propletení malých unixových nástrojů, jako jsou grep, je, třídit nebo toaleta.
Značkovací jazyk ColdFusion
Studená fúze Přidružený skriptovací jazyk je dalším příkladem jazyka specifického pro doménu pro webové stránky založené na datech. Tento skriptovací jazyk se používá k vzájemnému propojení jazyků a služeb, jako jsou Java, .NET, C ++, SMS, e-maily, e-mailové servery, http, ftp , burza, adresářové služby a souborové systémy pro použití na webových stránkách.
The Značkovací jazyk ColdFusion (CFML) obsahuje sadu značek, které lze na stránkách ColdFusion použít k interakci se zdroji dat, manipulaci s daty a zobrazení výstupu. Syntaxe značky CFML je podobná syntaxi prvku HTML.
Erlang OTP
Erlang Open Telecom Platform byl původně navržen pro použití uvnitř Ericsson jako jazyk specifický pro doménu. Samotný jazyk nabízí platformu knihoven pro vytváření konečných stavových strojů, obecných serverů a správců událostí, které rychle umožňují technikovi nasazovat aplikace nebo podporovat knihovny, které byly ukázány v průmyslových srovnávacích testech, aby překonaly jiné jazyky určené pro smíšenou sadu domén , například C a C ++. Jazyk je nyní oficiálně otevřený a lze jej stáhnout z jejich webových stránek.
FilterMeister
FilterMeister je programovací prostředí s programovacím jazykem založeným na C pro konkrétní účel vytváření Photoshop -kompatibilní zásuvné moduly filtru pro zpracování obrazu; FilterMeister běží jako samotný zásuvný modul Photoshopu a může načítat a spouštět skripty nebo je kompilovat a exportovat jako nezávislé zásuvné moduly. Ačkoli jazyk FilterMeister reprodukuje významnou část knihovny jazyka C a funkcí, obsahuje pouze ty funkce, které mohou být používán v kontextu zásuvných modulů aplikace Photoshop a přidává řadu konkrétních funkcí užitečných pouze v této konkrétní doméně.
Šablony MediaWiki
The Šablona funkce MediaWiki je integrovaný jazyk specifický pro doménu, jehož základním účelem je podpora vytváření šablony stránek a transluce (zahrnutí odkazem) stránek MediaWiki na jiné stránky MediaWiki.
Použití softwarového inženýrství
Velký zájem byl o jazyky specifické pro doménu, aby se zlepšila produktivita a kvalita softwarové inženýrství. Jazyk specifický pro doménu by mohl poskytnout robustní sadu nástrojů pro efektivní softwarové inženýrství. Tyto nástroje si začínají razit cestu do vývoje kritických softwarových systémů.
Sada nástrojů pro snížení nákladů na software[6] je toho příkladem. Sada nástrojů je sada nástrojů včetně editoru specifikací pro vytvoření souboru specifikace požadavků, prohlížeč grafů závislostí pro zobrazení proměnných závislostí, a kontrola konzistence chytit chybějící případy v dobře formulované vzorce ve specifikaci, a kontrola modelu a a věta prover zkontrolovat vlastnosti programu podle specifikace a invariantní generátor, který automaticky vytvoří invarianty na základě požadavků.
Novější vývoj je jazykově orientované programování, integrované softwarové inženýrství metodologie založené hlavně na vytváření, optimalizaci a používání jazyků specifických pro doménu.
Metacompilers
Doplnění jazykově orientované programování, stejně jako všechny ostatní formy jazyků specifických pro doménu, se nazývá třída nástrojů pro psaní překladačů metakompilery. Metakompilátor je nejen užitečný pro generování analyzátory a generátory kódu pro jazyky specifické pro doménu, ale a metakompilátor sám sestavuje specifický pro doménu metajazyk speciálně navrženo pro doménu metaprogramování.
Kromě analýzy jazyků specifických pro doménu jsou metakompilátory užitečné pro generování široké škály softwarových nástrojů a analytických nástrojů. Metodika metazkompilátoru se často nachází v systémy transformace programů.
Metacompilers, které hrály významnou roli jak v počítačové vědě, tak v počítačovém průmyslu Meta-II,[7] a jeho potomek TreeMeta.[8]
Unreal Engine před verzí 4 a dalšími hrami
Neskutečný a Neskutečný turnaj představila jazyk zvaný UnrealScript. To umožnilo rychlý vývoj úprav ve srovnání s konkurencí Zemětřesení (za použití Id Tech 2 motor). Motor Id Tech používal standard C kód s významem C se musel naučit a správně aplikovat, zatímco UnrealScript byl optimalizován pro snadné použití a efektivitu. Podobně vývoj novějších her představil jejich vlastní specifické jazyky, jedním častějším příkladem je Lua pro skriptování.[Citace je zapotřebí ]
Pravidla Engines pro automatizaci zásad
Rozličný Obchodní pravidla Engines byly vyvinuty pro automatizaci politiky a obchodních pravidel používaných ve vládním i soukromém průmyslu. ILOG, Oracle Policy Automation, DTRules, Slintá a další poskytují podporu pro DSL zaměřené na podporu různých problémových domén. DTRules jde tak daleko, že definuje rozhraní pro použití více DSL v sadě pravidel.
Účelem Business Rules Engines je definovat reprezentaci obchodní logiky co nejčtenějším způsobem. To umožňuje obojí odborníci na předmět a vývojáři, aby pracovali a chápali stejnou reprezentaci obchodní logiky. Většina modulů pravidel poskytuje přístup ke zjednodušení řídicích struktur pro obchodní logiku (například pomocí deklarativních pravidel nebo Rozhodovací tabulky ) spolu s alternativami programovací syntaxe ve prospěch DSL.
Statistické modelovací jazyky
Statističtí modeláři vyvinuli jazyky specifické pro doménu, jako např R (implementace S Jazyk),Hmyz, Jags, a Stan. Tyto jazyky poskytují syntaxi pro popis Bayesovského modelu a generují metodu jeho řešení pomocí simulace.
Generujte model a služby pro více programovacích jazyků
Generování manipulace s objekty a služeb na základě Jazyk popisu rozhraní pro jazyk specifický pro doménu, jako je JavaScript pro webové aplikace, HTML pro dokumentaci, C ++ pro vysoce výkonný kód atd. To se provádí pomocí mezijazykových rámců, jako jsou Apache Thrift nebo Vyrovnávací paměti protokolu Google.
kyselá okurka
kyselá okurka je jazyk určený k definování testovacích případů ke kontrole chování softwaru, aniž by specifikoval, jak je toto chování implementováno. Je určen ke čtení a použití netechnickými uživateli pomocí syntaxe přirozeného jazyka a lineárně orientovaný design. Testy definované pomocí Gherkin musí být poté implementovány v obecném programovacím jazyce. Kroky v programu Gherkin pak fungují jako syntaxe vyvolání metody přístupné pro vývojáře.
Další příklady
Mezi další prominentní příklady jazyků specifických pro doménu patří:
Výhody a nevýhody
- Jazyky specifické pro doménu umožňují vyjádření řešení v idiomu a na úrovni abstrakce problémové domény. Myšlenka je, že odborníci na doménu sami mohou rozumět, ověřovat, upravovat a často dokonce vyvíjet jazykové programy specifické pro doménu. Tak tomu však je zřídka.[9]
- Jazyky specifické pro doménu umožňují validace na úrovni domény. Dokud jsou jazykové konstrukce bezpečné, lze jakoukoli větu s nimi psanou považovat za bezpečnou.[Citace je zapotřebí ]
- Jazyky specifické pro doménu mohou pomoci posunout vývoj podnikových informačních systémů od tradičních vývojářů softwaru k typicky větší skupině doménových odborníků, kteří (navzdory tomu, že mají menší technické znalosti), mají o doméně hlubší znalosti.[10]
- Jazyky specifické pro doménu se snadněji učí, vzhledem k jejich omezenému rozsahu.
Některé z nevýhod:
- Náklady na učení nového jazyka vs. jeho omezená použitelnost
- Náklady na návrh, implementaci a údržbu jazyka specifického pro doménu, jakož i nástroje potřebné k jeho vývoji (IDE )
- Nalezení, nastavení a udržování správného rozsahu.
- Obtížnost vyvážení kompromisů mezi doménovou specifičností a konstrukcemi univerzálního programovacího jazyka.
- Potenciální ztráta procesoru účinnost ve srovnání s ručně kódovaným softwarem.
- Šíření podobných nestandardních jazyků specifických pro doménu, například DSL používaný v jedné pojišťovně versus DSL používaný v jiné pojišťovně.[11]
- Pro netechnické odborníky na doménu je obtížné psát nebo upravovat programy DSL sami.[9]
- Zvýšená obtížnost integrace DSL s ostatními komponentami systému IT (ve srovnání s integrací s univerzálním jazykem).
- Nízká nabídka odborníků v konkrétním DSL má tendenci zvyšovat mzdové náklady.
- Těžší najít příklady kódu.
Nástroje pro navrhování jazyků specifických pro doménu
- JetBrains MPS je nástroj pro navrhování jazyků specifických pro doménu. Využívá to projekční úpravy což umožňuje překonat limity jazykových analyzátorů a vytvářet editory DSL, jako jsou například tabulky a diagramy. Implementuje jazykově orientované programování. MPS kombinuje prostředí pro definici jazyka, a jazykový pracovní stůl a integrované vývojové prostředí (IDE) pro tyto jazyky.[12]
- Xtext je open-source softwarový rámec pro vývoj programovacích jazyků a jazyků specifických pro doménu (DSL). Na rozdíl od standardních generátorů syntaktických analyzátorů generuje Xtext nejen syntaktický analyzátor, ale také model třídy pro abstraktní syntaxový strom. Kromě toho poskytuje plně vybavené přizpůsobitelné IDE založené na Eclipse.[13]
- Raketa je multiplatformní jazykový nástrojový řetězec včetně kompilátoru, kompilátoru JIT, IDE a nástrojů příkazového řádku navržených tak, aby vyhovovaly vytváření jak jazyků specifických pro doménu, tak zcela nových jazyků.[14][15]
Viz také
- Pracovní stůl jazyka
- Jazyk popisu architektury
- Zábavný jazyk specifický pro doménu
- Jazyk pro konkrétní účely
- Metalingvistická abstrakce
- Programovací doména
Reference
![]() | Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Září 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
- ^ Fowler, Martin; Parsons, Rebecca. „Jazyky specifické pro doménu“. Citováno 6. července 2019.
- ^ A b Marjan Mernik, Jan Heering a Anthony M. Sloane. Kdy a jak vyvíjet jazyky specifické pro doménu. ACM Computing Surveys, 37(4):316–344, 2005.doi:10.1145/1118890.1118892
- ^ A b Diomidis Spinellis. Pozoruhodné návrhové vzory pro jazyky specifické pro doménu. Journal of Systems and Software, 56 (1): 91–99, únor 2001. doi:10.1016 / S0164-1212 (00) 00089-3
- ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (březen 2018). „Programovatelný programovací jazyk“. Komunikace ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010. Citováno 15. května 2019.
- ^ „Definice dat pomocí Linux Information Project (LINFO)“. www.linfo.org. Citováno 2016-01-14.
- ^ Heitmeyer, C. (1998). „Použití sady nástrojů SCR * k určení požadavků na software“ (PDF). Řízení. 2. seminář IEEE o formálních technikách formální specifikace síly v průmyslu. IEEE. s. 12–13. doi:10.1109 / WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058. Archivovány od originál (PDF) dne 19. července 2004.
- ^ Shorre, D. V. (1964). Msgstr "META II syntaxově orientovaný psací jazyk překladače". Sborník 19. mezinárodní konference ACM z roku 1964: 41.301–41.3011. doi:10.1145/800257.808896. S2CID 43144779.
- ^ Carr, C. Stephen; Luther, David A .; Erdmann, Sherian (1969). „Systém překladačů a překladačů TREE-META: Meta překladačový systém pro Univac 1108 a General Electric 645“. Technická zpráva University of Utah RADC-TR-69-83.
- ^ A b Freudenthal, Margus (1. ledna 2009). "Jazyky specifické pro doménu v celním informačním systému". Software IEEE: 1. doi:10.1109 / MS.2009.152.
- ^ Aram, Michael; Neumann, Gustaf (01.07.2015). „Vícevrstvá analýza společného vývoje podnikových informačních systémů“ (PDF). Journal of Internet Services and Applications. 6 (1). doi:10.1186 / s13174-015-0030-8. S2CID 16502371.
- ^ Miotto, Eric. „O integraci doménově specifických a vědeckých orgánů znalostí v Model Driven Engineering“ (PDF). Archivovány od originál (PDF) dne 2011-07-24. Citováno 2010-11-22.
- ^ „JetBrains MPS: Domain-Specific Language Creator“.
- ^ „Xtext“.
- ^ Tobin-Hochstadt, S .; St-Amour, V .; Culpepper, R .; Flatt, M .; Felleisen, M. (2011). „Jazyky jako knihovny“ (PDF). Návrh a implementace programovacího jazyka.
- ^ Flatt, Matthew (2012). „Vytváření jazyků v raketě“. Komunikace ACM. Citováno 2012-04-08.
Další čtení
![]() | Tento Další čtení část může obsahovat nevhodné nebo nadměrné návrhy, které se nemusí řídit Wikipedií pokyny. Ujistěte se, že pouze a přiměřený počet z vyrovnaný, aktuální, spolehlivýa jsou uvedeny pozoruhodné návrhy pro další čtení; odstranění méně relevantních nebo nadbytečných publikací pomocí stejný úhel pohledu kde se to hodí. Zvažte použití vhodných textů jako vložené zdroje nebo vytvoření samostatný bibliografický článek. (Únor 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) |
- Dunlavey (1994). Vytváření lepších aplikací: teorie efektivního vývoje softwaru. Mezinárodní vydavatelství Thomson. ISBN 0-442-01740-5.
- Heitmeyer, Constance (1998). „Použití sady nástrojů SCR ke specifikaci softwarových požadavků“ (PDF). Proceedings, Second IEEE Workshop on Industrial Strength Formal Specification Techniques, Boca Raton, FL, 19. října 1998: 12–13. doi:10.1109 / WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058.
- Mernik, Marjan; Heering, Jan & Sloane, Anthony M. (2005). „Kdy a jak vyvíjet jazyky specifické pro doménu“. ACM Computing Surveys. 37 (4): 316–344. doi:10.1145/1118890.1118892. S2CID 207158373.
- Spinellis, Diomidis (2001). Msgstr "Pozoruhodné vzory pro jazyky specifické pro doménu". Journal of Systems and Software. 56 (1): 91–99. doi:10.1016 / S0164-1212 (00) 00089-3.
- Parr, Terence (2007). Definitivní odkaz ANTLR: Vytváření jazyků specifických pro doménu. ISBN 978-0-9787392-5-6.
- Larus, James (2009). „Utratit Mooreovu dividendu“. Komunikace ACM. 52 (5): 62–69. doi:10.1145/1506409.1506425. ISSN 0001-0782. S2CID 2803479.
- Werner Schuster (15. června 2007). „Co je to Ruby DSL a co ne?“. C4Media. Citováno 2009-09-08.
- Fowler, Martin (2011). Jazyky specifické pro doménu. ISBN 978-0-321-71294-3.
- Brambilla, Marco; Cabot, Jordi; Wimmer, Manuel (2012). Modelové softwarové inženýrství v praxi. Syntetické přednášky o softwarovém inženýrství. #1. Morgan & Claypool. ISBN 978-1-62705-708-0.
externí odkazy
- "Minilanguages ", Umění programování v Unixu, podle Eric S.Raymond
- Martin Fowler o jazycích specifických pro doménu a Jazykové pracovní stoly. Také v videoprezentace
- Jazyky specifické pro doménu: anotovaná bibliografie
- Překladače jednoho dne: Vytváření malého jazyka specifického pro doménu pomocí OCaml
- Asociace Usenix: Konference o jazycích specifických pro doménu (DSL '97) a 2. konference o jazycích specifických pro doménu (DSL '99)
- Interní jazyky specifické pro doménu
- Kompletní průvodce pro (externí) jazyky specifické pro doménu
- jEQN příklad interního jazyka specifického pro doménu pro modelování a simulaci Extended Sítě ve frontě.
- Články
- Externí DSL s technologií Eclipse
- "Vytváření jazyků specifických pro doménu přes jazykový rámec". CiteSeerX 10.1.1.50.4685. Citovat deník vyžaduje
| deník =
(Pomoc) - Používání Acceleo s GMF: Generování prezentací od modeláře MindMap DSL
- UML vs. jazyky specifické pro doménu
- Sagar Sen; et al. "Meta-model Prořezávání". CiteSeerX 10.1.1.156.6008. Citovat deník vyžaduje
| deník =
(Pomoc)