DSLs or Domain Specific Languages are designed to solve particular problems in particular domains, by using models or other constructs that are better suited to describe what our intentions are than traditional programming languages. I first read about DSLs in Jack Greenfield and Keith Short’s book about Software Factories, and the latest version of Web Services Software Factory contains DSLs with graphical editors to define service contracts and service hosting environments. The Distributed Systems designers in Visual Studio Team System for Architects are other examples of DSLs that are currently shipping by Microsoft.
One can also argue that LINQ is a textual DSL embedded in another language, and you can create a DSL your self by defining a fluent interface where the classes and methods represents the syntax of your language. Anders Norås has blogged about this earlier, and at his talk about SOA at MSDN Live (you can still catch his presentation in Oslo on September the 30th) he gave a quick glimpse of how Boo could be used as a DSL to configure a message bus in his demo. I’ve not looked at Boo in any detail, but Tore Vestues and Gøran Hansen had a brief discussion on Tore’s blog about how you can extend Boo with your own keywords, and by that defining your own DSL.
I think the concept of DSLs are becoming main stream sooner rather than later, and after reading Douglas Purdy’s post He who defines the language… this week I’m looking forward to what Microsoft will reveal at PDC in October:
You are going to be hearing a lot more about (textual) DSLs from me and others on my team.
Martin Fowler, who I had an opportunity to meet a couple months ago, has a quick Q&A that is worth reading if you would like to be educated about the space.
See you at Doug’s talk about “Oslo” and at Chris Anderson’s and Giovanni Della-Libera’s talk about Textual DSLs in Los Angeles.