Friday, February 8, 2008

Intentional Programming

On the surface, our work would seem very similar to Intentional Programming (IP). However, there are some important differences. IP allows for the creation of arbitrary constructs with unconstrained semantics and unconstrained visualization. At the time I worked in IP, both reduction (R3) and visualization were constructed with imperative code. Having this level of power definitely falls in the category of creating radically new “languages”, in the same sense that imperative textual compilers are capable of create new languages (e.g. C++, C#, D, Java, Smalltalk, etc).

What we provide is a shared fabric for abstraction. Our semantics and visualization are constrained. All information is represented using a common model, and that model is visualized uniformly with only occasional deviations for brevity. Once information is represented as model, templates may be used to abstract that model in a controlled, type-checked fashion. Templates are used both to abstract above a model and to translate higher level model semantics into lower level model semantics.

Due to constrained visualization, our system will not work well as a structured GPL editor. This is one of IP's goals, but is not one of our goals. Instead, we believe that GPL code is stored and edited quite well as text. Whereas an IP code base may consist of quite a lot of structured GPL (this is, in fact, exactly what the IP code base itself does consist of), a code base in our system will consist of layers with a handful of high-level abstractions at the top and textual GPL code at the lowest level leaves. Terse visualization of model is therefore less important, and a uniform way to view and abstract every level is far more important.

One lesson we've learned is that abstraction breaks fancy visualization. Since our whole world is about abstraction, visualization must be quite general and not depend on a fully realized model structure because the model structure within any given template may only be partially realized. On the other hand, the editor is completely context aware, so that even within a highly abstracted model, it can still intelligently prompt for valid relations and termini. Also, templates at all levels must conform to the syntax within which they are operating, yielding a "type-checked" expansion ("reduction" in IP terminology) from top to bottom.

1 comment:

Eric said...

What do you mean by a 'structure GPL'? What is a GPL?