''[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, yes and no. Tcl was originally designed as a ''tool command language'', and in the earliest days, that's exactly how it was used -- embedded in an application for control purposes. Nowadays, of course, most developers simply use Tcl as a general scripting language. Used in that fashion, it's no more a DSL than Perl, Python or Ruby (PPR). 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) no matter the usage environment. The ''secret sauce'' is, of course, [safe] or [[[interp] '''create -safe''']]. [[programming by exception - [lexfiend]: what does it have to do with DSLs?]]