Domain Specific Languages

By Simon Strandgaard

A DSL is created specifically to solve problems in a particular domain and is not intended to be able to solve problems outside of it.

Usually a DSL is a tiny programming language, which is well-suited for solving a narrow range of problems, that does'nt express well in a general purpose language. Usually a DSL cannot compile into an executable.

see definition here [Wikipedia].

see chapter 5.5 in Generative Programming, by Krzysztof Czarnecki and Ulrich W. Eisenecker.

Examples

Advantage

can be easier to express things within a domain. may allow a non-programmer to express things (less costly).

Disadvantage

can be costly to develop and maintain.

Observation

Personly I find Ruby interesting, which is a general purpose language that allows for creating custom DSL's. Allowing you to use this well known language within your domain specific code.

see [martinfowler on Internal DSL].