Wednesday, August 8, 2007

Erlang, the next Smalltalk

I just read Ralph Johnson's Erlang, the next Java.

It's hard to argue that Erlang/OTP is today's ideal language/framework today for writing highly available and easily scalable software systems, but to comment on his final paragraph:

I do not believe that other languages can catch up with Erlang anytime soon. It will be easy for them to add language features to be like Erlang. It will take a long time for them to build such a high-quality VM and the mature libraries for concurrency and reliability. So, Erlang is poised for success. If you want to build a multicore application in the next few years, you should look at Erlang.


I don't disagree that language X + a lot of infrastructure, libraries and language features = Erlang/OTP. But poised for success? I think that depends on your definition of success. If you're creating a large distributed system you'll probably be successful using Erlang. If Ralph is suggesting that Erlang will be used on the same large scale as Java, I'm skeptical. If history has shown us anything it's that people will pick the hacked up, half assed system over the perfect one 9 times out of 10. Cathedral and the Bazaar, Greenspun's tenth rule anyone? I thought a Smalltalk programmer mentioning Java would acknowledge this fundamental truth :P

On that note I hereby propose a new rule, Barber's tenth rule.

Barber's tenth rule: any sufficiently complicated distributed Java program contains an ad hoc, informally specified, bug ridden, slow implementation of Erlang/OTP.

2 comments:

jos said...

Problem with erlang is the lack of general purpose and business libraries right now (orm and db access, mom access, transactions, pdf generation, xml, ...).
Erlang scalability is great and can show other how to improve : scala language takes all the good thing from erlang and is a java vm language taking benefit of the huge libraries env. I guess scala will be the next java (in the jvm world) not erlang.

Zverok said...

I think, you should slightly extend your rule ("Any sufficiently complicated distributed [Java, C++, C#] program contains..."). In this case, it can be provided with necessary addition "...including Erlang/OTP iself".

(Just like Morris' Corollary to Greenspun's Tenth)