Erlang is our solution to three problems regarding the development of highly concurrent, distributed “soft real-time systems”:
To be able to develop the software quickly and efficiently
To have systems that are tolerant of software errors and hardware failures
To be able to update the software on the fly, that is, without stopping execution
When we “invented” Erlang, we focused on telecommunication systems, but today these requirements are applicable to a large number of applications, and Erlang is used in applications as divergent as distributed databases, financial systems, and chat servers, among others. Recent interest in Erlang has been fueled by its suitability for use on multicore processors. While the world is struggling to find methods to facilitate porting applications to multicore processors, Erlang applications can be ported with virtually no changes.
Initially, Erlang was slow to spread; maybe it was too daring to introduce functional programming, lightweight concurrency, asynchronous message passing, and a unique method to handle failures, all in one go. It is easy to see why a language such as Java, which is only a small step away from C++, was easier for people to swallow. However, to achieve the goals I’ve just mentioned, we feel our approach has weathered the test of time. The use of Erlang is expanding rapidly.
This book is an excellent and practical introduction of Erlang, and is combined with a number of anecdotes explaining the ideas and background behind the development of Erlang.
Happy and, I trust, profitable reading.