Stream: general

Topic: Elixir: why is it so underrated?


view this post on Zulip Perma (Sep 13 2024 at 20:05):

I am curious as to know, why is Elixir so underrated?
I have been using Go and Rust professionally for 3 years now. I recently learned Elixir and working my way through Phoenix and LiveView.
And, it bothers me so much that Elixir seem address so much of the painpoints I had experienced within the context of backend. But is far less known than the other languages that are considered as first choices for the server applications (backend and server-side rendered frontend).

Why is so underhyped?

view this post on Zulip Brett Cannon (Sep 13 2024 at 21:35):

I think it's because it's functional, the syntax is a bit funky if you aren't a Ruby developer, it didn't come from a big tech company, and it isn't a generalized language that I would view as strong in multiple workloads (or at least the community doesn't hype those other workloads beyond back-end much).

view this post on Zulip Perma (Sep 14 2024 at 13:02):

Hmmm. I can see your point. But Elixir has been operating in the same space as Go (network and backend) and has been more successful in providing for web front-end development. I would argue that Elixir because of the pattern matching and BEAM offer more to network programming and backend development.
Yet it far less known, and utilized.

view this post on Zulip Erik Lundevall-Zara (Sep 15 2024 at 22:13):

As with many things, one is not likely convince or persuade someone to use a new language or ecosystem, they have to discover it themselves that it may address pain points they have.

This type of discovery would also be from the perspective of this user and what they know of, and where do they search for information to address their pain points. More "show, not tell", with the right context.
If you are a senior developer, you would likely be ok with a wider range of options to consider than a more junior developer outside of "mainstream".

Nowadays it is also not just about the language, but also the ecosystem around it, the community, and tooling. I think Elixir has a good story there, but it is not so easily communicated perhaps.

Also, in terms of success stories going to Elixir from something else, that something else is often Ruby, which does not help so much getting people interested from other ecosystems.

view this post on Zulip Daniel Buckmaster (Sep 16 2024 at 01:09):

I've only had a very small brush with Elixir. I liked a lot about it, but at this point in my life I only have so much room for another dynamically-typed language :joy:.

view this post on Zulip Daniel Buckmaster (Sep 16 2024 at 01:10):

I jest, I jest. Really, I'd consider Elixir if I were in a position to pick languages, and frontend weren't a huge concern (e.g. I was doing something form-based where progressive enhancement is the way to do).
My experience has been spending nearly 9 years now building an app with a very involved frontend data model (think CAD), split across JS and PHP. I regret not going with TS on the backend from the start (or at least, some TS on the backend). It could have prevented a lot of pain having two codebases to work on the same data model.

view this post on Zulip Perma (Sep 16 2024 at 06:01):

Erik Lundevall-Zara said:

This type of discovery would also be from the perspective of this user and what they know of, and where do they search for information to address their pain points. More "show, not tell", with the right context.
...
Nowadays it is also not just about the language, but also the ecosystem around it, the community, and tooling. I think Elixir has a good story there, but it is not so easily communicated perhaps.

Yes. That definitely feels correct to me. I think Elixir community does a lot. But they don't really show it. How ever telling is also not a good strategy as you said. I advocated for Rust for a long while at my work place, it did not go well. I just showed a few things I did with Elixir, and half of our team just started learning Elixir.

Perhaps more story telling is the answer here.

view this post on Zulip Perma (Sep 16 2024 at 06:18):

Daniel Buckmaster said:

I've only had a very small brush with Elixir. I liked a lot about it, but at this point in my life I only have so much room for another dynamically-typed language :joy:.

I can definitely see that being a problem. For the longest time, I have avoided learning Elixir because of the dynamic typing. I don't see it as much of a problem now since it doesn't cause much reliability issues. I could not see that unless I have already deployed something. Hopefully the new set theoretic typesystem fix that soon.

view this post on Zulip Erik Lundevall-Zara (Sep 16 2024 at 06:49):

Perma said:

Yes. That definitely feels correct to me. I think Elixir community does a lot. But they don't really show it. How ever telling is also not a good strategy as you said. I advocated for Rust for a long while at my work place, it did not go well. I just showed a few things I did with Elixir, and half of our team just started learning Elixir.

Perhaps more story telling is the answer here.

I think that is definitely so, and storytelling in a way that people outside of the Elixir community can relate to. They way you communicate in those cases are different from when to communicate with the people that have already jumped into the ecosystem and community, and that is harder - especially if you have been into the ecosystem and community for a long time.

That is not specific to Elixir and BEAM, but any community/ecosystem.
So that storytelling may be easier for experienced people who are relatively new to Elixir ecosystem.

view this post on Zulip Erik Lundevall-Zara (Sep 16 2024 at 07:32):

Perma said:

I can definitely see that being a problem. For the longest time, I have avoided learning Elixir because of the dynamic typing. I don't see it as much of a problem now since it doesn't cause much reliability issues. I could not see that unless I have already deployed something. Hopefully the new set theoretic typesystem fix that soon.

That is a problem with terms like "dynamic typing" and "functional language". These are loaded terms, and a lot of values and issues attached to them coming from other languages and stories.

