xviiixviii
about this book
Who should read this book
This book is a tutorial that will teach you how to build production-ready Elixir-based
systems. It’s not a complete reference on Elixir and Erlang—it doesn’t cover every
nuance of the language or every possible aspect of the underlying Erlang VM. It glosses
over or skips many topics, such as oating-point precision, Unicode specics, le I/O,
unit testing, and more. Although they’re relevant, such topics aren’t this book’s pri-
mary focus, and you can research them yourself when the need arises. Omitting or
dealing quickly with these conventional topics gives us space to treat more interesting
and unusual areas in greater detail. Concurrent programming and the way it helps
bring scalability, fault tolerance, distribution, and availability to systems—these are the
core topics of this book.
Even the techniques that are covered aren’t treated in 100% detail. I’ve omitted some
ne-print nuances for the sake of brevity and focus. My goal is not to provide complete
coverage, but rather to teach you about the underlying principles and how each piece ts
into the bigger picture. After nishing this book, you should nd it simple to research
and understand the remaining details on your own. To give you a push in the right direc-
tion, mentions of and links to further interesting topics appear throughout the book.
Because this book deals with upper-intermediate topics, there are some prerequi-
sites you should meet before reading it. I’ve assumed you’re a professional software
developer with a couple years of experience. The exact technology you’re procient in
isn’t relevant: it can be Java, C#, Ruby, C++, or another general-purpose programming
language. Any experience in development of backend (server-side) systems is welcome.
You don’t need to know anything about Erlang, Elixir, or other concurrent platforms.
In particular, you don’t need to know anything about functional programming. Elixir
is a functional language, and if you come from an OO background, this may scare you
a bit. As a long-time OO programmer, I can sincerely tell you not to worry. The under-
lying functional concepts in Elixir are relatively simple and should be easy to grasp. Of
course, functional programming is signicantly different from whatever you’ve seen in
a typical OO language, and it takes some getting used to. But it’s not rocket science, and
if you’re an experienced developer, you should have no problem understanding these
concepts.
How this book is organized
The book is divided into three parts.
Part 1 introduces the Elixir language, presents and describes its basic building
blocks, and then treats common functional programming idioms in more detail:
¡Chapter 1 provides a high-level overview of Erlang and Elixir and explains why
those technologies are useful and what distinguishes them from other languages
and platforms.
¡Chapter 2 presents the main building blocks of Elixir, such as modules, func-
tions, and the type system.