Domain-specific language (noun): a computer programming language of limited expressiveness focused on a particular domain.

There are four key elements to this definition:

  • Computer programming language: A DSL is used by humans to instruct a computer to do something. As with any modern programming language, its structure is designed to make it easy for humans to understand, but it should still be something executable by a computer.
  • Language nature: A DSL is a programming language, and as such should have a sense of fluency where the expressiveness comes not just from individual expressions but also from the way they can by composed together.
  • Limited expressiveness: A general-purpose programming language provides lots of capabilities: supporting varied data, control, and abstraction structures. All of this is useful but makes it harder to learn and use.A DSL supports a bare minimum of features needed to support its domain. You can’t build an entire software system in a DSL; rather, you use a DSL for one particular aspect of a system.
  • Domain focus: A limited language is only useful if it has a clear focus on a small domain. The domain focus is what makes a limited language worthwhile.