random technical thoughts from the Nominet technical team

First impressions of Erlang

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Posted by alexd on Mar 7th, 2008

I’ve been spending some time learning Erlang recently. It’s a language which has interested me for some time now, so I’m happy to be getting the chance to evaluate it for a new project. I like the fact that it’s been designed for concurrent distributed systems, and shares a common ancestor with occam (a language I enjoyed coding in the past). These languages eliminate many of the problems of concurrent programs by having no shared state (although Erlang comes with mnesia, a distributed database). Instead, many otherwise completely independent processes communicate entirely by sending messages to each other (which accumulate in a process ‘inbox’). These processes may then be supervised by other processes on other machines, resulting in a highly concurrent fault-tolerant system. Sounds great!

On the down side, first forays into Erlang do reveal its long history. The origin in the 1980s is obvious, and the poor and sparse documentation and support is probably the result of a proprietary commercial system going open source. Symbian OS also suffered from poor documentation when it was first opened up to a wider community - this got much better with time, so hopefully Erlang will be easier to get to grips with in the future.

The debugging could certainly be easier - maybe I’ll work out the meaning of the arcane error reports one day…

3 Responses

  1. jason Says:

    I think this an interesting view of erlang http://damienkatz.net/2008/03/what_sucks_abou.html

    Does seem to have “issues”

  2. James Aspinwall Says:

    What interests me the most is the robust distributed architecture of Erlang. I am impressed by projects such as CouchDB (http://www.couchdbwiki.com/index.php?title=CouchDb_FAQ)
    COUCH = Cluster Of Unreliable Commodity Hardware. Add to Erlang Amazon’s EC2, S3 and SimpleDB, and your app can scale beyond any other option.

  3. alexd Says:

    Yes - I just came across Amazon’s EC2 service recently, and had been thinking about how you could use it with Erlang. It would be fairly easy to build a self-monitoring system which scaled up by adding another load of servers every time it thought its response time was too slow. It could then shut the servers down as the response time lowered, as well as performing any required fault recovery across the cluster. Easy scaling at low cost (paying Amazon per server per hour of actual use) - neat.

    Unfortunately, I don’t think this is going to be an allowable option for my project :0(

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

Recent Posts

Highest Rated

Categories

Archives

Meta: