Programming Erlang, 2nd Edition
Software for a Concurrent World
Publisher: Pragmatic Bookshelf
Final Release Date: September 2013
Pages: 548

A multi-user game, web site, cloud application, or networked database can have thousands of users all interacting at the same time. You need a powerful, industrial-strength tool to handle the really hard problems inherent in parallel, concurrent environments. You need Erlang. In this second edition of the bestselling Programming Erlang, you'll learn how to write parallel programs that scale effortlessly on multicore systems.

Using Erlang, you'll be surprised at how easy it becomes to deal with parallel problems, and how much faster and more efficiently your programs run. That's because Erlang uses sets of parallel processes-not a single sequential process, as found in most programming languages.

Joe Armstrong, creator of Erlang, introduces this powerful language in small steps, giving you a complete overview of Erlang and how to use it in common scenarios. You'll start with sequential programming, move to parallel programming and handling errors in parallel programs, and learn to work confidently with distributed programming and the standard Erlang/Open Telecom Platform (OTP) frameworks.

You need no previous knowledge of functional or parallel programming. The chapters are packed with hands-on, real-world tutorial examples and insider tips and advice, and finish with exercises for both beginning and advanced users.

The second edition has been extensively rewritten. New to this edition are seven chapters covering the latest Erlang features: maps, the type system and the Dialyzer, WebSockets, programming idioms, and a new stand-alone execution environment. You'll write programs that dynamically detect and correct errors, and that can be upgraded without stopping the system. There's also coverage of rebar (the de facto Erlang build system), and information on how to share and use Erlang projects on github, illustrated with examples from cowboy and bitcask.

Erlang will change your view of the world, and of how you program.

What You Need

The Erlang/OTP system. Download it from

Product Details
About the Author
Recommended for You
Customer Reviews


by PowerReviews
oreillyProgramming Erlang, 2nd Edition

(based on 2 reviews)

Ratings Distribution

  • 5 Stars



  • 4 Stars



  • 3 Stars



  • 2 Stars



  • 1 Stars



Reviewed by 2 customers

Displaying reviews 1-2

Back to top

(3 of 3 customers found this review helpful)



By js

from Ontario, Canada

About Me Developer, Educator, Sys Admin

Verified Reviewer


  • Easy to understand


  • Inaccurate
  • Too many errors

Best Uses

  • Intermediate

Comments about oreilly Programming Erlang, 2nd Edition:

It's hard to imagine a publisher allowing a book to reach print when the author has documented features of the language that do not yet exist. I'm on the 5th chapter, and have already encountered several instances where code the author presents does not work. When I research it further, it turns out that the author has written the code in anticipation that features will be added to the language, even though the code does not work in the current version of the language.

For instance, the author presents the count_characters function. It relies on variables being used in maps, which is not allowed in Erlang. If you check the numerous reports in the errata for the section, here are some of the author's glaring replies:

"Joe Armstrong says: This is problematic. Keys in maps used outside the map are currently illegal but I hope this situation will change in a future not too distant release of Erlang. At this stage I don't want to change the text - even though it is incorrect."

"Joe Armstrong says: I think this is a bug in erlang not the book. Maps should allow this, there is no good reason not to allow this. I won't change the text."

There's more of this sort of thing in the section on converting maps to JSON using non-existent BIFs that the author purports exist in the language.

I understand he's one of the creators of the language, so I understand he's going to be opinionated about it. But if you're going to write and sell a book, it should be accurate. It's now nearly 3 years later, and the features he anticipated were never implemented. If you write a book, you document the language as it is, not as you hope it's going to become.

I'm going to keep reading this book, but the author has certainly lost credibility and presented himself as an arrogant greybeard who has his opinions on how the language should be, reality be damned!

(1 of 1 customers found this review helpful)


Much more than a textbook

By Stefano Baghino

from Milan, Italy

About Me Developer

Verified Reviewer


  • Accurate
  • Helpful examples
  • Well-written


    Best Uses

    • Expert
    • Intermediate

    Comments about oreilly Programming Erlang, 2nd Edition:

    The very first impression Erlang can give to many software developers, is that of an exotic programming language: it adopts the functional paradigm, it does not come from the Algol/C syntax family, and it supports concurrency with constructs that are really different from those offered by the usual threaded model. Being so particular in contrast with more established languages, such as C++ and Java, an Erlang book needs to be much more than a general overview: it needs to dig deeper, making the reader accustomed with concepts that are so peculiarly related to the Erlang language and runtime environment.
    "Programming Erlang" (2nd ed.) by Joe Armstrong succeeds in this task, going far beyond the usual scope of programming language textbooks: first, it gently introduces the reader to the Erlang syntax and to the functional programming style it adopts; then, it builds on the knowledge acquired to write sequential Erlang code to go further and teach how Erlang supports concurrency using "actors", low-overhead, independent and isolated virtual machines that only operate via message-passing, thus avoiding the inherent problems of traditional concurrency models based on shared memory, threads and locks.
    After these two first sections, the book goes even beyond the language itself, giving an overview of the main libraries and frameworks used throughout the Erlang world, like the Mnesia NoSQL DBMS and the OTP framework, that enabled many Erlang professionals to build industry-strenght, scalable and reliable software systems.
    All throughout the book the approach is really hands-on, with a lot of code to study, many challenging exercises, even a couple of really interesting projects that really make you understand how to write idiomatic Erlang and use its capabilities to write robust software. An entire, in-depth chapter is devoted to debugging, tracing and profiling. Another one gives you an overview of the main tools used to package and share your code.
    The writing style of Joe Armstrong (who, by the way, is one of the original creators of the language) is colloquial and down-to-earth, making the reader feel at home as he goes through the topics, but never falling in the trap of being sluggish or not specific enough.
    I wouldn't recommend this book to a person without some prior programming background as it builds upon concepts that are not explained in the book, especially related to networking, but for undergraduate CS students and professional software developers: this is real gem that you can't miss, teaching you much more than a programming language and giving a new perspective on how large, real world applications should be thought of and designed.

    Displaying reviews 1-2

    Back to top

    Buy 2 Get 1 Free Free Shipping Guarantee
    Buying Options
    Immediate Access - Go Digital what's this?
    Print:  $42.00