Erlang is the result of a project at Ericsson’s Computer Science Laboratory to improve the programming of telecommunication applications. A critical requirement was supporting the characteristics of such applications, which include:
- Massive concurrency
- Fault-tolerance
- Isolation
- Dynamic code upgrading at runtime
- Transactions
Throughout the whole of Erlang’s history, the development process has been extremely pragmatic. The characteristics and properties of the types of systems in which Ericsson was interested drove Erlang’s development. These properties were considered to be so fundamental that it was decided to build support for them into the language itself, rather than in libraries. Because of the pragmatic development process, rather than a result of prior planning, Erlang “became” a functional language — since the features of functional languages fitted well with the properties of the systems being developed.