Intentional programming

I recently found the Richard Dawkins website (which by the way is an unofficial site and not Dawkins own) and read a couple of his articles (see here – and here). In one of them, he’s presented as “the Charles Simonyi Professor of the Public Understanding of Science at Oxford University”. I wondered if that was the same Charles Simonyi that invented Hungarian Notation, so I searched and found an interview with him, titled “Intentional Programming”. (It’s the same guy, by the way.)

It turns out he worked for Xerox PARC and wrote the first WYSIWYG text editor (called Bravo). But what I found interesting was his talk about what he calls “intentional programming”, which sounds like the old talk about components and, earlier, frameworks:

Once everybody with a $5K machine and good programming skills is empowered to create and publish abstractions for which any one of the tens of millions of programmers will be potential customers, there will be a tremendous explosion of creativity.

He talks about creating an “ecology of abstractions”, where abstractions can evolve more rapidly, according to Dawkins’ idea of the “selfish gene”, where organisms form the ecology and is regarded to exist solely for the purpose of reproducing genes (see earlier post). This would be achieved, Simonyi says, by making “the abstractions completely self-describing, so that an abstraction will carry all of its description, both of how it looks and of what it does”.

Abstractions, he says, “represent the programmers’ original computational intent” (hence the name “intentional programming”), and as I understand it, an abstraction would separate the intent from implementation details in some way: “[Everything] else of how something looks or how something is implemented … are things that should evolve and should be improved so they can change.” This makes me think of a package of abstract classes and pure interfaces, which you subclass in your application, but I don’t think that’s what he means. It’s about programming on a much higher level than that: “The overhead associated with abstraction has always been the bane of the very-high-level languages in the past.”

Unfortunately the interviewer, John Brockman, and Simonyi only talk about this in the beginning of the interview. The rest of it is about Simonyi’s past, which indeed is interesting to read about, but what he says about intentional programming is too fuzzy for me to understand, so it leaves me a little frustrated. But it seems to be similar to component-oriented programming, but with an architecture that enforces good abstractions by requiring you to define the pieces using some kind of “abstraction metalanguage”.

The research project at Microsoft apparently has been terminated. The web page for the project has been removed, but it’s accessible through the Wayback Machinehere. I wonder what happened; in January 2001 they were hiring people, but a few months later, they terminated the project, and all articles and papers about IP are of that familiar “this is going to change the world” flavor.

The above was posted to my personal weblog on June 13, 2002. My name is Peter Lindberg and I am a thirtysomething software developer and dad living in Stockholm, Sweden. Here, you’ll find posts in English and Swedish about whatever happens to interest me for the moment.


Related posts:

Posted around the same time:

The seven most recent posts:

  1. Tesugen Replaced (October 7)
  2. My Year of MacBook Troubles (May 16)
  3. Tesugen Turns Five (March 21)
  4. Gustaf Nordenskiöld om keramik kontra kläddesign (December 10, 2006)
  5. Se till att ha två buffertar för oförutsedda utgifter (October 30, 2006)
  6. Bra tips för den som vill börja fondspara (October 7, 2006)
  7. Light-Hearted Parenting Tips (September 16, 2006)