I read a great article titled “Why Windows Presentation Foundation Will Dominate Thick Client Development, XAML Is Microsoft’s Underestimated Secret Weapon” by Carl Zetie. If you have the resources to read such an article, I recommend it as a good read.
In the article, the author draws a parallel between XAML and Language Workbenches. The term “Language Workbench” is coined by Martin Fowler in his article titled “Language Workbenches: The Killer-App for Domain Specific Languages?” As is often the case, one great article points me to another. Here are a couple of excerpts from that Martin Fowler article that describe some of the terminology:
I use Language Oriented Programming to mean the general style of development which operates about the idea of building software around a set of domain specific languages. I use Language Workbench as a generic term for this new breed of tools. So a language workbench is one way to do language oriented programming. You may also be unfamiliar with the term Domain Specific Language (usually abbreviated to DSL). It is a limited form of computer language designed for a specific class of problems. Some communities like to use DSL only for problem domain languages, but I’m following the usage that uses DSL for any limited domain.
GUI builders are a form of DSL, but one where editing experience is quite different from the textual programming languages that we are used to. Hence they are often not thought of as languages by people building them – which some see as part of their problem.
In Carl Zetie’s article, it’s suggested that XAML seems like it may be a good fit as the underlying abstract representation of the software where the tools like Sparkle, Cider, the Windows Workflow Foundation designer, the class diagram designer, and the code editor act as DSLs. (“Is XAML the First Coming of Language Workbenches?”)
As someone who isn’t qualified to comment on what is or is not a Language Workbench, I am asking myself if XAML can really be the underlying abstract representation of an application given that it is used to represent parts of the application and not the whole application itself? Is an abstract representation of the application central to the idea of a Language Workbench or is a set of DSL tools used in concert to build an application sufficient?
What do you think? XAML makes it easier to create DSLs but is it a Language Workbench?