''[lexfiend] 2 Mar 2006:'' A ''domain-specific language'' is, generally speaking, a language purpose-built for a specific problem domain. Some examples: * '''Text processing:''' awk, sed, m4 * '''Document preparation:''' LaTeX, roff * '''Page description:''' PostScript * '''Software development:''' make, lexx, yacc Aside from the concept of '''domain suitability''' alluded to above, many have tried to further pin down the defining characteristics of a DSL. For instance, see [http://www.martinfowler.com/bliki/DomainSpecificLanguage.html] [http://homepages.cwi.nl/~arie/papers/dslbib/] [http://compose.labri.fr/documentation/dsl/dsl_overview.php3]. Microsoft has its own visual-programming take on DSLs: [http://msdn.microsoft.com/vstudio/DSLTools/]. '''So is Tcl a DSL?''' Well, no, not in the strict sense of the term. However, Tcl is one of those rare languages in which it's easy to create a ''proper'' DSL (i.e. one that minimizes/eliminates everything except the features specific to the domain) while still retaining the full power and expressivity of the base language for the DSL implementation itself. The ''secret sauce'' is, of course, [safe] or [[[interp] '''create -safe''']]. [[programming by exception - [lexfiend]: what does it have to do with DSLs?]]