Dynamic Aspects

Dynamic Aspects has released some white papers and demos of their planned development tools. Their initial product is a Java IDE where the language becomes the tool. They seem to share many of my goals, and I am looking forward to seeing what they come up with. Their headline feature is micro-refactoring.

Micro-refactoring is essentially what I call semantic editing. It is making high-level changes to the program that respect its semantics (by preserving or transforming them), rather than respecting its spelling. The difference with standard macro-refactoring is that micro-refactorings seek to encompass most program edits.

Their demos show how expressions and statements can be moved across method and class boundaries, inducing compensatory changes in argument and variable bindings. What is nice is that these refactorings correspond to familiar program editing patterns, where we cut-and-paste to move some code around, and then do clerical fixups to naming.

The question I have is how many micro-refactorings will Java require? Is it a small kernel of simple primitives that cover all needs, or is it a large catalog of messy special cases? I tend to believe that it is necessary to design a programming language with this usage in mind in order to make it work well – hence the radical departure of Subtext. If they can pull this off for a hairball of a language like Java, I will be very impressed, and perhaps a little envious.

Micro-refactoring is just part of a greater vision to reinvent programming. I wish their white paper was more concrete. Some of the ideas sound strikingly similar to my own, such as “design-time is run-time”, “transparent execution”, and “versioned execution” (and they cite me). I am afraid that many people will not read as much as I do between the lines of this paper, and will find it frustratingly abstract. It will be quite an achievement if they can deliver on this vision, and even more so if they do it within Java.

In summary, I agree with a lot of what Dynamic Aspects is trying to do, although I worry that they are taking on too big of a problem. I will be following their progress closely.