Tuesday, June 28, 2005

The Next Revolution: Language-oriented Programming and Language Workbenches

If you subscribe to Martin Fowler's blog, you've probably already read about Language Oriented Programming and Language Workbenches. He has very nicely encapsulated and clarified some of what I've been thinking for a while and added some badly needed organization to the topic. I've been doing a No Fluff, Just Stuff talk this year about Building Domain Languages atop Java, and it has been received very well in the cities I've where I've given it. Now, I'm about to revamp it and make it a Language Oriented Programming talk instead, taking the material I already have and adding discussions about LOP in general and workbenches. I'll also start showing JetBrain's (the makers of IntelliJ) cool new MPS meta-programming tool. It's still rough around the edges, but still very interesting. You have to have the early access version of IntelliJ (code named Iridia) and the MPS plug-in, but you can download all these goodies at JetBrains' site.


Joshua Graham said...

DSLs atop Java? Is it a Java-written engine to execute the DSL scripts (a la Jython) or a parser that converts the DSL to Java (a la Perl xc)?

Neal Ford said...

In the current incarnation of the talk, I' writing both an internal (i.e., DSL written using Java language itself) and external (using Antlr to create a lexer and parser). In the next iteration, I'm going to extend the external DSL to use IntelliJ's MPS language workbench. In neither case am I creating a scripting engine (been done already, with both Jython and Groovy). If I were going this route, I'd write Python (more friendly to internal DSL's) and use Jython to generate byte code.

It's a topic that I'm very interested in lately, obviously!