Buzzword Buster — DSL


A Domain Specif­ic Language (DSL) is a pro­gram­ming lan­guage that’s ded­i­cat­ed to a par­tic­u­lar prob­lem domain. DSLs are often used to sup­port domain-dri­ve design and mod­el­ling. It’s the oppo­site of gen­er­al pur­pose pro­gram­ming lan­guages such as C# or Java.


  • Code looks like domain prose.
  • Eas­i­er to under­stand by every­one.
  • Eas­i­er to align with require­ments.
  • More suc­cinct (so less code is required!).


  • Hard to design, test and debug.
  • Bad API design­ers make even worse DSL design­ers!
  • Dif­fer­ent peo­ple use dif­fer­ent ter­mi­nolo­gies (think mobile in the UK and ‘cell’ in the US) which reduces DSL’s abil­i­ty to bridge gaps in com­mu­ni­ca­tion.

Parting thoughts..

  • Indus­try spe­cif­ic, so from a career and per­son­al devel­op­ment point of view, it’s not attrac­tive to me to spe­cial­ize myself in DSLs and be locked into one indus­try.
  • Exist­ing exper­tise and tal­ent is hard to find (com­pared to gen­er­al pur­pose lan­guages).
  • Addi­tion­al train­ing required for peo­ple new to the indus­try.