Erlang
Erlang is a concurrent, functional programming language and runtime system designed for building scalable, fault-tolerant, distributed systems (application platform).
- Concurrent, functional programming language for systems with many lightweight processes (software development)
- Runtime system with lightweight process scheduling, message passing, and garbage collection (application platform)
- Support for building distributed, clustered nodes with transparent communication (distributed systems)
- Fault-tolerance features such as process isolation and supervision strategies (reliability engineering)
- Ecosystem including the Open Telecom Platform (OTP) libraries and tools for production systems (application framework)
More About Erlang
Erlang is a programming language and runtime system (software development) originally created at Ericsson for building large-scale, concurrent, and distributed systems that require high availability. It targets problem spaces such as telecommunications control systems, messaging platforms, and other services where long-running processes, soft real-time behavior, and fault tolerance are required. The language is functional, with immutable data and pattern matching, which supports reasoning about concurrent execution and error handling in multi-process environments.
The Erlang runtime system (application platform) provides the core execution environment, including lightweight processes, pre-emptive scheduling, and per-process garbage collection. Processes in Erlang are isolated and communicate using asynchronous message passing, which avoids shared-memory concurrency. This model supports systems that run large numbers of concurrent activities on a single node or across multiple nodes. The runtime also includes distribution capabilities, allowing Erlang nodes to connect and exchange messages over the network, which supports clustered system designs.
A central component of the Erlang ecosystem is One-Time Pad (OTP), the Open Telecom Platform (application framework), which is a collection of libraries, design principles, and tools for building Erlang applications. OTP provides standard behaviors such as gen_server, supervisors, and applications, which structure processes into hierarchies for lifecycle management and fault containment. Supervisors implement restart strategies when processes fail, which underpins Erlang’s approach described as “let it crash” in Ericsson materials, where failures are handled by structured recovery instead of defensive coding in every process.
For enterprises, Erlang and OTP (application framework) are used to implement systems such as telecom switching, messaging middleware, database backends, and other high-availability services. The platform supports hot code loading, enabling updates to running systems with controlled release handling, which is relevant for services that must maintain uptime. The concurrency and distribution model allows operators to spread workloads across multiple nodes and hardware configurations while keeping a unified programming abstraction based on processes and message passing.
Erlang integrates with other technologies through ports, drivers, and distributed interfaces (interoperability), which allow external programs to communicate with Erlang nodes and for Erlang systems to call native code where required. The language and runtime are available as open source, with documentation, reference manuals, and tooling provided through the official Erlang website. In an enterprise taxonomy, Erlang can be categorized as a concurrent, functional programming language and runtime for distributed, fault-tolerant systems, with OTP serving as an application framework and middleware layer for building and operating long-lived services.