Domain-specific language

Domain Specific Languagedomain-specificdomain-specific programming languageDSLdomain specific languagesdomain-specific languagesmini-languageDSLsembedded domain-specific languageDSEL
A domain-specific language (DSL) is a computer language specialized to a particular application domain.wikipedia
394 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.
There are programmable machines that use a set of specific instructions, rather than general programming languages.

AWK

AWK programming languagegawk
For example, Perl was originally developed as a text-processing and glue language, for the same domain as AWK and shell scripts, but was mostly used as a general-purpose programming language later on.
AWK is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool.

Domain-specific modeling

Domain-specific modellingdomain-specific modeling languageDomain Specific 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 languages
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.

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 Domain-specific computer programming language for audio programming.

SQL

Structured Query LanguageSQL databaseSQL Databases
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).

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 software-development paradigm where "language" is a software building block with the same status as objects, modules and components, and 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.

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.

Modeling language

modelling languageSoftware modelingsoftware modelling
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
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.

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.

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.

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 Raku rules, which are used to define Raku grammar as well as provide a tool to programmers in the language.

META II

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

Model-driven engineering

Model Driven Engineeringmodel-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.

Lua (programming language)

LuaLua programming languageLuaJIT
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.

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.

Lexical analysis

tokenslexical analyzertoken
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.

Compiler-compiler

parser generatorMetacompilercompiler compiler
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.

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.

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 will typically include tools to support the definition, reuse and composition of domain-specific languages together with their integrated development environment.

JetBrains MPS

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

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).