As someone who's primarily worked in ops engineering I've mostly worked with scripting languages and DSLs (bash, puppet, etc) and cobbled together ruby/Python as required but my strength has never been in programming. I picked up someone's tutorial on Elixir thinking it would be as mind bendingly mathematical as when I looked at Haskell but I was quite taken back - it seemed to make sense to my fickle mind and I found I could quite enjoyably read most basic examples / tutorials with no experience or documentation (also within reason). For me it had the humanised beauty(?) of ruby and logical power of Python without as many 'wtf does that do?' moments. I don't have a lot of use for Elixir in my job (yet), but I am tempted to learn a little.
Am I ignorant because I don't have a programming mindset or 'real' language experience?
Don't get me wrong, Elixir is one of my favorite languages, but I don't think you'd be behind for not knowing it. Even functional programming as a whole isn't widely enough adopted that people who aren't familiar with it are behind.
Of course you're right, but I think anyone who is capable of getting their head around Elixir is capable of understanding that this is a trivial example meant to showcase a powerful language feature. What you choose to use it for is up to you, not the article's author.
I would love to use Elixir day to day. As the author points out, it's an enjoyable language. I highly recommend every developer to try it out, especially if you've never done any functional programming before.
Once I wrapped my head around it, I found Elixir to be much simpler than other programming languages. I'd rather use Elixir to build things if there aren't any blockers to doing so.
How easy (or hard) is it to learn Elixir for someone with Python/PHP/JS background and zero knowledge of functional programming? Also, are there job opportunities for Elixir or is it a niche language?
I've been "obsessed" with Elixir lately, and it truly is a breath of fresh air in the current programming language landscape.
I've started with C, built a career with backend Python services/dashboards, and spent some time on the "fringe" learning about Lisp, Scheme, Haskell, Clojure. And once you rewire your brain with functional programming constructs or immutability, it is really hard to go back to Python, using large libraries feels too much like magic (if you ever used Django, raise your hands if you've ever had to delve into the source code to understand what is going on).
I've had a fling with Go, I really like some of its ideas, namely static linking, native compilation, no exceptions, easy deploy (I wrote a huge Django 1.6 app shipped as RPM for RHEL 5 enterprise servers, and that was truly the definition of pain). I disliked the lack of functional constructs such as map, reduce, filter, and it felt a step back from the "fringe" languages I've been studying.
Then I discovered Elixir.
It's a mix between Haskell without purity and types and Clojure without parens, with a Ruby-style syntax and a battle-tested framework for concurrency and distributed computing.
It's like an immutable Python. With built-in virtualenv + pip tooling. And first-class macros. And pattern matching.
Pair that with a sane standard library (unit testing? logging? documentation? We've got you covered), a REPL, a LINQ-style lightweight ORM, and a very interesting web framework built around modern tech (websockets, JSON APIs, ES6).
And binary compatible with the most robust concurrency and supervision system, Erlang/OTP.
I know I talk like a fanboy, but, man, programming feels like joy again.
I was a python main before I started using elixir and I had similar thoughts, but after becoming more familiar with it, I actually think elixir is far less verbose than python.
They’re different enough languages that it’s really difficult to just open up an elixir codebase and try to read it. Elixir, like ruby, has a lot of syntactic sugar that just won’t make sense if you approach it with a Python mindset. Elixir is also functional, which can be a pretty big mind bender.
It’s really a language that you need to start from the basics and go through the tutorials to learn the basic syntax, operators, etc and write your own small programs. If you’re like me, you’ll just end up discouraged if you expect to be able to learn Elixir just by reading existing code.
reply