Book Review: Programming Erlang

Programming Erlang


Joe Armstrong

My Rating

star star star star star

Twenty years of use in the wild on large-scale, highly-concurrent,  distributed systems, such as the telecomms industry, has proven Erlang to be an excellent platform in these environments. Erlang then is definitely not a shiny new toy.

One of my goals is to be involved in the creation of big, concurrent distributed systems. So Erlang seems a perfect platform to learn concepts from, even if I don't base my career on it. But I didn't know that, I didn't even know about Erlang, such is its obscurity, until a former colleague introduced me to it.

At that point, it was a question of which book.... 

Walk before you can run

Although Erlang is a platform (language & VM), it is mainly thought of as a functional programming language. So after an introduction to the Erlang world, the book gives follow along examples to get you upto speed with the basic syntax and concepts, taking about 6 chapters to do this. All very useful, and all very easy to follow.

Then come the chapters on concurrency and distributed programming. What I love about these chapters is the mix of theory and actual hands-on coding. I followed along at home at built my own IRC client and server, and shoutcast server.

Other chapters talk about the Erlang database, sockets programming, but importantly the OTP libraries. These libraries contain industry-standard patterns for fault-tolerance, monitoring and other goodness. There are hands-on examples, but a not a great level of detail about OTP.

Towards the end is a chapter on multicore programming, showing how Erlang makes it easier than other platforms, but you still need to think a great deal. 


This book was not printed yesterday, and so the code examples use a different version of Erlang. This really caught me out in a couple of places where modules just don't exist the standard libraries anymore. Pretty annoying.

Maybe I need to read it again, but I felt at the time a few more diagrams and explanations of how to design Erlang distributed systems would have been useful. 

Worth my pennies?

If you buy a book to teach you about a programming language, the yardstick has to be whether you can code in that language...

Happy to say I've written a few Erlang programs, and I'm studying a few open source repositories such as Riak to see how the professionals do it. Importantly, I'm trying to do things the Erlang way - using standard patterns for concurrency and distribution. 

Apart from being a touch out of date, I think this is a fantastic book for beginners that blends theory and practical application very well. 5 stars from me.



You may also like...

Designing Data-Intensive Applications

Effective Akka

Scala in Depth

My Books

Designing Autonomous Teams and Services
Patterns, Principles and Practices of Domain-Driven Design