Functional programming is not new, but it is becoming popular once again. For this reason, in my last book review, I talked about a Lisp book and this review will cover a book on Erlang. Functional programming treats computation differently from other programming languages. Here, computation is done by evaluating mathematical functions. State and mutable data are avoided. Most of this is rooted in lambda calculus, in which everything is a function (yes, I’m simplifying, but this is a short review). Even if you prefer to use a different programming style, learning a functional language is beneficial to expand your skills and your ability to think of a problem in multiple ways, which often leads to more elegant and human-readable solutions. This is vital for long-term maintainability of code.
Learn You Some Erlang for Great Good! is by Fred Hébert. One of the things I really admire and appreciate about the author is that he provides a great example to others. So often, budding programmers and computer scientists feel intimidated by functional programming, somehow believing that they need to study for years and earn a higher level computer science degree before they even make the attempt. Hébert is a self-taught programmer and also the author of one of (perhaps the) most respected and used Erlang tutorials out there, on which this book is based and shares a title. He was named Erlang user of the year for 2012. Hébert proves that really bright people can learn and use and teach complicated things, and you can do so without learning it in a university. So, put aside the intimidation and press on!
This book covers all the basics of language and syntax, as well as the needed functional programming concepts and techniques. It covers the hot Erlang topics of today, too, stuff like concurrency and distributed computing. One thing I love is that as the book discusses these things, it does so without the typical hype and over-zealousness that often accompanies Erlang presentations and discussions. In fact, there is an amusing series of information box notes throughout the book, each titled “Don’t Drink Too Much Kool-Aid,” that give a welcome, balanced view of various features, praises, and criticisms of Erlang. Each of these shows a grounding in reality that comes from real-world use.
This is a serious book filled with quality discussions, clear writing, interesting and useful examples, and an occasional bit of whimsy. The book isn’t playful like Land of Lisp, but it isn’t dry and boring or overly academic, either. It is an accessible, practical book that the real-world programmer who is considering Erlang will find useful.
Disclosure: I was given my copy of this book by the publisher as a review copy.