Influenced by: prolog lisp smalltalk plex
Erlang is a dynamically typed, functional language built at Ericsson to run massively concurrent, fault-tolerant telecom systems. Its actor-model concurrency, lightweight processes, message passing, and "let it crash" supervision philosophy run on the BEAM virtual machine, with the OTP framework and live hot code loading making it a natural fit for always-on, distributed software.
What makes it distinctive
- Actor-model concurrency: millions of cheap, isolated lightweight processes that share nothing and communicate only by asynchronous message passing
- "Let it crash" fault tolerance built on supervision trees, where supervisors restart failed processes instead of writing defensive error-handling everywhere
- OTP framework of battle-tested behaviours (gen_server, supervisor, application) and design principles for production-grade systems
- Hot code loading: modules can be upgraded in a running system with no downtime
- Built-in distribution, letting processes on different nodes communicate transparently across a cluster
- Soft real-time, per-process garbage collection on the preemptively scheduled BEAM virtual machine
- Immutable data and single-assignment variables in a small, pragmatic functional core with pattern matching
History
Erlang grew out of work begun in 1986 at the Ericsson Computer Science Laboratory in Stockholm, led under Bjarne Däcker. Joe Armstrong, Robert Virding, and Mike Williams set out to find a better way to program fault-tolerant telephony switches, a domain that demanded soft real-time behavior, high concurrency, distribution, and continuous operation. Early experiments were written as a layer on top of Prolog, and Erlang's syntax still shows clear Prolog ancestry; influences from Lisp, Smalltalk, and Ericsson's own PLEX language also shaped the design. The name is both a nod to the Danish mathematician Agner Krarup Erlang, a pioneer of traffic engineering, and a syllabic abbreviation of "Ericsson Language."
By 1988 Erlang had proven useful for prototyping exchanges, but the Prolog-based interpreter was too slow for production. This motivated a dedicated implementation: the BEAM (Bogdan/Björn's Erlang Abstract Machine) virtual machine, whose development began around 1992 and compiled Erlang to bytecode for far better performance. Throughout the early 1990s the language and its accompanying libraries matured into what became OTP (Open Telecom Platform), a set of design principles, behaviours (such as gen_server and supervisor), and tools that codify Erlang's approach to building robust systems through supervision trees and the famous "let it crash" error-handling philosophy.
A turning point came in 1995, when Ericsson's ambitious next-generation AXE-N exchange project collapsed. Erlang was chosen for the replacement ATM switching effort, leading to the AXD301, announced in 1998, which grew to over a million lines of Erlang and achieved legendary reliability figures (often cited as nine nines of availability). Ironically, in early 1998 Ericsson management banned the use of Erlang for new in-house products in favor of more widely adopted languages.
That decision helped push Erlang into the open: in December 1998 Ericsson released Erlang/OTP as free, open-source software, and much of the original team left to found Bluetail AB to build on it commercially. Over the following years the runtime gained important capabilities, including symmetric multiprocessing (SMP) support added in 2006 that let Erlang programs scale across multiple cores. Erlang/OTP continues to be developed by Ericsson together with a broad open-source community, today distributed under the Apache License 2.0. Its design has deeply influenced later BEAM languages such as Elixir, LFE, and Gleam, as well as concurrency models in languages and frameworks like Scala/Akka, Clojure, Go, Rust, and Dart. Notable real-world users include WhatsApp, RabbitMQ, and many telecom and messaging platforms.