While I appreciate everyone’s love of Ruby, and the fact that RoR is a form of a DSL, not EVERY new language is a DSL. The fact that you can use variables as the basis of a transformation form one file to another doesn’t make those variables their own little DSL. Note: I am NOT picking on Jay at ALL 🙂
Those two little words in front of language, ‘domain’ and ‘specific’ make all the difference.
DSL’s are / should encapsulate something. Usually, an abstraction of some sort. DSL’s enable people to manipulate and abstration without knowing the intimate details of what makes up that abstraction.
For example, C#’s ‘lock’ & ‘using’ statements are an example of a subset of C#’s small DSL. Both encapsulate lower level concepts of the CLR so that developers don’t need to know what they actually represent in the CLR. Actually, to get specific, they encapsulate other concepts within C#. The same way the Windows.Forms.Form class encapsulates MFC API calls.
Everyone pull back the eagerness a wee bit….there’s a reason DSL’s are complex and expensive and haven’t been attempted at a vertical level until now.
We are on the cusp of a new and exciting paradigm, but just as with OOP, it has to be applied correctly to see the benefits.
Perhaps someone should write an article on DSL’s….and perhaps it should be published sometime soon in Dr. Dobbs….:)
More news coming soon.