Book

Programming Erlang: Software for a Concurrent World

📖 Overview

Programming Erlang: Software for a Concurrent World is a technical guide written by Joe Armstrong, one of the creators of the Erlang programming language. The book covers the fundamentals of Erlang programming and its practical applications in building distributed, concurrent systems. The text progresses from basic Erlang syntax and concepts to advanced topics including OTP (Open Telecom Platform), fault tolerance, and distributed programming. Examples and exercises throughout demonstrate real-world implementation of concurrent programming principles and error handling strategies. Armstrong explains how to leverage Erlang's built-in capabilities for creating robust, scalable applications that can handle multiple simultaneous operations. The book includes detailed coverage of message passing between processes, supervision hierarchies, and hot code loading. This work stands as both a practical manual and a philosophical exploration of how programming languages can address the challenges of modern, distributed computing environments. The principles presented continue to influence contemporary discussions about scalability and system reliability.

👀 Reviews

Readers value this book as the definitive guide to Erlang from one of its creators. The clear explanations of Erlang's concurrency model and practical examples help developers understand the language's unique approach. Liked: - Detailed coverage of fault tolerance and distributed systems - Strong focus on real-world applications - Code examples that build progressively - Clear explanation of Erlang's core principles Disliked: - Code examples in early chapters seen as too basic - Some outdated content in older editions - Inconsistent pacing - later chapters move very quickly - Limited coverage of OTP compared to other Erlang books Ratings: Goodreads: 4.1/5 (392 ratings) Amazon: 4.3/5 (89 ratings) Reader quote: "The first half provides an excellent introduction to Erlang fundamentals. The second half feels rushed and assumes too much knowledge." - Amazon reviewer Alternative recommendation: Many readers suggest pairing this with "Learn You Some Erlang for Great Good!" for a more complete understanding.

📚 Similar books

Learn You Some Erlang for Great Good! by Fred Hebert A guide to Erlang programming that builds from basic concepts to advanced topics with detailed explanations of concurrent programming and distributed systems.

Designing for Scalability with Erlang/OTP by Francesco Cesarini and Steve Vinoski The book demonstrates implementing robust production systems using Erlang's Open Telecom Platform framework and design principles.

Seven Concurrent Models in Seven Weeks by Paul Butcher The text explores different concurrency paradigms including actors, communicating sequential processes, and software transactional memory through practical examples.

Functional Programming in Erlang by Simon Thompson This book presents functional programming concepts through Erlang's pattern matching, recursion, and higher-order functions.

Concurrent Programming in BEAM by Francesco Cesarini and Simon Thompson The text covers building distributed applications on the BEAM virtual machine using Erlang and Elixir with focus on fault tolerance and scalability.

🤔 Interesting facts

📖 Joe Armstrong, the author, was one of the original inventors of the Erlang programming language while working at Ericsson in the late 1980s. 🔄 The Erlang language was originally designed for telecommunications systems and got its name from Danish mathematician Agner Krarup Erlang, a pioneer in telephone traffic analysis. ⚡ The first production use of Erlang was in 1991 for an Ericsson telephone switch, which achieved a remarkable "nine nines" reliability (99.9999999% uptime). 🌐 WhatsApp used Erlang to handle more than 2 million concurrent connections on a single server before being acquired by Facebook, demonstrating the language's exceptional scalability. 🎓 Joe Armstrong's book was first published in 2007 and became known as the "Erlang Bible" among developers, helping spread concurrent programming concepts beyond the telecom industry.