As you say, dynamic typing in Elixir does not cause issue in the same way and to the same extent as for example Javascript or Python, since you do not work and design software in the same way, for example the more prevalent use of patterns and pattern matching in Elixir avoids many issues you would have in other languages. It also helps working with immutable data, since the ways problems are solved can be a bit different.
It is similar with Clojure, another dynamically typed language. You do not issues with that to the extent you get it in Javascript, partially due to the same reasons as in Elixir.

But this may only become apparent after you start working with such languages, not before.

The term "functional language" is also something I think sometimes can have a deterring effect, in particular if people associate that with languages like Haskell where people talk about terms like monad, monoids, functors etc. It becomes scary and seems difficult, even if languages like Elixir are quite different beasts.

So IMHO I think it can be better to avoid the term "functional language", depending on the target audience.

view this post on Zulip Jerod Santo (Sep 16 2024 at 18:30):

Brett Cannon said:

it didn't come from a big tech company

This point can't be overstated, imo. It's amazing what it has achieved, all things considered...

view this post on Zulip Perma (Sep 16 2024 at 19:21):

Erik Lundevall-Zara said:

Perma said:

The term "functional language" is also something I think sometimes can have a deterring effect, in particular if people associate that with languages like Haskell where people talk about terms like monad, monoids, functors etc. It becomes scary and seems difficult, even if languages like Elixir are quite different beasts.

So IMHO I think it can be better to avoid the term "functional language", depending on the target audience.

Not to mention the mistaken perception that immutability is wasteful for memory. I was extremely wrong on this point.

view this post on Zulip Perma (Sep 16 2024 at 19:23):

Jerod Santo said:

Brett Cannon said:

it didn't come from a big tech company

This point can't be overstated, imo. It's amazing what it has achieved, all things considered...

Would you think that the country of origin also may have played a role? Most of the mainstream languages that I can think of, are coming from the USA.
May that be a factor here as well?

view this post on Zulip Jerod Santo (Sep 16 2024 at 19:45):

Certainly plays a role, but Ruby did extremely well coming from Japan. That was a different time, though...

view this post on Zulip Perma (Sep 16 2024 at 20:23):

Jerod Santo said:

Certainly plays a role, but Ruby did extremely well coming from Japan. That was a different time, though...

Hmmm. Yeah. But ruby got its popularity because of Ruby on Rails and although DHH is not American, the framework came out of his work with Basecamp which I believe is an American company, and in just a couple of years it was shipped by Apple. Before that ruby existed for 12 years. For perspective JavaScript was released a year later.

Looking at it python is also coming from non-american origins, so I can see your point there. And it is _somewhat_ popular :grinning_face_with_smiling_eyes:

view this post on Zulip Erik Lundevall-Zara (Sep 16 2024 at 21:52):

Perma said:

Would you think that the country of origin also may have played a role? Most of the mainstream languages that I can think of, are coming from the USA.
May that be a factor here as well?

Guido van Rossum (Python) - Netherlands
Bjarne Stroustrup (C++) - Denmark
Anders Hejlsberg (Turbo Pascal, Delphi, C#, Typescript) - Denmark

And DHH is Danish also.

view this post on Zulip Andrew O'Brien (Sep 16 2024 at 23:50):

Perma said:

I would argue that Elixir because of the pattern matching and BEAM offer more to network programming and backend development.

Literally 2 nights ago after deciding for the 4th time that Go just wasn’t for me I remembered Elixir exists and felt so much relief. I’d add the pipe operator to that list.

view this post on Zulip Erik Lundevall-Zara (Sep 17 2024 at 11:13):

Andrew O'Brien said:

Literally 2 nights ago after deciding for the 4th time that Go just wasn’t for me I remembered Elixir exists and felt so much relief. I’d add the pipe operator to that list.

The pipe operator is indeed a key feature, and something I use all the time, if a language supports it.
I recently learned that Google added pipe operator it to their SQL dialect also, GoogleSQL:
https://research.google/pubs/sql-has-problems-we-can-fix-them-pipe-syntax-in-sql/

view this post on Zulip Jerod Santo (Sep 17 2024 at 14:28):

Pipe is also coming to JavaScript soon. Can't be soon enough, if you ask me!

Chris & Nick were making fun of me on a recent JS Party because Elixir ranked below Assembly in the IEEE Spectrum language popularity chart. Pretty funny moment, actually. I think a clip of it will be posting soon...

view this post on Zulip Andrew O'Brien (Sep 17 2024 at 15:40):

If I had a penny for the number of times I've implemented it (or some kind of compose operator) in a language where it wasn't idiomatic and then went on to implement a bunch of higher-order things to the chagrin of my team mates, I'd have... at least 2 cents. (Python and Ruby... by the time I got to TS I learned to suppress my functional urges and instead try to get Ramda or something preexisting into the codebase)

view this post on Zulip Perma (Sep 18 2024 at 12:31):

I am quite impressed by the supervision trees as well.

view this post on Zulip Ron Waldon-Howe (Nov 27 2024 at 21:11):

Elixir is one of the few languages that offers data-race safety, right? Because synchronization between threads only happens via message passing and never by sharing memory?
If government bodies (via procurement restrictions, etc) deprecate and eventually abandon memory unsafe and data-race unsafe languages, surely that makes room for Elixir that very few other languages can fill
Not even Kotlin or Go offer data race safety, and those are relatively young languages


Last updated: Dec 12 2024 at 15:40 UTC