The Pragmatic Studio

What Is Elixir?

May 10, 2017

The short answer to this week’s top FAQ is that Elixir is a functional, concurrent programming language that’s gaining a lot of momentum these days.

The more interesting answer requires a step back in time. In 1986, Ericsson needed a programming language to build concurrent, distributed, and fault-tolerant telephone switch systems. They wanted an extremely reliable system long before the days of “Can you hear me now?”. Out of that real-world need, Erlang was created.

(Trivia: In 2008, we held a public Studio on Erlang co-taught by one of its creators, Joe Armstrong, and our friend Dave Thomas.)

Of course new languages and tools take time to mature. Once Ericsson had the language defined, their next challenge was to satisfy the need for speed. They estimated that the next evolution of the interpreter would need to be 40 times faster to meet their production requirements. So in 1992, the creators of Erlang began developing the Erlang Virtual Machine (BEAM).

By 2010, after decades of use, Erlang’s VM had a compelling track record of production-level success, which caught the attention of José Valim:

“I was working on improving Rails performance when working with multi-core systems, as our machines and production systems are shipping with more and more cores. However, the whole experience was quite frustrating as Ruby does not provide the proper tool for solving concurrency problems. That’s when I started to look at other technologies and I eventually fell in love with the Erlang Virtual Machine. I started using Erlang more and more and, with experience, I noticed that I was missing some constructs available in many other languages, including functional ones. That’s when I decided to create Elixir, as an attempt to bring different constructs and excellent tooling on top of the Erlang VM.

And that’s what we have today with Elixir: a functional language that gives us the joy and productivity of Ruby along with the concurrency, fault tolerance, and scalability of Erlang.