Erlang Programming by Francesco Cesarini and Simon Thompson
Publisher: O'Reilly Media, Inc
Erlang was designed to solve real-world, practical problems. And it was designed to solve those problems in an elegant way. To me, Erlang is a perfect blend of research oriented towards practical applicability in the industry. The language itself is small and with a background in functional programming I found it quite easy to learn. But from learning the syntax and writing some simple programs to actually get a feel for how systems are designed, well, that step is huge.
Earlier this year I started to work on my first large-scale Erlang project. Development in the large is what really tests a language. So far, Erlang has been a pleasant surprise. Or, to be more specific, I knew the language was great; what surprised me was the tools and utilities that come with it (deployment, profiling, testing, coverage tools, etc) and how well integrated they were. And Erlang Programming was an excellent guide in this jungle of tools.
The book covers a lot of ground. Because I'm working on a multilingual system, one of the most interesting parts was interfacing Erlang with other languages. Erlang Programming shows how to write distributed nodes in Java, C, and even the Unix shell. It doesn't cover all you'll need, but it's enough to get you started. Another highlight was the chapter on style and efficiency - that chapter alone was worth the price of the book.
It's an excellent book, written by authors with true Erlang expertise, and I only have one minor complaint. I was expecting more on the OTP behaviors . OTP is one of the selling-points behind Erlang. The idea behind a behavior is to abstract patterns into a re-usable framework. As a client, a behavior allows you to focus your efforts on the application-specific parts; the parts that really vary. Sure, the most fundamental OTP behaviors are covered ( gen_server , supervisor ), but there's a lot more to say about behaviors. For example, writing your own behaviors is a powerful technique that is sadly under-documented.
A comparison to Joe Armstrong's Programming Erlang is inevitable. Both books provide a solid introduction to Erlang. A certain overlap is unavoidable, but having read both, I've found they complement each other nicely. Joe's book takes a faster pace and provides a good foundation with the principles and philosophy of Erlang. Erlang Programming has a more traditional organization. On the other hand, it goes a bit deeper on some technical aspects of the language and covers areas not presented in Joe's book. If you're interested in Erlang you should read both. Perhaps Joe's book is a better starting-point. But once you know that you want Erlang, Erlang Programming brings you up to speed. I highly recommend all three - Programming Erlang , Erlang Programming, and of course Erlang the language itself - programming hasn't been that fun in a long time.
Reviewed October 2009