Język specyficzny dla danej dziedziny
Przykłady języków specyficznych dla danej dziedziny obejmują HTML, Logo do rysowania ołówkiem, języki opisu sprzętu Verilog i VHDL, MATLAB i GNU Octave do programowania macierzy, Mathematica, Maple i Maxima do matematyki symbolicznej, Specification and Description Language do systemów reaktywnych i rozproszonych, formuły i makra arkuszy kalkulacyjnych, SQL do zapytań do relacyjnych baz danych, gramatyki YACC do tworzenia parserów, wyrażenia regularne do określania lexerów, Generic Eclipse Modeling System do tworzenia języków diagramów, Csound do syntezy dźwięku i muzyki, języki wejściowe GraphViz i GrGen, pakiety oprogramowania używane do układania i przepisywania grafów, Hashicorp Configuration Language używany w Terraformie i innych narzędziach Hashicorp, Puppet także ma swój własny język konfiguracji.
GameMaker LanguageEdit
Język skryptowy GML używany przez GameMaker Studio jest językiem specyficznym dla danej dziedziny, przeznaczonym dla początkujących programistów, aby mogli łatwo nauczyć się programowania. Chociaż język ten jest mieszanką wielu języków, w tym Delphi, C++ i BASIC, brakuje w nim struktur, typów danych i innych cech pełnoprawnego języka programowania. Wiele z wbudowanych funkcji jest sandboxowanych w celu łatwego przenoszenia. Język ten służy przede wszystkim do tego, aby każdy mógł go łatwo opanować i stworzyć grę.
ColdFusion Markup LanguageEdit
Powiązany z ColdFusion język skryptowy jest kolejnym przykładem języka dziedzinowego dla stron opartych na danych.Ten język skryptowy jest używany do splatania języków i usług takich jak Java, .NET, C++, SMS, e-mail, serwery e-mail, http, ftp, exchange, usługi katalogowe i systemy plików do wykorzystania w witrynach internetowych.
Język ColdFusion Markup Language (CFML) zawiera zestaw znaczników, które mogą być używane na stronach ColdFusion do interakcji ze źródłami danych, manipulowania danymi i wyświetlania danych wyjściowych. Składnia znaczników CFML jest podobna do składni elementów HTML.
Erlang OTPEdit
Otwarta Platforma Telekomunikacyjna Erlang została pierwotnie zaprojektowana do użytku wewnątrz firmy Ericsson jako język specyficzny dla danej dziedziny. Sam język oferuje platformę bibliotek do tworzenia maszyn stanów skończonych, serwerów generycznych i menedżerów zdarzeń, które szybko pozwalają inżynierowi wdrożyć aplikacje lub biblioteki pomocnicze, które okazały się lepsze od innych języków przeznaczonych dla mieszanych dziedzin, takich jak C i C++, w benchmarkach przemysłowych. Język ten jest obecnie oficjalnie otwarty i można go pobrać z ich strony internetowej.
FilterMeisterEdit
FilterMeister jest środowiskiem programistycznym, z językiem programowania opartym na C, przeznaczonym do tworzenia wtyczek filtrów przetwarzania obrazu zgodnych z Photoshopem; FilterMeister działa jako wtyczka do Photoshopa i może ładować i wykonywać skrypty lub kompilować i eksportować je jako niezależne wtyczki.Chociaż język FilterMeister odtwarza znaczną część języka C i biblioteki funkcji, to zawiera tylko te cechy, które można wykorzystać w kontekście wtyczek do Photoshopa i dodaje szereg specyficznych cech przydatnych tylko w tej konkretnej dziedzinie.
Szablony MediaWikiEdit
Właściwość Template w MediaWiki jest wbudowanym językiem dziedzinowym, którego podstawowym celem jest wspieranie tworzenia szablonów stron i włączania (włączania przez odniesienie) stron MediaWiki do innych stron MediaWiki.
Zastosowanie w inżynierii oprogramowaniaEdit
Jest duże zainteresowanie językami dziedzinowymi w celu poprawy wydajności i jakości inżynierii oprogramowania. Języki dziedzinowe mogłyby dostarczyć solidny zestaw narzędzi do wydajnej inżynierii oprogramowania. Takie narzędzia zaczynają się pojawiać w rozwoju krytycznych systemów oprogramowania.
Pakiet narzędziowy Software Cost Reduction Toolkit jest tego przykładem. Jest to zestaw narzędzi zawierający edytor specyfikacji do tworzenia specyfikacji wymagań, przeglądarkę grafów zależności do wyświetlania zależności między zmiennymi, narzędzie do sprawdzania spójności do wyłapywania brakujących przypadków w dobrze sformułowanych formułach w specyfikacji, narzędzie do sprawdzania modelu i weryfikator twierdzeń do sprawdzania właściwości programu względem specyfikacji oraz generator niezmienników, który automatycznie konstruuje niezmienniki na podstawie wymagań.
Najnowszym osiągnięciem jest programowanie zorientowane językowo, zintegrowana metodologia inżynierii oprogramowania oparta głównie na tworzeniu, optymalizacji i używaniu języków specyficznych dla danej dziedziny.
MetakompilatoryEdit
Kompletnym uzupełnieniem programowania zorientowanego na język, jak również wszystkich innych form języków dziedzinowych, jest klasa narzędzi do pisania kompilatorów zwanych metakompilatorami. Metakompilator jest nie tylko przydatny do generowania parserów i generatorów kodu dla języków dziedzinowych, ale sam metakompilator kompiluje metajęzyk dziedzinowy zaprojektowany specjalnie dla dziedziny metaprogramowania.
Poza parsowaniem języków dziedzinowych, metakompilatory są przydatne do generowania szerokiej gamy narzędzi inżynierii oprogramowania i analizy. Metakompilatory, które odegrały znaczącą rolę zarówno w informatyce, jak i przemyśle komputerowym, to Meta-II i jego potomek TreeMeta.
Unreal Engine przed wersją 4 i inne gryEdit
Unreal i Unreal Tournament odsłoniły język zwany UnrealScript. Pozwoliło to na szybkie tworzenie modyfikacji w porównaniu do konkurencyjnego Quake’a (wykorzystującego silnik Id Tech 2). Silnik Id Tech wykorzystywał standardowy kod C, co oznaczało, że C trzeba było się nauczyć i odpowiednio stosować, podczas gdy UnrealScript został zoptymalizowany pod kątem łatwości użycia i wydajności. Podobnie, rozwój nowszych gier wprowadził ich własne specyficzne języki, jednym z bardziej powszechnych przykładów jest Lua dla skryptów.
Silniki reguł dla automatyzacji polityki
Różne silniki reguł biznesowych zostały opracowane dla automatyzacji polityki i reguł biznesowych używanych zarówno w rządzie jak i przemyśle prywatnym. ILOG, Oracle Policy Automation, DTRules, Drools i inne zapewniają wsparcie dla DSLs, których celem jest obsługa różnych domen problemowych. DTRules definiuje interfejs do korzystania z wielu DSL w ramach jednego zestawu reguł.
Celem silników reguł biznesowych jest zdefiniowanie reprezentacji logiki biznesowej w sposób jak najbardziej czytelny dla człowieka. Pozwala to zarówno ekspertom merytorycznym, jak i programistom na pracę z tą samą reprezentacją logiki biznesowej i jej zrozumienie. Większość silników reguł zapewnia zarówno podejście do upraszczania struktur kontrolnych dla logiki biznesowej (na przykład przy użyciu reguł deklaratywnych lub tabel decyzyjnych), jak i alternatywy dla składni programistycznej na rzecz DSL.
Języki modelowania statystycznegoEdit
Modelarze statystyczni opracowali języki specyficzne dla danej dziedziny, takie jak R (implementacja języka S), Bugs, Jags i Stan. Języki te dostarczają składnię do opisu modelu Bayesa i generują metodę jego rozwiązania za pomocą symulacji.
Generowanie modelu i usług do wielu języków programowaniaEdit
Generowanie obsługi obiektów i usług w oparciu o język opisu interfejsu dla języka specyficznego dla danej dziedziny, takiego jak JavaScript dla aplikacji internetowych, HTML dla dokumentacji, C++ dla kodu o wysokiej wydajności, itp. Jest to wykonywane przez międzyjęzykowe frameworki takie jak Apache Thrift lub Google Protocol Buffers.
GherkinEdit
Gherkin jest językiem zaprojektowanym do definiowania przypadków testowych w celu sprawdzenia zachowania oprogramowania, bez określania jak to zachowanie jest zaimplementowane. Jest on przeznaczony do czytania i używania przez nietechnicznych użytkowników, używających składni języka naturalnego i projektowania zorientowanego na linie. Testy zdefiniowane za pomocą Gherkina muszą być następnie zaimplementowane w ogólnym języku programowania. Wtedy kroki w programie Gherkin działają jak składnia wywołań metod dostępna dla nie-programistów.
Inne przykładyEdit
Inne znaczące przykłady języków dziedzinowych to:
- Emacs Lisp
- Game Description Language
- OpenGL Shading Language
- Gradle
- ActionScript
.