Archive for April 2009
I’ve been following them for some time, because I had extremely positive results using domain-driven design at Nimblefish (my first serious enterprise software job). I’ve also blogged extensively here before about the appeal of extensible languages.
Well, last week they finally gave a real demo, and it turns out they’ve been very busy for these last seven years. The Intentional team has made some real leaps forward in the whole concept of language construction, multi-language projection, and bidirectional editing. Basically, their system lets you use any number of different languages to describe a problem domain; you can create your own languages, project them as Ruby/Java/C# code, tables, or diagrams, edit them in any format and have it translated directly to the others (to the extent possible), run the model directly while editing it, and just generally take metaprogramming to completely the next level.
Yes, I’m excited; it’s not every year (or even every decade) that you see a demo like this.
Here’s a breakdown of the contents, if you need to optimize your optical cycles:
- 0:00 – 9:00: basic Powerpoint conceptual overview
- 9:00 – 13:00: more technical Powerpoint about the structure of their system
- 13:00 – 21:00: illustrating the “metamodel” for a state machine domain-specific language
- 21:00 – 31:00: bidirectionally projecting and editing a state machine via Ruby, UML, etc.
- 31:00 – 36:00: demonstrating an electronics DSL, including a live evaluation of electrical flow while editing the circuit graphically
- 36:00 – 43:00: the Cap Gemini beta test product, implementing a pension system with live Intellisense on the actuarial math equations, and a temporal rule language for pension rules
- 43:00 – 46:00: the multi-user versioning support that operates at the level of their fundamental tree-based data structure
- 46:00 – end: various Q&A
If you only have 15 minutes, watch 31:00 – 46:00.
There are various systems that have done various subsets of all this before, but I’ve never seen it packaged in a unified way. Ever. It’s time to start watching Intentional very closely. It may also be time to check out the open-source JetBrains Meta Programming System. Software is all about raising levels of abstraction, and we might just have some new cranes coming online.
Edit: I just checked out the Meta Programming System’s tutorial, and yay! Looks like it’s a free version of many of these concepts that we can play with now! Time to tinker….