Fog Creek Software
Discussion Board

while we're on the subject of Charles Simonyi... I the only one baffled by all this Intentional Programming stuff that he's been working on? Maybe I just don't get it but it just doesn't seem like that great an idea.

As far as I can see, it's just a graphical metalanguage that can translate itself into other 3rd-gen languages (C++, Java etc) for compilation (oh, and apparently you have to write those translations yourself).

Am I missing the point or is it just more component snake-oil?

A Reference link:

Andrew Reid
Tuesday, April 29, 2003

The way he explained it to me about, oh, 12 years ago, was that the idea was you could convert code written in any programming language into a universal, abstract syntax tree which could then be written out in any other language. As an abstract syntax tree you could easily do manipulations on the code such as refactoring, for example, renaming a variable globally. The syntax tree would be far more sophisticated than simple compilers, for example,

#ifdef DEBUG
" string");

this would be parsed into something which would actually comprehend the preprocessing stuff and remember it as a part of the syntax tree. Theoretically if you could ever get it to work, it would allow you to do really cool things to code, but I'm always suspicious about these things which seem to be flirting with the halting problem.

My information, though, is quite old. As far as I can tell Simonyi has been trudging down this path for 15 years.

Joel Spolsky
Tuesday, April 29, 2003

Seems like .NET's language independence is (finally) a step in that direction.

Tuesday, April 29, 2003

Conversion to a universal syntax (& semantics) tree?

Sounds like someone is re-inventing Lisp YET AGAIN.

David Basil Wildgoose
Wednesday, April 30, 2003

IP is cool conceptually.
Once the program is turned into magical semantic bits, you can run multiple views on it.

Today you can look at, say, the C view and the x86 view. In theory with IP you can write it in some custom notation (example: sigma n= 1...20 n^2 (it's been so long but i'm summing the squares from 1-20, this would be represented with all the things arranged aruond a capital sigma), which could then be shown in lisp or C or x86 or CLR's IL or maybe some graphical output.

Then you could modify any version and the intention of your changes would get converted back into magical sematic bits and you could see it again.

Now in certain reduced cases, thous would be realistic and powerful. It would be great during debugging (I've only once had the luck to use a graical debugger, something fairly simple on Solaris for debugging pointer problems). Some of the region stuff in visual studio probably came from this, even though emacs and friends had it for years.

But the whole vision is rather pie in the sky.

Wednesday, April 30, 2003

*  Recent Topics

*  Fog Creek Home