In one of my first posts, I asked “Why do we speak of programming languages instead of programming notation?” My thought was, and still is, that code in any existing programming language is just one possible representation of an abstract computational process. Higher-level languages like Lisp are good because they bring the written representation closer to the abstraction. But are programming languages necessary at all?
Perhaps not: some smart people are working on an idea I’ve toyed with myself, but lacked the experience and theoretical background to tackle. They call it Intentional Programming, and also use the word “notation.” Basically, all your “code” becomes part of an abstract syntax tree stored in a versioned database. You use visual and automated tools to manipulate that tree, then a generator “compiles” your tree into source code in a language of your choice.
Dave Roberts compares this to the Lisp way of things, in which the abstract syntax tree and the textual representation are nearly identical.
Some more Intentional Programming links here.
The link to the Microsoft demo video no longer works; if anyone has a substitute, please send it my way.