| Home | About Edge| Features | Edge Editions | Press | Reality Club | Third Culture | Digerati | Edge:Feed | Edge Search |

Intentional Programming
A Talk With Charles Simonyi

Daniel Dennett, Jaron Lanier, Paolo Pignatelli, and Charles Simonyi on Intentional Programming by Charles Simonyi

From: Daniel Dennett
Date: 7-10-97

I was struck by a claim Charles Simonyi makes in passing in his fascinating discussion of Intentional Programming. He says that "languages used to be the only carriers of abstractions." This is a deceptively simple, straightforward claim, but it unpacks into a large set of issues. On the one hand, it draws attention to a problem that has long frustrated me, which might be called promiscuous linguaphilia: as soon as you discover something really wonderful, you express your admiration by saying it is [like] a language. So music is a language and art is a language, and body language is a language, and the way the brain represents reality is a language (Fodor's so-called Language of Thought, with which I have been doing battle for years). Is there anything wonderful and meaningful that ISN'T a language? Simonyi's claim draws attention to this by inviting (I can almost hear the chorus) the response: "Languages are STILL the only carriers of abstractions; your Intentional Programming is really just a sort of language--not audible or linear or with the syntax of a natural language, but still a language." Since I don't know enough about what Intentional Programming IS from the tantalizing description given I can only guess at how to support his insistence that it isn't just another [computer] language.

I want to know more. Is Simonyi or anybody else writing articles about Intentional Programming? It sounds almost too good to be true to my ears (including its name, of course), but one of the great virtues of computers is that they keep you honest sooner or later (because either you can come up with the code or you can't) and transmit that pressure inwards to the pronouncements, so I figure Simonyi has to be on to something good.

Has Brian Cantwell Smith's thinking played a role in Simonyi's? I think Brian's new book, ON THE ORIGINS OF OBJECTS, is as deep and original as any book by a philosopher (or computer scientist) on the topics of representation, ontology, and meaning, and since I think he arrived at PARC at about the same time Simonyi did I wouldn't be at all surprised to learn of another messenger RNA transfer here. Brian and I have been talking about these issues since his graduate student days at the MIT AI Lab in the early 70's, but it also strikes me that Brian's intellectual temperament is nearly opposite to Simonyi's. Did he, perhaps, "provoke" some of Simonyi's ideas instead of inspiring them?

-Dan Dennett

From: Jaron Lanier
Date: 7-10-97

Everyone who has worked for a sustained period of time to improve information technology dreams of changing the way software is created. Software is really awful stuff to work with, but it comes on seductively at first. It seems at first to be a universal transmuter of pure ideas -- which are made manifest and useful in the world once expressed through a machine. What could be more exciting to a young mind than that? Some of the brightest minds in the world are attracted by this freedom and they create marvels. And then when it comes time to get these marvels to connect together, or to keep them updated, or to fix mistakes in them, or even to understand fully what they do, the ugly, dark side of programming appears. I like to call the dark side "brittleness", meaning that software will rarely bend, while it will often break. The terminology varies, but most computer scientists would agree that the core task of the field is to change the character of software so that it becomes less brittle, more malleable.

The interview only describes Intentional Programming in a general way, so it's hard to tell much about the approach Charles is taking to this problem. But make no mistake, this is the hard stuff, the summit which every ambitious computer scientist tries to scale. I hope he finds some success. Maybe he'll even make it all the way to the top. I'd love to know more about his plan.

I spent many years on my own approach to this problem of problems. The language and metaphors I used were quite different, but I know the problem and the passion well. I didn't make it to the summit myself, though I think I might have glimpsed it for a moment. I still have dreams of trying again someday.

Meanwhile, if Charles should succeed, he might just shoot Microsoft itself in the foot. While it's true that Microsoft is a massive powerhouse of smart people who can turn on a dime, it's also true that the company benefits from the tendency of the software marketplace to create near-monopolies. Why do categories of software tend to become dominated by a single product over time? The answer is found in our old friend brittleness. The Microsoft empire largely rests on the fact that any lead will be automatically compounded in the software business, especially for an underlying layer of software, like an operating system. The more standard a solution a customer chooses (or a software developer), the less they'll have to spend confronting brittleness on their own. While this is true to a lesser degree in other businesses, it is the overwhelming factor in the software business. Beats me how Apple could have failed to understand it.

If Charles finds a way to translate backwards from abstractions expressed in a generic form to an arbitrary platform, and it really works, then Windows will have to compete just like a model of a car or some other product. Please succeed, Charles.

From: Paolo Pignatelli
Date: 7-10-97

You say, "So an abstraction may be looked at from one side as a compression of many instances into one generality." What comes first, the instance(s) or the abstraction? As I am writing this, I am listening to Bach's Goldberg Variations (played by Glenn Gould). For you, is the aria the abstraction of the instances, the variations, or does the aria give rise to the 30 variations, abstractions on the main theme? What is there of temporal in abstraction? Perhaps the whole piece an abstraction of a transcending esthetic, the esthetic containing the (temporal) or (logical possibility) potentiation of the its subclasses? Now assume that not only the music but also a work of El Greco give rise the same neuron firing pattern in the brain, the esthetic response, (neuropsychologists in the audience, anything in the literature?), are both "esthetics", already called "abstract" both instances of a next higher level of abstraction? No, is there one peak, or are there many peaks? Are peaks absolute? We have beautiful concepts like transfinite numbers, or Godel's work, or the aesthetic beauty of a discovery in the experiential sciences, giving the same pleasure as my listening right now to Bach. What is there in common between the intellectual sets of abstraction peaks and that of abstractions? Can we even talk about abstraction without falling pray to self-referential paradoxes?

Language is yet another abstraction, of an experiential phenomenon, but it is also the result of the brain's language center acting as a result of inputs and rules. So we do have an instance of an abstraction machine. Other guests of John Brockman have talked about possible math centers and emotion centers, candidates again for other abstractions leading to an abstraction machine. Let's assume there exits an abstraction machine, does this machine create successors to itself or does it just grow?

From: Charles Simonyi
To: Daniel C. Dennett

Date: 7-17-97

You are very perceptive in identifying the crux of the matter: "languages used to be the only carriers of abstractions", although I really meant only "computer languages" and "programming abstractions". Plato has already proposed that abstractions exist independently. As you say "computers keep you honest", so we are not constrained to just arguing the merits of Plato's philosophy, but we can simply simulate a world in which Plato is right. So an "Intention" is the actual data structure that simulates the platonic existence of an abstraction, without any concepts of "grammar", "symbols" or "vocabulary". Programs are built from instances of (that is references to) intentions. It is important to insist that this representation is not a "computer language" insofar as none of the usual questions could be answered just from the program: how does it look? what are the keywords (vocabulary)? what is the syntax (grammar)? what are the (proper) names? how is it implemented? The only freight the intentional program carries is its creator's computational intent. It is an artifact of "pure thought" as Spock of Star Trek would say.

It turns out that in order to look at an intentional program, to create it, to modify it, or to run it various "languages" become necessary and useful. They are created ephemerally by the intentions - not by the intention instances that form the program. So we can have today's viewing language - a mere foppish suit giving form to the Invisible Man that is the program. And we can have the input and editing commands du jour and the current best implementation.

My favorite example for the relationship between the ephemeral and the invariant is "grandpa's ax". When the handle broke, it was replaced. Later the blade rusted away so a new blade was fitted. Of course grandpa - long departed, bless his soul - was Hungarian, so we were really talking about "nagyapu fejszeje". So everything in this story - including the language used - is ephemeral, yet there is an invariant. Intentions let you represent that invariance.

I "intend" to make other postings to respond to the other fascinating comments and questions.

Back to Intentional Programming by Charles Simonyi

| Home | About Edge| Features | Edge Editions | Press | Reality Club | Third Culture | Digerati | Edge:Feed | Edge Search |

| Top |