Looking for a Solid Definition of DSL

In a discussion on mini-languages over on PerlMonks, one poster brought out a series of languages that I wouldn't consider "mini", though they do tend to be used as embedded languages inside a larger language. This poster wanted to include Turing Completeness as a requirement, stateing that if you don't, you may end up including pretty much any non-trivial OO API.

I realized from this that I don't have a good definition of "Domain Specific Language". I'm certain TC shouldn't be a requirement, but I also don't want a definition that's too broad. In the past, I went mostly by intuition; Regular Expressions in Perl "Just Feels" like a mini-language to me, but obviously this lacks rigor.

Is there an accepted definition of DSL or mini-language?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

How about the definition(s) g

How about the definition(s) given here?

DSL and mini-languages are quite different

Domain specific language and General Purpose Language classify a language by their purpose, while mini-languages and full languages are different in terms of scope and expanse.

Mini-languages are usually easier to implement, but this is not necessarily true of DSLs. DSLs are meant to be easier to use and more expressive in the specific domain.

For instance, by today's standards GWBASIC is a mini, general purpose language. But without the ability to define functions easily, it is not an easy tool to perform domain specific tasks.

By the way, is Google's search box a mini declarative DSL or is it more general purpose? (Since I can type in (20+5) * 20 and get an answer)