Elixir is like an abstraction on top of Erlang and its runtime(otp). It heavily depends on the data structures of Erlang and its very difficult to extend it beyond Erlang's limitations / capabilities. When you take macros out of the way, Elixir programs can be translated line by line to Erlang. That OTP dependancy is considered the great strength of Elixir by many but it also has disadvantages.
The thing with Erlang is that it ain't a general purpose programming language like Java or Python but a niche telecom software language. Erlang is marketised like that and from what I've heard it's really great at that (telecom software). But nobody proposes to write f.e a game or a Gui app in Erlang.
Elixir on the other hand is marketised as a general purpose programming language. People that start a journey of learning Elixir must be very careful and understand that there are a lot of applications that Elixir can't be used for because of Erlang's limitations.
Also, when you start using it you'll see that common applications outside of the Erlang telecom niche, like the polular phoenix web framework and its ecto orm like library make very heavy use of macros and message passing abstractions that seem strange in a lot of situations. Of course all will fall in place after you understand the Erlang dependecy.
I can assure you erlang is not a 'niche telecom language's, as I have used it, in prod, in so many ways that have nothing to do with telecoms. One mini-project I'm planning on working on for fun is to use it for HDL simulations, because its message passing concurrency is a nice way of cleanly dealing with eventing voltage edge transition logic.
> But nobody proposes to write f.e a game or a Gui app in Erlang.
Yet square enix uses elixir for game orchestration
While the original use case for Erlang was for telecom, it's more accurate to say it's for building networked applications that can be designed for fault-tolerance.
"Niche telecom software language" is a brutal misunderstanding of Erlang strengths. But a common one, which Elixir is actually trying to rectify - turns out BEAM is maybe the best thing out there for web apps.
> Elixir on the other hand is marketised as a general purpose programming language.
Where is it marketed that way?
> It heavily depends on the data structures of Erlang and its very difficult to extend it beyond Erlang's limitations / capabilities.
It doesn't "heavily depend" on it and nobody is really trying to "extend it beyond Erlang's limitations". It's the exact opposite - it's trying to make use of all the Erlang & BEAM attributes (and trade-offs!) that make it especially adept for a given problem sets.
The Elixir website literally says this, and it's exactly what it is, nothing less, nothing more:
Elixir is a dynamic, functional language designed for building scalable and maintainable applications.
Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development, embedded software, data ingestion, and multimedia processing domains.
I have a few projects closely related to telecom stuff and I thought it may be fun to use Erlang or Elixir, however I keep hearing people advise against using Erlang, except in the specific niche of distributed applications, so idk anymore.
I will say there are some features in these languages that I have yet to see in any other languages, general purpose or domain specific, that I love.
The thing with Erlang is that it ain't a general purpose programming language like Java or Python but a niche telecom software language. Erlang is marketised like that and from what I've heard it's really great at that (telecom software). But nobody proposes to write f.e a game or a Gui app in Erlang.
Elixir on the other hand is marketised as a general purpose programming language. People that start a journey of learning Elixir must be very careful and understand that there are a lot of applications that Elixir can't be used for because of Erlang's limitations.
Also, when you start using it you'll see that common applications outside of the Erlang telecom niche, like the polular phoenix web framework and its ecto orm like library make very heavy use of macros and message passing abstractions that seem strange in a lot of situations. Of course all will fall in place after you understand the Erlang dependecy.