In his personal blog, Jilles Van Gurp has made a very good summary of Intentional Programming (some formatting added):
Some late nineties papers by Charles Simonyi on Intentional Programming (IP) and persistent rumors about him actually being very close to launching related products was about taking the whole Smalltalk/Visual Age thing to the next level.
It’s too early to call this a failed experiment because Simonyi never really delivered the goods. His company (Intentional Software) is still hyping intentional programming but has yet to ship a product. Seriously, this has been in the making longer than Duke Nukem Forever.
In a nutshell Simonyi’s very brilliant idea is that creating software is about coming up with abstractions that are represented in the form of abstract syntax trees that can be translated into other, more general abstractions in multiple iterations until you end up with a syntax tree that can simply be serialized to executable code. His core idea was to treat the transformations and not the abstractions as the first class entities.
In a intentional programming world you start with really simple abstractions that you can translate into executable code and you build increasingly more complex and specialized abstractions that can be used for specialist or domain specific things. The traditional notion of compiling is very similar except it is a bit limited in the number of transformations and the abstractness of the abstractions involved. Basically most languages go to roughly 2 or 3 transformations: source code to abstract syntax tree to assembly to executable bits and bytes. There are lots of variations here but it is essentially a pipe line.
(Read his whole post here)
This made me realize how close ABSE is to Intentional Programming. The bold text above shows what is similar to ABSE. I can conclude that the core idea behind IP and the way its concepts are materialized, are very close to ABSE’s own concepts.
Some differences remain though. For instance, AtomWeaver is not a projectional editor although we could still draw some parallels between them, because each ABSE abstraction has its own specific editor. I don’t know IP enough but checking an old paper on Generative Programming by Krzysztof Czarnecki (page 151) shows that that are more differences on the details.
Perhaps the biggest difference between ABSE and Intentional Programming is that ABSE version 1.0 is now shipping!