Over the last few weeks I’ve learning Elixir. I acquired Programming Elixir and Programming Phoenix from Pragmatic Programmers towards this end, and highly recommend them both. They have been excellent resources.
Elixir is a functional language. So that is a very huge adjustment coming from Ruby, where literally everything is an object. Getting over OO habits is very difficult. But I’ve already found myself incorporating functional programming concepts into my professional Ruby work just from the bit of off hours exposure I’ve had with Elixir.
Elixir has been gaining a lot of traction lately, especially after Dave Thomas wrote Programming Elixir in 2014. There is a lot of excitement surrounding Elixir for a lot of great reasons. Elixir runs on top of Erlang and the Erlang Virtual Machine, which is legendary. Erlang was developed for telephony applications in 1986. Erlang’s features include:
- Distributed
- Fault-tolerant
- Soft real-time (system doesn’t fail if deadline is missed)
- Highly Available
- Hot swappable
All features you would expect of a language that powers a lot of the world’s communications systems.
There is always a bit of deserved caution whenever something new comes around. Lots of languages and frameworks get hype that they don’t deserve. The thing about Elixir though is that big names in programming are paying it attention and approving of its direction. The fact that Dave Thomas is excited about it, and the fact that Joe Armstrong (one of Erlang’s creators) called Elixir “good shit” says a lot.
I’m excited about Elixir too. I’m excited about the prospect of writing highly reliable, performant applications in a Ruby-like syntax. The fact that there is a lot of Ruby-Elixir overlap in the communities helps a lot too. I’m excited to dive deeper in the coming weeks.