Erlang is a functional and concurrent programming language, used to develop concurrent and distributed systems. The declarative is suitable for programming telecommunications systems as well as for industrial embedded real-time control problems. The language offers solutions for programming large concurrent real-time systems.
Erlang allows at the same time, writing applications for single computers as well as for a network of computers.
The Erlang programming language is associated with the term OTP, that signifies Open Telecom Platform. It is at the same time, a set of libraries, and design principles for Erlang programs.
The libraries are the Erlang runtime system, and ready to use components. The design principles provide a way to structure the system based on a concept called application. A way to package a system component as library modules or as a supervision tree.
One of the components of Erlang runtime system (ERTS), is the emulator running on top of the host operating system, and it acts similarly as a virtual machine. It is called BEAM, and it is also the machine on which the Elixir programming language runs.