The BEAM VM is what makes all this possible and the BEAM VM has been around for decades.
Many of my dev friends with hipsterish inclinations jumped on the Elixir hype train in the past year or so. I really don't see how this is different than past "hype phases" of other technologies.
If I am not mistaken Elixir is primarily a front end that generates code for the Erlang VM (BEAM) supported by the Erlang OTP backend.
Having said that the questions remains, why doesn't Erlang get the same hype? I am hazarding a guess that a majority of developers still work in the imperative style and switching to the functional side takes a bit of relearning in the way you think.
Erlang accumulated a lot of worts, but it never really got rid of them.
I don't think Syntax matters all that much. Smalltalk's syntax is pretty odd, but its regular and simple to explain/understand, so people quickly come to like it. Smalltalk's VM's though are a huge barrier to entry.
Erlang is the reverse: great VM... great architectural decisions... great libraries.... questionable language semantics.
Erlang did get the same amount of hype, probably multiple times in the past 20 years. So did many, if not most reasonably well-known languages, programming paradigms, architectural solutions, databases, frameworks and so on.
I do not make any judgement about the merits or maturity of Elixir itself. Elixir is perfectly fine.
As developers we should have a healthy dose of skepticism when it comes to blog posts that claim 10x speed improvements with technology X. Was it just the rewrite? Does your use case match mine? And so on... In short: Everything is a trade off, and there is no silver-bullet.
Not that Elixir is bad, but if you are writing something in it today you are ahead of the curve. As soon as there are a lot of mediocre developers (if we get there) that start using Elixir because they heard it can do no wrong, you'll hear complaints.
Ruby on Rails, ASP.Net, Django, they all have a million and one StackOverflow answers, blog posts, and books written about them. I found out the hard way that Elixir and Phoenix docs aren't as prolific. That and the names are less Googleable.
Some people may like that challenge, but it does add a level of difficulty.
``` @doc This is some useful, markdown documentation, which actually contains usage info.
## Usage
## Examples
```Odd, because I have found the opposite to be true about the docs. I've found the docs proper to be quite prolific, well maintained and well-written with examples. This stems from docs being first-class citizens of the language, a dead-simple docs generation tool, and their dogged commitment on excellent documentation (which is why docs are first-class citizens to begin with).
> That and the names are less Googleable.
That said, the _SO/Google_ aspect (not docs) is _significantly_ less prolific - I totally agree with that. But I've found where with other languages I often find myself on SO (C# and JS mainly), I haven't even needed it because the docs are just so well maintained (and versioned). This, plus their community is _extremely_ active, on the elixir forum and github (also slack, but I use that less).
So now, when I google for elixir info, I'm basically googling to get to the official documentation quickly. If there is any question I have beyond that, I check the elixir forum, rarely (but sometimes) needing to post a new question. Perhaps I've just had a different experience wrt this.
I chalk it up to my C# dev background, where source code was either completely impenetrable, a Sacred Thing that nobody should feel privileged to look at, or both.
I'll have to give it another look sometime.
I think people coming from OOP find FP hard and seem to struggle with things like Ecto and definitely Macros.
Once you have mutable state everywhere and problems with the GIL and throughput on routes being slowed down too much so you start moving everything into queues (celery or rabbit). Then you realise that all of this could have been avoided and made much much easier to test if it were all written in Elixir.
I really don't get this. Elixir is barely FP—just immutability and first class functions. Is it really that hard for a lot of people? It's not Haskell or Clojure (""weird"" syntax).
I'd argue the hard part of Elixir is OTP and taking advantage of distributed computing.
> haven't encountered the problems Rails/Ruby or say Python has.
This is a good reason, honestly. If Ruby is fine, why change? It'll just make learning a new paradigm and OTP less fun because there's no need to learn it.
1) no support from mega corporations 2) not that many developers to choose from 3) while based on BEAM it's still too "new" 4) too slow for raw money crunching
I didn't need rocket fast performance and I didn't need any JVM libraries, but I did like the actor model of concurrency and process supervision, so when it came time to look for greener pastures, Elixir was a solid choice. I've been using it in production just over a year, and it's been excellent.