A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language, which is broadly applicable across domains - wikipedia
discussion on c2.com
There is a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as Emacs Lisp for GNU Emacs and XEmacs.
DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages, and domain-specific programming languages.
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. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.
# Advantages Some of the advantages:
* Domain-specific languages allow solutions to be expressed in the idiom and at the level of abstraction of the problem domain. The idea is that domain experts themselves may understand, validate, modify, and often even develop domain-specific language programs. However, this is seldom the case.[ Domain Specific Languages in a Customs Information System] * Domain-specific languages allow Computer security|validation at the domain level. As long as the language constructs are safe any sentence written with them can be considered safe. * Domain-specific languages can help to shift the development of business information systems from traditional software developers to the typically larger group of domain-experts who (despite having less technical expertise) have deeper knowledge of the domain.Multilayered analysis of co-development of business information systems * Domain-specific languages are easier to learn, given their limited scope.
# Disadvantages Some of the disadvantages:
* Cost of learning a new language vs. its limited applicability * Cost of designing, implementing, and maintaining a domain-specific language as well as the tools required to develop with it (Integrated Development Environment|IDE) * Finding, setting, and maintaining proper scope. * Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs. * Potential loss of processor algorithmic efficiency|efficiency compared with hand-coded software. * Proliferation of similar non-standard domain-specific languages, for example, a DSL used within one insurance company versus a DSL used within another insurance company.On the integration of domain-specific and scientific bodies of knowledge in Model Driven Engineering * Non-technical domain experts can find it hard to write or modify DSL programs by themselves.<ref name="Freudenthal"/> * Increased difficulty of integrating the DSL with other components of the IT system (as compared to integrating with a general-purpose language). * Low supply of experts in a particular DSL tends to raise labor costs. * Harder to find code examples.
# See also