After reading some exciting posts about Erlang, I decided to find out for myself what this language is all about. So I ordered Programming Erlang. Software for a Concurrent World, from the Pragmatic Bookshelf, and today I received my copy of the book.

It’s about concurrency. It’s about distribution. It’s about fault tolerance. It’s about functional programming. It’s about programming a distributed concurrent system without locks and mutexes but using only pure message parsing. It’s about speeding up your programs on multi-core CPUs. It’s about writing distributed applications that allow people to interact with each other. It’s about design methods and behaviors for writing fault-tolerant and distributed systems. It’s about modeling concurrency and mapping those models onto computer programs, a process I call concurrency-oriented programming.

I don’t have time right now to dive into it too deep, I just started reading the first chapter, and I am already shocked.

Erlang has single assignment variables. As the name suggests, single assignment variables can be given a value only once. If you try to change the value of a variable once it has been set, then you’ll get an error.

Wondering why?

If you use a conventional programming language such as C or Java to program a multi-core CPU, then you will have to contend with the problem of shared memory. In order not to corrupt shared memory, the memory has to be locked while it is accessed. … In Erlang, there is no mutable state, there is no shared memory, and there are no locks. This makes it easy to parallelize our programs.

I am sure I will have lots of fun learning it!


Comment by xavier on 2007-09-11 02:08:02 +0000

I’m green with envy! You are making good progress!

When you posted this I was about to tell you that I was interested in joining you in the Erlang adventure, but after checking the huge backlog of non-day job projects I decided that this will have to wait…

My interest in Erlang was born when former IBM/Rational Doug Landauer named his great intranet blog as Pyscerocha, after Python, Scala, Erlang, OCaml, and Haskell.

In the last months, bcn’s IBM Claudi Paniagua’s event driven architectures and event processing evangelizing in the coffee machine and elsewhere has made me think more and more about the need to check how would Erlang fit that model.