Generated by GPT-5-mini| Erlang | |
|---|---|
| Name | Erlang |
| Paradigm | Concurrent, functional, distributed, fault-tolerant |
| Designer | Joe Armstrong, Robert Virding, Mike Williams |
| Developer | Ericsson |
| First appeared | 1986 |
| Typing | Dynamic |
| License | Apache License 2.0 |
Erlang is a general-purpose, concurrent, functional programming language originally developed for soft real-time systems in telecommunication environments. It was created by a team at Ericsson and later influenced projects at Citrix Systems, Amazon Web Services, WhatsApp, and T-Mobile; its runtime and ecosystem have been used alongside technologies such as OTP (Open Telecom Platform), RabbitMQ, MongooseIM, and Riak. The language emphasizes lightweight processes, message passing, and "let it crash" fault tolerance that shaped designs in systems like Kubernetes, Docker, and Apache Cassandra.
Erlang's origins trace to a research and development effort at Ericsson in the 1980s by Joe Armstrong, Robert Virding, and Mike Williams, conducted in the context of projects related to GSM and switched telephony; early academic and industrial discussions involved participants from Lund University and Uppsala University. The language matured through internal releases within Ericsson Research and produced the OTP (Open Telecom Platform) in the 1990s, which solidified patterns later adopted by AT&T Bell Labs and referenced in work by Robin Milner and Tony Hoare. In the 2000s, Erlang's model influenced startups such as WhatsApp and projects at Facebook; its ecosystem expanded with open-source efforts like Erlang/OTP and companies like ProcessOne.
Erlang is designed for highly available, soft real-time distributed systems; its key concepts—lightweight processes, asynchronous message passing, supervision trees, and hot code swapping—were developed to meet requirements from Ericsson Mobile Systems and telephony platforms used in GSM and UMTS infrastructures. The language's semantics draw on functional ideas from researchers such as Robin Milner and systems thinking evident in Communicating Sequential Processes and Actor model traditions advanced by Carl Hewitt. Features include dynamic typing and immutable data influenced by work at Kent University and pragmatic choices seen in languages like Lisp and ML; OTP design principles have parallels with fault-tolerance work by Leslie Lamport and distributed algorithms studied at MIT.
Implementations of the language include the canonical Erlang/OTP runtime system developed at Ericsson, alternative compilers and virtual machines inspired by projects at Clarion and research groups at Imperial College London, and integrations with systems such as BEAM and native interop layers used by Elixir and LFE. The runtime provides a scheduler, garbage collector, and BEAM virtual machine components similar in role to those in Java Virtual Machine discussions and influenced by process scheduling research from University of Cambridge and University of Glasgow. Distributed operation uses node connectivity, global registries, and supervision mechanisms drawn from telephony experience at Northern Telecom and control-plane designs explored by IETF working groups.
The ecosystem around Erlang includes core projects like OTP (Open Telecom Platform), build tools and package managers inspired by Rebar3 and Hex.pm workflows, testing frameworks influenced by JUnit and QuickCheck (specifically Quviq QuickCheck), messaging systems such as RabbitMQ and VerneMQ, and databases like Riak that adopt similar concurrency models. Commercial and open-source tooling is provided by companies including ProcessOne, Ericsson, and Heroku; monitoring and observability tools integrate with Prometheus, Grafana, and tracing systems similar to efforts at OpenTracing and OpenTelemetry.
Erlang has been adopted in telecom companies like Ericsson and Nokia, messaging platforms including WhatsApp and RabbitMQ, and distributed database projects such as Riak; cloud and infrastructure providers like Amazon Web Services and Google Cloud Platform have run services built on Erlang-derived systems. Use cases include switch control in GSM networks, instant messaging at scale (e.g., WhatsApp), real-time bidding systems employed by AdRoll-style platforms, and fault-tolerant backends in financial services touched by firms like Goldman Sachs and Barclays for specific internal services.
Simple concurrent patterns demonstrate process spawning, message passing, and supervision used in OTP; examples in documentation reference idioms comparable to actor examples in Akka and concurrency notes popularized by Simon Peyton Jones. Sample constructs include process creation with spawn, receive loops for message dispatch comparable to examples in Scala actor tutorials, and application behaviours as in OTP that echo patterns from Spring Framework components and Node.js event loops. Educational resources and books from authors such as Joe Armstrong, Francesco Cesarini, and Simon St. Laurent parallel tutorials produced by O'Reilly Media and course materials at Chalmers University of Technology.
Critics point to Erlang's syntax and functional style as obstacles for developers accustomed to languages like Java, C++, Python, or JavaScript, and integration pain with ecosystems led by Microsoft and Apple tooling. Performance criticism often compares raw numeric throughput unfavorably to C and Rust in CPU-bound workloads, and ecosystem gaps exist relative to package density in ecosystems like npm and PyPI; some debates tracked in Stack Overflow and academic venues at ACM conferences question trade-offs between the BEAM scheduler and multicore scaling strategies explored at Intel and AMD.