"Intentional Programming?" How About "Intentional Search?"
I really enjoyed Jason Pontin's article in today's New York Times concerning Charles Simonyi's venture, Intentional Programming. I certainly knew of Mr. Simonyi's exploits as a programmer, both at Xerox PARC and later at Microsoft, but knew little of his current focus. A focus which I happen to think is both tremendously brilliant and sorely needed - that of making programming easier, less costly and more intuitive.
********************
Charles Simonyi, the chief executive of Intentional Software, a start-up in Bellevue, Wash., believes that there is another way. He wants to overthrow conventional coding for something he calls “intentional programming,” in which programmers would talk to machines as little as possible. Instead, they would concentrate on capturing the intentions of computer users.********************
The method begins with the intentions of the people inside an organization who know what a program should do. Mr. Simonyi calls these people “domain experts,” and he expects them to work with programmers to list all the concepts the software must possess.
The concepts are then translated into a higher-level representation of the software’s functions called the domain code, using a tool called the domain workbench.
********************
Thus, programmers and domain experts can fiddle with whatever projections they prefer, editing and re-editing until both parties are happy. Only then is the resulting domain code fed to another program called a generator that manufactures the actual target code that a computer can compile and run. If the software still doesn’t do what its users want, the programmers can blithely discard the target code and resume working on the domain workbench with the domain experts.
********************
Intentional programming has three great advantages: The people who design a program are the ones who understand the task that needs to be automated; that design can be manipulated simply and directly, rather than by rewriting arcane computer code; and human programmers do not generate the final software code, thus reducing bugs and other errors.
Wow. Cool stuff. Is it just me or could this article have been written about vertical search?
- The system is set up to know what you are thinking - sounds like a vertically-focused search algorithm.
- Capturing "intention" via domain experts - sort of like using domain experts to train machine learning/AI-based intelligent search tools.
- Programmers and domain experts can "fiddle" - kind of like tinkering with term weightings, etc., with easy adjustments that can be made on the fly.
I can't get over the similarities between the two problems. The goals are similar. The language is similar. The requirements are similar. Maybe those of you who are real techies (unlike myself) got this analogy right off the bat, but I was struck by the revelation. And presumably the problems are equally as complex and multi-dimensional. Mr. Simonyi has been at it for quite some time, as have we at my company. It is a sacred mission for him as it is for us. And we will both win. I'm sure of it.
Anyone who has had to use contract programmers to "go the extra mile" using skills that you don't fully possess know how helpful something like this could be.
The way they describe the bench makes it sound like a standardized pseudocode.
Posted by: EC | January 29, 2007 at 09:07 AM
There's a company called Ravenflow (www.ravenflow.com) that's been doing much of this, short of writing the code, for some time. Writing the code isn't the hard part, it's gathering the requirements from the domain experts and being able to make that these are internally consistent. They don't call their method intentional programming though ;)
As for the last 3 extrapolations and extended analogies, these may be a bit of a stretch based the reality of what this system actually does. But it made for fun reading :)
Posted by: p-air | January 29, 2007 at 02:33 AM
This is an interesting analogy, Roger! As I've written before ( http://blog.softwareabstractions.com/the_software_abstractions/2006/08/the_rise_of_ver.html ), the advantages of a vertical search engine go far beyond simply limiting the search to a particular domain; in particular, by making the search domain-specific, you can introduce search qualifiers (including parameters), specialized content, unique UI metaphors, results from authoritative sources, additional services, specialized tools and so on.
If focusing the search on a specific domain gives these advantages, then focusing the *programming* also on a particular domain might be the next logical extension. Now that's a cool idea!
Posted by: NitinK | January 28, 2007 at 09:05 PM