Big news: Charles Simonyi and Gregor Kiczales are launching a software tools company. Simonyi is, in a very real sense, the most famous of all coders from Microsoft (ever heard of Hungarian notation?). Kiczales is the guiding light behind the Aspect-J aspect-oriented programming language. The name of their company is said to be Intentional Software. From what I've read (in increasing complexity) here, here, here (primary source) and here, "IP" involves meta-programming with "intentions" and their concrete "implementations" expressed in a WYSIWYG environment. There are at least two very important features of IP:
- The creation of graph-like abstract data structures corresponding to "memes of programmer intention" (i.e., "iterator", "stack," and presumably eventually at the level of business concerns such as, "validate credit card"). These abstractions are implemented using pluggable back-ends (i.e., there is a mapping between the iterator intent and, say, foreach(# in #){#} and other nodes in the intentional graph fill in the missing bits.
- The graph-like abstract data structures and generators are long-lived and composable via direct manipulation (i.e., WYSIWYG graphical programming). This implies that one would be able to have, for instance, competing intentions expressed on the screen ("Validate account credit at checkout" vs. "Validate credit as items are selected"), and the choice between them would be explicit (the decided-against intent would be, say, grayed out).
If an efficient UI for IP can be developed (and I don't mean a pretty UI, I mean a UI that can handle the rushing thought, i.e., speed imperative, of professional programmers), it could be huge. The programming world is primed for a major shift in paradigm (it's been a decade since the OO shift); I suspected that it would be aspect-orientation, but IP is even more potentially dramatic.
However, the UI challenge seems unspeakably problematic. "Visual programming" UIs have, so far, been disasters. Screen resolution is the great laggard in hardware: I had 640 x 480 a decade ago, now I work at 1152 x 864, not even 4 times the capacity (although I plan on getting dual flat-screen monitors when I upgrade the desktop next Spring). Can a graphic representation of a data structure have anything like the efficiency of an S-expression?