Language Workbenches May Ultimately Completely Change the Way We Do Programming
After many years in development, Intentional Software has finally released their Intentional Domain Workbench (IDW). JetBrains has open sourced their Meta Programming System (MPS), currently in Beta 2.
Magnus Christerson, Product Manager at Intentional Software, demoed IDW during DSL DevCon creating quite a stir in the audience. IDW is basically a Language Workbench but it also includes a Projectional Editing environment. The entire workbench is built around Intentional Tree which holds a semantic model allowing multiple projections of the domain and can be used to generate code. The user can view and edit the model through various projections, each edit updating the model and the other projections. The model is then converted into code through compilation.
The demonstration has greatly impressed the audience. Markus Voelter said:
If you're into DSLs, you *have* to watch this video. It clearly shows the potential. Give ISC a little bit more time to polish the system, and this is going to be a revolution!
Intentional Software has forged a silver bullet.
This is not about snazzy demos, this is about completely changing the world we know it.
IDW is not publicly available yet, Intentional Software choosing to share it with selected customers like Capgemini and ThoughtWorks. Magnus C. invites those interested to write him, but they should expect a very restrictive NDA.
JetBrains released Meta Programming System for a Language Oriented Programming (PDF) style. Basically, it is the same thing as a Language Workbench. The product is currently in Beta 2, the production being expected this quarter. MPS is free, most source code being available under Apache 2 License.
When will DSLs be mainstream?
Johan den Haan
I guess we're going to see a split between developers going 'meta', i.e. they are going to use DSL tools to produce Model-Driven Software Factories, and developers just using that factories in which they 'program' or 'model' using domain-specific abstractions.