By James Cooley - May 16 2007 tags: erlang concurrent programming

I used Erlang while working on a project for Ericsson back in the mid-90s before it was released as OpenSource. Erlang is interesting as a declarative language but it struggles with some general programming problems like relational database integration as seen in the evaluation of database management systems for Erlang. Fortunately for Erlang general programming is is not its selling point.

It was designed for concurrent programming tasks so it's getting traction as multi-core CPUs are becoming commodity. Lots of languages have threads but multi-threaded programming is difficult to test because of its non-deterministic nature. Sean's talk at barcamp Dublin touched on it and he has a recent blog entry on the hazards of threads. Java has threads but compiler optimization can make it behave in a very unintuitive way. Have a look at this next talk to see how difficult it gets to do this kind of thing right in Java - you get the feeling that there are still ways to get it wrong (depending on the JVM vendor's interpretation of the spec).

So Erlang's has a place as a reliable concurrent programming language and its time is coming - if you want a look there is a good non-toy worked example of the language in the tutorial Stifflog - Erlang for the practical man. There a new book on Programming Erlang that has a good pitch for the language. Aidan has a good list of interesting Erlang links. And there's the very slick retro video - "Hello Mike":).

If retro isn't you thing try Andre Pang's excellent presentation on "Concurrency and Erlang" at Linux.conf.au Sydney 2007 below. He talks about how Erlang might be used for the PS3 and other advanced gaming boxes (BTW there is no sound in the first two minutes of his talk).

There's a good page with references for Andre's talk including how Erlang message passing is implemented in other languages.