Erlang / OTP
The Open Telecom Platform (OTP) and its central language Erlang are my go to technology for implementing network and communication software. Erlang has come into the world when modern telecommunication systems were in need for highly concurrent lightweight processes to handle phone calls in massive telephone networks. Today we use Erlang whenever we implement communication software or other systems that are in need for highly efficient concurrency; therefore my recommendation is a clear ADOPT on Erlang and the OTP Libraries.
- Efficient concurrency as main design directive
- Actor model based software design and lightweight processes with good monitoring ensures stable systems
- Functional Programming: strictly immutable data structures, no rebinding, reactive programming through messages
- Small but strong and vivid community
- Development and improvement is (financially) backed by Ericsson
- Proved stability: Erlang has now been used by most big telecommunication companies in production for almost 30 years
- Erlang is not the fastest of languages. Where speed and performance matters it might be a good idea to use C or Rust instead.
- As a descendent of Prolog Erlang has a somewhat foreign syntax. A Java or PHP trained developer might have to take some time to get productive with en Erlang code base.
- Refactoring can be a pain.
- Elixir - Ruby inspired language running on the Erlang BEAM with full support of OTP and meta programming capabilities
- Go - concurrency based language by Google with C-like syntax
- Rust - system programming language with strong functional concepts as well as good concurrency capabilities baked in and C-like syntax