1. A big company that adopted it in a major way or created it (Go, Java, React).
2. A very low barrier to entry (Go, node.js, Python).
3. A major leap in productivity compared to alternatives (Ruby+Rails, Python).
11–20 of 130 posts
1. A big company that adopted it in a major way or created it (Go, Java, React).
2. A very low barrier to entry (Go, node.js, Python).
3. A major leap in productivity compared to alternatives (Ruby+Rails, Python).
The trend right now is AI, which is mostly written in Python. Most people want to write their whole stack in 1 language, whenever possible. So people just default to Python servers and React clients. There is tooling like Carton being developed to work around this, but the gravity is always towards monolanguage stacks. In the past the incumbent would get stiff and lose resiliency, like Java or C. That's when a shiny…
> That's when a shiny new language like Python would come along Python is one of the oldest languages that is still in active use, predating Java.
It's just too different and too advanced for the average programmer to use. There is no surprise that we have languages like Go now - explicitly familiar, explicitly dumb.
Elixir does not have familiar C-like syntax or the usual OO-ish programming model, and its (btw fantastic) approach to concurrency is also very strange to people coming from popular languages.
1. The really cool and differentiated aspects of elixir require specialized deployments. Cloud vendors are optimized for stateless horizontally scalable infrastructure not stateful infrastructure.
2. Elixir is a functional programming language and this means you cannot mutate variables. While I like many aspects of elixir, not being able to mutate state makes elixir unsuitable for any task that cares about performance at all. Many algorithms are memory bound and you really cannot justify using things like linked lists.
For a technology to become widely used it usually needs one or more of these factors when it is released: 1. A big company that adopted it in a major way or created it (Go, Java, React). 2. A very low barrier to entry (Go, node.js, Python). 3. A major leap in productivity compared to alternatives (Ruby+Rails, Python).
First, the language paradigm pendulum seems to be swinging back towards the middle.
Second, and perhaps more impactful, Ruby on Rails is having a bit of a renaissance.
There are enough other acceptable languages+frameworks, and two of them (Python and JavaScript) are unfortunately just too visible and in the way.
Students, junior developers, and developers from non-CS backgrounds start with what's "easy" and available and talked about (lots of published examples, guides, etc.)
Elixir is for those who have experienced other langauges and seek something better. And since it definitely requires a paradigm shift in thinking (OOP->Functional), that puts it essentially behind a fence for many people. Why climb over the fence if Python is "good enough".
Elixir also has a great story with BEAM and all the amazing capabilities it offers, but those are capabilities that would be desired and exercised by experienced developers.
Ultimately it's a matter of mindshare. Search for programming examples for just about any topic, and you're going to get a flood of Python or JavaScript results. Maybe Java too. This is especially true since some of the programmer-mills appear to require students to regularly post blogs with trivial or lightweight essays and examples in the aforementioned languages.
The people who use real power tools are usually busy doing real things, so they generate less web fluff about their tools.
I think this causes a big push towards adoption of a already popular tools, until those popular tools cause significant issues. There's a weird kind of loop there where "it's not used much" is the reason something isn't used much but those cycles can be pretty tough to break.
Here is why I think it's not more mainstream 1. The really cool and differentiated aspects of elixir require specialized deployments. Cloud vendors are optimized for stateless horizontally scalable infrastructure not stateful infrastructure. 2. Elixir is a functional programming language and this means you cannot mutate variables. While I like many aspects of elixir, not being able to mutate state makes elixir unsuit…
In fact, you can build a release that's just a zip file which also contains the full elixir/erlang runtimes, that can be deployed on a barebones server (assuming the same libc, etc). It's not "single-executable" nice like Go/Rust/.NET but it's much simpler than it used to be.
The one use case we've seen for clustering things is having our cache stay in sync. But apart from that, we really haven't seen a need to cluster our nodes.
But if we wanted to, it's beautifully and trivially easy to do things in a cluster in Elixir/Erlang.
Immutable state is definitely one of the steeper learning curves to get over.
For a technology to become widely used it usually needs one or more of these factors when it is released: 1. A big company that adopted it in a major way or created it (Go, Java, React). 2. A very low barrier to entry (Go, node.js, Python). 3. A major leap in productivity compared to alternatives (Ruby+Rails, Python).