Buzzword Buster – DSL

Definition:

A Domain Specific Language (DSL) is a programming language that’s dedicated to a particular problem domain. DSLs are often used to support domain-drive design and modelling. It’s the opposite of general purpose programming languages such as C# or Java.

Advantages:

  • Code looks like domain prose.
  • Easier to understand by everyone.
  • Easier to align with requirements.
  • More succinct (so less code is required!).

Disadvantages:

  • Hard to design, test and debug.
  • Bad API designers make even worse DSL designers!
  • Different people use different terminologies (think mobile in the UK and ‘cell’ in the US) which reduces DSL’s ability to bridge gaps in communication.

Parting thoughts..

  • Industry specific, so from a career and personal development point of view, it’s not attractive to me to specialize myself in DSLs and be locked into one industry.
  • Existing expertise and talent is hard to find (compared to general purpose languages).
  • Additional training required for people new to the industry.