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.
- Code looks like domain prose.
- Easier to understand by everyone.
- Easier to align with requirements.
- More succinct (so less code is required!).
- 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.
- 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.