I've never really looked into Elixir. I'm a Python guy and readability is the first thing that makes me love or hate a new language. Considering I've always found Erlang fairly obtuse visually I am surprised by how easy on the eye Elixir is.
I found this quote very telling:
> "Elixir is simply the first language since Ruby to really care about code beauty and UX of the language, libraries and ecosystem."
Of course they meant 'Python' instead of 'Ruby' but hey ;-)
I've made the switch from Ruby to Python, mostly for the scipy/numpy/pandas/jupyter support (and performance) - but I don't think I'll ever get away from the feeling with Python that I have to look up how to do things that felt natural in Ruby.
I've gone back and forth between Perl, Python, and Ruby a few times over the past 20 years...that feeling happens every time I switch, for all of them. I generally find "intuitive", and "ease of use", is almost always really just "what I'm used to".
That said, Ruby has gotten more difficult to read, for me, over the years. I just did a small-ish project in Ruby for a client, and was surprised at how much new syntax there is. It has become a large language, in the way that Perl is a large language. It took me longer than I expected to wrap my head around new idioms. Python 3 code seems simpler than Python 2. Ruby 2.x code seems more complex than Ruby 1.x. That actually surprised me, because the first time I tried Ruby (way back when DHH released the first "make a blog in 3.4 seconds" or whatever that RoR intro video was) I found it immediately intuitive, moreso than Python, which I was using at work.
Anyway, my point is that these are big, old, mature languages, with a lot of weird stuff that's made its way into them. It takes time to master something with such depth. It doesn't necessarily mean the language is worse than a new language that is extremely simple...Ruby, Python, and Perl started out simple (even simplistic); the needs of their users caused them to expand. It takes a real effort, and a willingness to break backward compatibility, to stay simple through decades of development. Python 3 made some of those hard choices and got a little simpler; Ruby and Perl haven't (though Ruby and Perl are still stronger languages than they were when they were "simple"/"easy", whatever).
But, I'm also using Python more lately because of the scientific and machine learning stuff, which is a super strong ecosystem.
I started out learning Erlang before Elixr had really crossed my radar. I have to say I prefer the Erlang syntax to the ruby-inspired Elixir. Maybe just a matter of what you know, I could see a RoR developer finding Elixir more appealing (I've never really used Ruby or Rails at all).
I am primarily a C# developer who learned Erlang (and did some small stuff in it) then moved to Elixir (I have never programmed in Ruby).
I think the huge extent of macros in Elixir is used extremely dangerously, and it can be very difficult to truly know what's going on behind the scenes sometimes.
That being said, I still prefer Elixir to Erlang for 2 reasons really.
1) I have a very iterative development style which involves a lot of refactoring and test -> code -> test -> code cycles that kept getting extremely frustrating with the ant-turd line endings. Honestly, if I could not have to deal with those line endings I probably would be more inclined to Erlang over Elixir
2) The testing infrastructure seemed much easier to use in Elixir than Erlang.
That being said, I don't see a purpose for Elixir or Erlang in the web serving space, and instead are using it for distributed (and non) stateful servers.
Agreed. The syntax and benefits would certainly appeal if I were a Ruby developer, but coming from a different perspective, I don't get the reason for all the love.
As a dev that used Python for the majority of projects I skipped over Elixir when I first saw it based on just a quick scan of the home page. "What? A dynamic, functional, compiled language that looks a little like Ruby? Why would I spend time learning this?". And I'm happy to say that I now love Elixir. Off the top of my head the 5 best features are: pattern matching[1], fault tolerance (a single isolated VM process can crash and then retry quickly), concurrency, Phoenix, and now Nerves[2].
I found this quote very telling:
> "Elixir is simply the first language since Ruby to really care about code beauty and UX of the language, libraries and ecosystem."
(found here: http://ruby2elixir.github.io/posts/2015/12-29-what-makes-eli... )
(Of course they meant 'Python' instead of 'Ruby' but hey ;-) )