Pure Danger Tech


Language design is hard

22 Sep 2007

The other night while I was out walking I listened to Ted Neward’s keynote from Jazoon ’07, The future will be about programming languages (slides/video, mp3).

In general, I thought it was great and well worth a listen. It hits a number of topics I find particularly interesting, like language design, DSLs, and the JVM as platform. The basic idea is that we are at the start of a “perfect storm” for new language design and adoption based on the convergence of virtualization (JVM, CLR), tools (open source Java, IDEs, language tools), and a sort of openness to new language features. I certainly agree with Ted about the rise of all these things (and their continued ascension in the years to come). Certainly, there is no better time to design, implement, and promote a new language than right now.

The talk ended with kind of a call to people to go out and design new languages and take advantage of this perfect storm. I differ a little with Ted in this. While it certainly is a perfect time to design a new language, that doesn’t mean that designing a good language is any easier now. Designing a language that is cohesive, easy to use, expressive, performs well, and is not full of weird special cases is still hard. I can’t see that changing anytime soon. It’s simply a hard thing to do and requires a rare combination of knowledge and talent. For every Larry Wall, Guido Rossum, Martin Odersky, Yukihiro Matsumoto, Joe Armstrong, out there, there are 10,000 other guys (like me) that suck at it.

So, while I think Ted’s right that we will see a cornucopia of new and truly useful languages in the coming years, and while it is easier than ever to create a new one right now, please look around and see what amazing stuff is already out there before charging out to invent your own.

Luckily, Ted will be here in St. Louis next weekend for the Gateway Software Symposium in which we will both be speaking if you’d like to bend his ear or mine about this topic. I’m looking forward to seeing him speak in person.