Intentional Software

As much as I hate Hungarian notation, I must admit that Charles Simonyi was an interesting speaker.

Charles began by recalling some of the writings of John von Neumann. Since the quotes predate the modern notion of a “computer program”, von Neumann used the word intent instead. Simonyi clearly thinks that there is a very important distinction between intent, and this strange artifact we call a program.

Next, Simonyi talked about a specific application which required 20k pages of source code to implement all of maybe 400 pages of actual domain knowledge. Why is so much code required, he asked? Even if we add 1k pages of software engineering knowledge (perhaps, everything Knuth has ever written), it still doesn’t add up.

Simonyi then showed a slide depicting encryption, and drew a funny, if acerbic, comparison with programming. His basic point was that the act of programming obscures the original intent, much as encryption obscures the plain text. There’s a reason that the output is called “code” in both cases, he quipped. The audience ate this up.

One way to mitigate this problem is to create a domain-specific language. He noted, however, that this was not possible in all cases. Some large programs may cross several domains and may require difficult inter-domain references.

What is the solution to this problem? Well, not surprisingly, Simonyi thinks it’s his company’s product. The rest of the talk was essentially a demo for an Intentional product called Domain Workbench.

We were shown some code in a curly-braced language, and then using a tool called Kaleidoscope, they were able to switch to various different projections of the same code. There were many different styles of programming language syntax, as well as some oddball views like a spreadsheet and electrical engineering schematic notation (logic gates). The captured intent of the programmer was invariant across all of the different projections. The claim was that this enables developers to try out new notations on existing code at no cost.

I got the impression that there was some kind of database of abstract syntax trees behind the scenes. Because of the scripted nature of demos, it was impossible to evaluate the real power of Intentional’s system. Sure, automatically relocating curly braces is a cute trick–it might even avoid an argument or two, but that kind of superficial change hardly constitutes intent. I’d have been more impressed if, with a click of the mouse, he had changed iteration to recursion, or something.

For more info see:

Advertisements

2 Responses to “Intentional Software”


  1. 1 Bheeshmar Redheendran November 1, 2006 at 12:38 pm

    I’m all over this trend. I believe that all language is an exercise in serializing/marshalling intent. I even found this to be true in Tae Kwon Do, where at high ranks you don’t think “right-middle-punch, step into L stance, low-block”, you think “push him to that corner and focus on the ribs”.

    Fowler has blogged about similar ideas for a while:
    http://www.martinfowler.com/bliki/MetaProgrammingSystem.html

  2. 2 Mark November 1, 2006 at 1:32 pm

    It’s a pleasing concept, for sure. However, I’m more than a little skeptical of the notion that there is a language-neutral way to capture intent. Imagine passing an anonymous comparison function into a sort routine, in Perl, for example. Now imagine the equivalent C source. The intent is the same, but two valid expressions of that intent are quite different.


Comments are currently closed.




%d bloggers like this: