Day9 - What Elixir is about
Today I started my journey with Elixir! Therefore, I decided to go with Dave Thomas's video course 'Elixir for Programmers' for several reasons:
- This course assumes that you already have programming experience in another language and therefore does not completely start at 0 (i.e. there is no explanation of what an integer is or stuff like that).
- In my opinion, a video course feels more varied than reading a book.
- The video course has pretty good reviews!
- Dave describes his course as "we were both sitting at a computer and I was showing you a cool new language". Sounds cool!
Why did I choose Elixir as language?
I don't know much about Elixir at this stage, but the things I heard and read so far sound really amazing. For example, Elixir is shipped with a great toolset by default. When you install Elixir (I used homebrew on Mac for that), it installs everything you need to get started, no configuration problems or the like. These tools are for example the Elixir compiler elixirc, the interactive Elixir shell called iex, a build tool called mix as well as a framework called ExUnit. By the way I think it's great that Elixir brings a built-in test framework with it! As far as I know from other langauges like Java or Scala, you have to declare test frameworks explicitely on your own in order to start testing. Not really the TDD-friendly way.
But there are a lot of other reasons why I think Elixir is a great choice. The official homepage describes Elixir as "a dynamic, functional language designed for building scalable and maintainable applications". Elixir code runs on the battle-proven Erlang Virtual Machine (also called BEAM). The BEAM itself has very interesting approaches, for example it's concurrency model which is based on processes/actors instead of multithreading. In the context of the BEAM, a process is not an operating system process! A BEAM process has much less overhead and thus is much smaller. It is said that the BEAM supports the execution of hundreds of thousands of processes on a single machine. This is how you can achieve scalability with Elixir, and I'm so excited about exploring that things! My first steps with Elixir also gave me the impression that Elixir is easy to learn. Elixir has also other great concepts like an amazing pattern matching concept or pipes. I will tell you on the next blog posts more about that. There is also a growing Elixir community that has turned out to be super friendly and helpful. And last but not least, Elixir is just so much fun to write. Just give it a try!
Cheers!