Friday, August 10, 2007

Erlang 'mindshare'

I bought Joe Armstrong's new Erlang book as a beta PDF early this year and have been enjoying the material (the book is now in print). Erlang definitely has a lot of hacker mindshare but I have been unable to convince my customers to use it (so far). This may be a generalization, but those of us who love to program in Prolog are very likely to also enjoy working with Erlang. Erlang is certainly a great tool but I think it is unlikely to be very popular for two reasons: it does not provide instant gratification like Ruby on Rails and there is no large company promoting it (e.g., like Sun, IBM, etc. promote Java). That said, Erlang has a great open source community behind it and learning Erlang is very worthwhile if you occasionally need scalable applications. A comparison with Java is interesting: Java (especially with the new concurrency support in JDK 6) scales well on single servers with large numbers of cores while Erlang probably has the advantage when scaling to multiple servers.

2 comments:

jherber said...

Until end goals align with cheap hardware, Erlang likely to only see niche work. Erlang is great if you are targeting massive scalability, but how many startups actually begin with that as a premier goal? At the other end of the spectrum, Java has such a strong foothold and investment in big business that I do not see programmers working in that domain dumping their toolsets for Erlang's perspective on concurrency.

I think if we see a big win for Erlang, it will making other systems run on top of Erlang/OTP (beyond its success with xmpp), reengineering efforts from web projects that outgrow the LAMP platform, and trading platforms for Wallstreet.

As someone who's written a discrete event simulator and studied agent based computing, Erlang's paradigm is a welcome step in the right direction for solving many of the highly parallel problems.

I'm curious, what do you think of Scala?

Mark Watson, author and consultant said...

Thanks for your comments on Erlang.

re: Scala: I have spent less than a few hours playing with it, so all I can say is that the idea of adding functional (including higher order functional arguments) is cool. The way comprehensions are implemented also looks interesting.

However, I am motivated to learn and use languages that my customers will pay me to use, and right now demand seems to be for Common Lisp, Java, and Ruby. I made an exception to this rule for Erlang - not sure why, but the language just appealed to me.

Programmers have to be a little careful choosing languages to invest time in. Several years ago I started experimenting (again) with Smalltalk, and ended up signing up as a VisualWorks VAR developer. I literally spent a hundred hours learning the class libraries and environment. After getting very excited about the environment, I could never get any of my customers to go with Smalltalk. Oh well!