What is Elixir?
A functional language built on the battle-tested Erlang VM, designed for concurrency, fault tolerance, and systems that stay up.
3 min read
Elixir is a dynamic, functional programming language created by José Valim in 2011. It compiles down to bytecode that runs on the BEAM — the Erlang virtual machine — which means Elixir inherits decades of engineering built for telecom systems that had to run for years without downtime.
That heritage shapes everything about the language. Elixir isn't just "a nicer syntax for Erlang," but it does share Erlang's core superpower: running huge numbers of lightweight, isolated processes that can crash and recover without taking the rest of the system down with them.
Why Elixir exists
Erlang is excellent but has a syntax and tooling story that many developers find unapproachable. Valim, a former Ruby on Rails core contributor, set out to build a language with Ruby-like ergonomics — readable syntax, a friendly mix build tool, first-class documentation — while keeping everything that makes the BEAM special: preemptive scheduling, per-process garbage collection, and near-unbreakable fault isolation.
defmodule Greeter do
def hello(name) do
"Hello, #{name}!"
end
end
IO.puts(Greeter.hello("world"))
# => Hello, world!That snippet already shows the shape of Elixir: modules group functions, def defines them, and string interpolation with #{} will feel familiar if you've used Ruby.
Concurrency is the whole point
Most languages treat concurrency as an advanced, bolt-on feature. Elixir treats it as the default way of thinking about a program. A single BEAM node can run millions of independent processes, each with its own memory and garbage collector, communicating only by sending messages. There's no shared mutable state to corrupt, no global lock to contend for.
This is why companies running chat platforms, real-time bidding systems, and telecom infrastructure reach for Elixir: WhatsApp-scale message routing and Discord-scale presence tracking are exactly the kind of "millions of things happening concurrently" problems the BEAM was built to solve.
"Let it crash"
Elixir embraces a philosophy that sounds counterintuitive at first: instead of defensively coding for every possible failure, let a process crash and have a supervisor restart it in a known-good state. Later lessons in the Concurrency & OTP section dig into processes, GenServer, and supervisors in detail — for now, just know that fault tolerance in Elixir isn't about preventing every crash, it's about making crashes cheap and recovery automatic.
What Elixir is used for
- Web backends — the Phoenix framework (covered later in this course) powers APIs and real-time apps with LiveView.
- Distributed systems — message queues, job processors, and anything that needs many independent workers.
- Embedded/IoT — via Nerves, which runs Elixir on hardware like Raspberry Pi.
It's not the right tool for CPU-heavy number crunching (that's better suited to languages with tighter control over raw computation), but for anything defined by concurrency, resilience, and long-running uptime, Elixir is one of the strongest options available today.
The rest of this course builds from installing Elixir and writing your first script, up through pattern matching, OTP, and Phoenix — the same progression that takes most working Elixir developers from "hello world" to production systems.
Test what you just learned
4 quick questions. Get all of them right to unlock the next lesson.
You can take the quiz without an account — logging in just lets your result count toward your progress.