Domain-specific language

domain specific languagedomain-specificdomain-specific programming languageDSLdomain specific languagesdomain-specific languagesmini-languageDSLsembedded domain-specific languageDomain Specific Language (DSL)
A domain-specific language (DSL) is a computer language specialized to a particular application domain.wikipedia
388 Related Articles

Programming language

programming languageslanguagedialect
DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages (more generally, specification languages), and domain-specific programming languages.
Most programming languages consist of instructions for computers, although there are programmable machines that use a limited set of specific instructions, rather than the general programming languages of modern computers.

Domain-specific modeling

domain-specific modeling languageDomain Specific Modelingdomain modeling
Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling.
It involves systematic use of a domain-specific language to represent the various facets of a system.

General-purpose language

general-purposegeneral programming languagesgeneral-purpose programming
This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains.
This is in contrast to a domain-specific language (DSL), which is specialized to a particular application domain.

SQL

Structured Query LanguageSQL DatabasesWikibook SQL
A computer language like SQL presents an interesting case: it can be deemed a domain-specific language because it is specific to a specific domain (in SQL's case, accessing and managing relational databases), and is often called from another application, but SQL has more keywords and functions than many scripting languages, and is often thought of as a language in its own right, perhaps because of the prevalence of database manipulation in programming and the amount of mastery required to be an expert in the language. Examples of domain-specific languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting.
SQL ( S-Q-L, "sequel"; Structured Query Language) is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS).

Csound

Many domain-specific languages do not compile to byte-code or executable code, but to various kinds of media objects: GraphViz exports to PostScript, GIF, JPEG, etc., where Csound compiles to audio files, and a ray-tracing domain-specific language like POV compiles to graphics files. Examples of domain-specific languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting.
Csound is a computer programming language for sound, also known as a sound compiler or an audio programming language, or more precisely, an audio DSL.

Domain engineering

The design and use of appropriate DSLs is a key part of domain engineering, by using a language suitable to the domain at hand – this may consist of using an existing DSL or GPL, or developing a new DSL.
This information is captured in models that are used in the domain implementation phase to create artifacts such as reusable components, a domain-specific language, or application generators that can be used to build new systems in the domain.

Language-oriented programming

language oriented programmingLanguage-oriented
Language-oriented programming considers the creation of special-purpose languages for expressing problems as standard part of the problem solving process. Complementing language-oriented programming, as well as all other forms of domain-specific languages, are the class of compiler writing tools called metacompilers.
Language-oriented programming (LOP) is a style of computer programming in which, rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific languages for the problem first, and solves the problem in those languages.

Modeling language

modelling languagesoftware modellinglanguage
DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages (more generally, specification languages), and domain-specific programming languages.
It involves systematic use of a graphical domain-specific language (DSL) to represent the various facets of a system.

GrGen

GrGen.NET
Examples of domain-specific languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting.
GrGen.NET is a software development tool that offers programming languages (domain specific languages) that are optimized for the processing of graph structured data.

Printf format string

printfformat string
Domain-specific languages which are called (at runtime) from programs written in general purpose languages like C or Perl, to perform a specific function, often returning the results of operation to the "host" programming language for further processing; generally, an interpreter or virtual machine for the domain-specific language is embedded into the host application (e.g. format strings, a regular expression engine)
There are a few implementations of -like functions that allow extensions to the escape-character-based mini-language, thus allowing the programmer to have a specific formatting function for non-builtin types.

Domain (software engineering)

domainapplication domainapplication domains
A domain-specific language (DSL) is a computer language specialized to a particular application domain.
Domain-specific programming language

Scripting language

scriptingscriptscripts
A domain-specific language is somewhere between a tiny programming language and a scripting language, and is often used in a way analogous to a programming library.
A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, it is also known as an extension language. Scripting languages are also sometimes referred to as very high-level programming languages, as they operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.

Object Constraint Language

OCL
In model-driven engineering, many examples of domain-specific languages may be found like OCL, a language for decorating models with assertions or QVT, a domain-specific transformation language.
Domain Specific Language (DSL)

Regular expression

regular expressionsregexregexp
Examples of domain-specific languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting. For instance, the command line utility grep has a regular expression syntax which matches patterns in lines of text.
The result is a mini-language called Perl 6 rules, which are used to define Perl 6 grammar as well as provide a tool to programmers in the language.

META II

META IMeta-II
Metacompilers that played a significant role in both computer science and the computer industry include Meta-II and its descendent TreeMeta.
META II is a domain-specific programming language for writing compilers.

Lua (programming language)

LuaLua programming languageLua scripting
Similarly, the development of more recent games introduced their own specific languages, one more common example is Lua for scripting.
It provided the basic facilities of most procedural programming languages, but more complicated or domain-specific features were not included; rather, it included mechanisms for extending the language, allowing programmers to implement such features.

Model-driven engineering

model-driven developmentModel Driven Developmentmodel-driven software development
In model-driven engineering, many examples of domain-specific languages may be found like OCL, a language for decorating models with assertions or QVT, a domain-specific transformation language.
Domain-specific language (DSL)

QVT

MOF Queries/Views/Transformations Queries / Views / TransformationsQTV-Operational
In model-driven engineering, many examples of domain-specific languages may be found like OCL, a language for decorating models with assertions or QVT, a domain-specific transformation language.
Domain-specific language (DSL)

Compiler-compiler

parser generatorcompiler compilermetacompiler
Complementing language-oriented programming, as well as all other forms of domain-specific languages, are the class of compiler writing tools called metacompilers. A metacompiler is not only useful for generating parsers and code generators for domain-specific languages, but a metacompiler itself compiles a domain-specific metalanguage specifically designed for the domain of metaprogramming.
This makes possible the design of domain-specific languages which are appropriate to the specification of a particular problem.

Lexical analysis

tokenlexical analyzertokens
Examples of domain-specific languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting.
These generators are a form of domain-specific language, taking in a lexical specification – generally regular expressions with some markup – and emitting a lexer.

Domain-specific entertainment language

Domain-specific entertainment language
Domain-specific entertainment languages are a group of domain-specific languages that are used describe computer games or environments, or potentially used for other entertainment such as video or music.

JetBrains MPS

MPSJetBrains
* JetBrains MPS is a tool for designing domain-specific languages.
MPS is a tool to design domain-specific languages (DSL).

Language workbench

language workbenches
MPS combines an environment for language definition, a language workbench, and an Integrated Development Environment (IDE) for such languages.
A language workbench is a software development tool designed to define, reuse and compose domain-specific languages together with their integrated development environment.

Racket (programming language)

RacketPLTRacket programming language
* Racket is a cross platform language toolchain including compiler, JIT compiler, IDE and command line tools designed to accommodate creating both domain-specific languages and completely new languages.
The core Racket language is known for its extensive macro system which enables creating embedded and domain-specific languages, language constructs such as classes or modules, and separate dialects of Racket with different semantics.

Metaprogramming

metameta-programmingmetaprogram
A metacompiler is not only useful for generating parsers and code generators for domain-specific languages, but a metacompiler itself compiles a domain-specific metalanguage specifically designed for the domain of metaprogramming.
One style of metaprogramming is to employ domain-specific languages (DSLs).