Today's keynote at OOPSLA was by Guy Steele on the Fortress language that he and his team at Sun are developing growing. It was fascinating to see the parallels with DSM: "I think we've now realised that there cannot be one language for everyone and everything" (rough quote). The project is funded by DARPA, who have moved from their focus of several years on High Performance Computer Systems to High Productivity Computer Systems: they've recognised that the limiting factor before you get the answer to your question is not how long it takes for the computer to run the program, but how long it takes to design and write the program.
In Fortress, the idea is to make the language as small as possible. On top of this language expert developers can build "libraries", but these go far beyond normal libraries. They can extend the syntax of the language in virtually unlimited ways. This is a clear similarity with DSM's idea of three tiers of developers: the top level provides the "meta-metamodel", e.g. Fortress or MetaEdit+; the expert developer in a given domain is in the middle level, creating a language that will be used by the normal developers in that domain.
Guy is a great speaker: fast, accurate and relaxed. Only towards the end of the 90 minutes, under time pressure and trying to explain catamorphisms, did the "Flow" break and I looked at my watch. It was a rather different experience in the next talk, Charles Simonyi on Intentional Programming. Whilst part of the problem was just that he doesn't seem particularly comfortable in English, this is the only talk I remember at OOPSLA that was read from a script. I suppose the two factors may be related, but still nothing kills the natural feeling of communication like talking to a piece of paper rather than your audience. He was better during the less scripted demo part, although there were several hiccups where his assistant running the program wasn't doing what he expected (or he forgot what came next).
Anyway, the talk was quite good, but I'm not very impressed. I'd expected better things from Intentional Programming, but it really hasn't moved on much since the original promising ideas years ago. As with Fortress, there is a clear distinction of a middle level with an expert developer in a given domain, building a language for the other developers. He asked a good question:
"If DSLs are so useful, and so incredibly efficient, and have been around for so long, why isn't everybody already programming this way?" He gave three answers:
- building good languages is hard
- designing parsable languages can be hard
- building editors for the language is expensive
I'd agree with the first, but graphical DSMs and a meta-tool like MetaEdit+ or GME have solved the latter two problems over ten years ago. One of the questions at the end pointed this out to him. For the first, good tools can help, but the real answer is simply that building a language is a task for an expert developer. It's hard even then, but it's doable and is the best possible use of the expert's knowledge and skills.
Intentional have changed the name of their future product to "Domain Workbench", borrowing consciously from Martin Fowler's term "Language Workbench" (and you can look at MetaEdit+ Method Workbench for a possible hint of where the lovable jackal got that particular piece of carrion). The main focus is on providing different views on the same program -- different projections of the same tree-like representation of the program in their repository.
I'm all for different representations (my first work on MetaEdit+ was building the Matrix Editor). But Intentional's idea is to be able to switch between different representations on the fly, and that's not a good idea. The human brain pays a significant cost each time the format shifts in that way -- just like switching between two spoken languages. Additionally, we build up maps in our mind of our code, and automatically laid out code breaks some of those maps -- even more so if you switch between several different representations.
Still, it's great to see that what we've been doing for the last 15 years is (at least now) perceived by almost everyone with 'guru' status as the right way to go. There's still resistance from the reactionary minority (pah! ;->) in the masses (cf."the language called Blub"), but changes there take time, and we're used to waiting.