Jay Fields is a smart ThoughtWorks consultant I had the pleasure of working with during my time there. Lately, he’s been working with DSL’s, and has had some great blog posts about the DSL work he’s doing in Ruby. Yesterday’s blog post coined the term ‘Business Natural Language’ to describe the kinds of DSL he’s working with right now. The main purpose of a BNL is for the specification of requirements.
I like this term because it tries to narrow down what a DSL is. Whenever I describe a DSL to people, the moment I use the term ‘Abstraction’ people try to use the term DSL to apply to anything that encapsulates anything else. I have had conversations with people where anything represents a DSL, including Java, C, Excel, and VBScript.
To be clear, a DSL is a language that represents a higher level abstraction and, more often that not, though not always, uses a Business Domain and not just any Domain. It’s NOT simple code generation and it’s NOT simply creating a construct that encapsulates several underlying consructs.
Hopefully with more people doing work like Jay, we’ll come up with a concise defintion for DSL, and not have it lost in the ambigious TLA world like SOA.