» Thursday, 7 June A.D. 2007

language develoment phases

Ola Bini wrote a bit about IronRuby and included this note about language implementations:

What [this development path] means is that for a language to be successful, there needs to exist competing implementations. They need to implement their features in different ways and make different choices during development. Otherwise, the language will die. (This is obviously not enough, since Smalltalk fulfilled this admirably and still never got widespread adoption.)

Funny, I thought that the conventional wisdom was that Scheme and Lisp have died because there were too many implementations, all making precisely the sorts of tradeoffs talked about above. And furthermore, that Perl/Python/PHP/(Ruby?) have succeeded because they avoided the fragmentation that comes from multiple implementations and were able to get everybody on board with one single vision. For the past decade or more Lispers have been trumpeting multiple implementations as a feature...glad to see that the rest of the world is finally starting to listen...

Ola does mention that it's important to have multiple implementations to figure out what features work and what features don't--a positive thing, no doubt. I think it will be interesting to see how these multiple implementations of $SCRIPTING_LANGUGE fare over the next couple years. Do people write code specifically for one implementation? Do people write to the lowest common denominator--and then move on because there's not enough shared functionality? (The large standard library in most scripting languages may preclude that from happening.) I've known about Jython for several years now, but I've never considered using it as my primary Python implementation. (Granted, I'm probably not the sort of programming to whom Jython is appealing.) Are the non-C-based implementations consigned to that sort of fate too?

posted by Nate @ 4:30PM