DEV Community

wolfiton
wolfiton

Posted on

What is your opinion on Elixir language, why don't more developers use it?

What is your opinion on elixir language, why don't more developers use it?
why I am asking this
https://www.youtube.com/watch?v=N4Duii6Yog0

Thanks in advance for all the participants to this discussion

Top comments (42)

Collapse
 
mitchartemis profile image
Mitch Stanley

I absolutely love Elixir. It was my first introduction into the world of functional programming and now I miss pipes when I use other languages.

  • Good syntax (just my opinion)
  • The API is pretty stable now and I believe the core language is pretty much complete. Because of, upgrading is fairly easy.
  • Community is friendly and inclusive.
  • Scales well and a great fit for real time web.
  • The main ecosystem (Phoenix, Ecto, etc) are excellent.
  • Great macros support.

The main downsides for me are:

  • There aren't as many third party libraries compared to PHP/Ruby, so development tends to take longer.
  • Deployment is better than before, but not as simple as PHP.
  • No static types.

Currently I'm running it in production on one site (Snipline which uses Phoenix as the backend API) but I have a bunch of side projects that I use it with.

I'll also give a shout out to alchemist.camp, Elixir for Programmers and all the pragprog books for anyone interested in learning Elixir - you won't regret it!

Collapse
 
wolfiton profile image
wolfiton • Edited

Not impressed by praprog books when I have to deal with all the errata(mistakes that make the code not work) instead of learning. Even though they tried to cover a lot, the errors just break the experience.

The rest of the sites I agree.

Also, absinthe looks very powerful and clean so far from what I experienced.

Collapse
 
sb8244 profile image
Stephen Bussey

I'm not sure about the other PragProg books, but having just written Real-Time Phoenix, I'm confident in the accuracy of the information.

In general, I've found them to be high quality. If the books are dated because of library changes, that just comes with the territory.

Thread Thread
 
wolfiton profile image
wolfiton • Edited

I am not referring to your book @stephenbussey, I am referring to programming phoenix 1.4 errata and also to the way The Pragmatic Programmer, in general point of view on learning.

As someone new to the language, the first step is to share code and create your own style but for that you need a template, so restricting what you learn from the books makes this impossible.

Humans are not: copy and paste machines.

You can only use the code in your own projects but can't blog about it or create courses with it. This really sounds odd and doesn't help anyone that really wants to learn.

When you write something you also gain a better understanding of what you learn, it is the natural way to develop your skills.

This is my honest opinion.

I also respect the authors from the Elixir community and consider that they have very useful knowledge to share, but this limitation really is making it hard to do something with that knowledge.

Collapse
 
mitchartemis profile image
Mitch Stanley

Not impressed by praprog books when I have to deal with all the errata(mistakes that make the code not work) instead of learning. Even though they tried to cover a lot, the errors just break the experience.

Unfortunately I find this to be a downside of programming books in general, not specific to pragprog. Many authors don't update their books at all making language updates a real pain to work through. Although many pragprog books are outdated now, from what I've seen most of the Elixir ones are relatively up to date.

Also, absinthe looks very powerful and clean so far from what I experienced.

I've not had the pleasure of trying it yet, but it does look good. Nerves is another great looking library if you're interested in embedded software.

Thread Thread
 
wolfiton profile image
wolfiton

Elixir has a large ecosystem but unfortunately, it lacks documentation and a lot of up to date tutorials plus libraries or guides on certain things(ex: payment gateway options are limited)

Thread Thread
 
oshanwisumperuma profile image
Oshan Wisumperuma
Thread Thread
 
wolfiton profile image
wolfiton • Edited

Thanks @oshanwisumperuma, unfortunately, it has no documentation for absinthe.

If you look at rails and python they have a lot of options.

Also, a library becomes valid once it has documentation and examples, that is my opinion.

Collapse
 
cescquintero profile image
Francisco Quintero 🇨🇴

I'm learning Elixir and already love documentation is easily generated and even tests can be run out of docs!

Collapse
 
mindplay profile image
Rasmus Schultz

Main reason probably is it's functional. More developers are opening up to that in recent years, I think - as an increasing number of people realize that many of the patterns and practices that make mainstream languages work well at scale, in effect, leverage the functional features of those languages, and patterns that avoid or work around issues not found in functional languages. But there's a long way to go before any functional languages really goes mainstream, I think.

I think one reason developers don't jump all over this particular language is the syntax - it doesn't look like modern, mainstream languages and it's a bit heavy on both punctuation and keywords.

Another reason I'm not personally interested in this language is the lack of static types. For example, Elm is more interesting to me, providing a type system that is so strong that run-time errors don't actually exist. That's a significant quality that sets it apart from the mainstream languages.Folks can already do functional programming in most mainstream languages, so a purely functional language needs to do something new or different to motivate them to try it.

Have a look at Grain - a functional language with a clean, modern syntax that might feel more familiar to people coming from mainstream languages like JS or C#. It's very new, but promising, and has that Elm-style, run-time error-free strictness that I personally find very enticing. 🙂

Collapse
 
kasvith profile image
Kasun Vithanage

agree with this. I would love elixir if it was a typed language, its dead easy to do a mistake even when you changing the state of a GenServer and its not super easy to spot them without going line by line

Collapse
 
leob profile image
leob

Chicken-and-egg problem? Not many jobs, so not many people learn it, so companies don't use it because there aren't many devs who know it, so not many jobs. And (I think) the use cases where Elixir really shines are probably somewhat niche.

Collapse
 
assertnotnull profile image
Patrice Gauthier • Edited

Some companies are using it for various reasons. It can even run on IoT devices with Nerves. Really what is missing is people talking about it, to make projects and tell about it on blogs. It needs popular bloggers to talk about it.

Collapse
 
wolfiton profile image
wolfiton

I think it needs more documentation and implication and releasing full examples of where it shines on youtube.

It could become the next big thing if everybody would share more.

Collapse
 
leob profile image
leob

Bigger community, more Q&A on Stackoverflow, absolutely ... and a clear trend in the market from OO toward FP would help (which isn't there, yet).

Collapse
 
nmuta profile image
Nmuta Jones

Coming from a Ruby and Rails background, Elixir , in that community, has been considered the next best / hot thing for a while. I taught myself some basic Elixir and tinkered around with the Phoenix framework ( which uses Elixir ) and went to a few Elixir meetups in Denver.

The market niche for Elixir is that if you get really good at it, you could be able to help some teams transition from Rails onto an Elixir based stack for their back ends. This promise, however, applies only to a very small segment of the market. Many Rails shops have decided to just keep doing Rails.

I found working with Elixir to be pure joy. Not necessary as intuitive as Ruby. You certainly have to be a functional programming purist to fully appreciate the language; things that would be achieved with a simple loop in an OOP language require a totally different way of thinking.

I too LOVE the pipes. It feels elegant and clear. The main thing with Elixir for me was that it was going to force me deep into a niche that I wasn't sure I wanted to invest THAT much time into. It will never, IMO, be widely used in the dev world due to how different it is to the standard array of OOP languages. Therein lies the appeal for some people.

Phoenix and Ecto ..... I found them to be nice but nowhere near as polished and smooth of an experience as the Ruby on Rails stack. Lots of things you have to do manually that are very quick and easy with Rails.

I will always keep it in the back of my mind as something to come back to if the time comes.

Collapse
 
bjorngrunde profile image
Björn Grunde

As an old Ruby dev myself, I wanna say you are on point. But with the Phoenix framework and rails, I disagree a bit. They use two very different approaches, were Rails contains a lot more "magic" and to figure out what's actually going on could take some time.

Phoenix is very explicit, with very little magic, as intended, to make it more clear for the developers. The upside is a better understanding on what's going on, the downside is as you say, a little bit more work for the dev.

Collapse
 
wolfiton profile image
wolfiton

Interesting view, thanks for sharing how others feel about it and why it hasn't made it's mark yet.

Collapse
 
leonimella profile image
Leoni Mella • Edited

I worked with Python, PHP, JavaScript and some others languages (nothing to edgy, just "normal" applications) and I find Elixir one of the best languages to use on daily bases.

The syntax is so darn clean and the features of the language help so much to reduce code complexity and improve code readability that is insane!

I really miss some of theses functionalities, like pipelines, withs and mostly pattern matching, when working with other languages.

Maybe the lack of use is because Elixir is kind a recent language (it's out there since 2012) compared to others and is quite different and challenging to learn.

And, as a Brazilian 🇧🇷, I have to mention that is pretty cool to see such a amazing language be created by a compatriot, there is not a lot of things to be proud of in here...

Any way, I wrote this post: Learning Elixir with PHP help my focus was to make the transition from OOP languages to functional programming a bit easier.

Hope you like!

Collapse
 
layzee profile image
Lars Gyrup Brink Nielsen • Edited

It's one of the most interesting programming languages. The BEAM, OTP and Elixir's abstractions are out of this world! Distributed computing, hot updates with state transfer, messaging, pipelines, links, supervisors, pattern matching, everything is mindblowing! The obvious downside is that it's hard to recruit and onboard developers. Like with every other programming language, simply using Elixir does not result in excellent systems.

What I dislike the most is actually the Ruby-like syntax. I would prefer the original Erlang syntax if it was a little better.

Collapse
 
daradedesign profile image
Dallas DeGrendel

Nothing. It's great.

But, it's HD-DVD or BetaMax.

JS preprocessors were a dropping like rain drops when it started making news.

Collapse
 
wolfiton profile image
wolfiton

We can make it to be adopted if we(developers) release more and talk more about it.

Collapse
 
daradedesign profile image
Dallas DeGrendel

It's not a big enough deal for me. Devs don't need want to change unless the benefits are many and make a real difference. I just don't really use it too much. Any time savee, in my case, would be eclipsed by the time spent rallying for it.

Thread Thread
 
wolfiton profile image
wolfiton

You are aware that writing and creating tutorials will make you a better developer and progress more quickly?

Thread Thread
 
daradedesign profile image
Dallas DeGrendel

100% agree. It would be like me writing a 'How to speak Spanish" tutorial. I took a few semesters in college, but I don't use it enough in my day to day life to retain it.

I'm out of that circle. That being said, it devalues my opinion on this particular subject.

I think you need to convince some of those guys to switch if you are looking for evangelists.

Thread Thread
 
wolfiton profile image
wolfiton

I am not looking for evangelists. I am looking for people that understand what elixir is really bringing to the table and can compare it with what they actually use.

Personally I don't care what language, I use as long as it gets the job done well:

speed
security
low costs for hosting
maintenance
so on...

Thread Thread
 
rafaelfesi profile image
Rafael Silveira

And what do you think of the crystal language?

Thread Thread
 
wolfiton profile image
wolfiton

I haven't tried it yet, but I heard that it is C for the web.

If you like to share more why you like it and what advantages it has over rust and elixir.. so on.

Then we can create a thread and discuss about it.

Thanks @rafaelfSilveira for the question

Collapse
 
pavelloz profile image
Paweł Kowalski

You think JS preprocessors and Elixir are competing for the same user? :D

Collapse
 
daradedesign profile image
Dallas DeGrendel

No. I know Mix does a lot of different functions. The most important point I was trying to make is that I don't think about them, which is why I'm not joining the ranks.

Collapse
 
wolfiton profile image
wolfiton

Some readers of this thread may want to see some action(show me the code) no just words, so it happens I have a series on Elixir, Phoenix and Absinthe(Graphql) here

dev.to/wolfiton/absinthe-journey-w...

Collapse
 
jpantunes profile image
JP Antunes • Edited

I really like how it looks and had fun playing around with toy examples. However, not many companies are looking for seasoned professionals with only minimal experience because it's not good value for money, all the worse when it's a relatively niche piece of tech imho.

Collapse
 
wolfiton profile image
wolfiton

I think that companies like to stay in the comfort zone and not, adventure(try) in new Stacks(technology).

Maybe that is why this cycle has been created.

Collapse
 
strzibny profile image
Josef Strzibny

One year "in" I like it so far! What I like the most is the fact that Elixir/Phoenix simply "fits" the modern soft-real time web. I like the preemptiveness and what it means to handling requests.

As for writing Elixir, some things can certainly be easier in Ruby, some are the opposites. Just trade-offs. As for Phoenix vs Rails, I really like its design, but I prefer Rails batteries-included philosophy.

I already wrote a bunch of articles on Elixir if anybody is interested: nts.strzibny.name/tag/elixir/.

Collapse
 
wolfiton profile image
wolfiton

Nice articles, thanks for sharing @josefstrzibny

Also, you might be interested in my absinthe series here absinthe series

Collapse
 
bjorngrunde profile image
Björn Grunde

I think the functional approach is a bit scary for many developers, and to be honest, for what most developers build on a daily basis (small to medium-sized bloggish/cms sites) there is no reason for them to abandon their favorite stack.

I was thrown into Elixir because of demand, we had requirements that fit the language and it's stack perfectly, speed, distributed and soft real-time solutions.

Learning Elixir was a bi**ch for me. And I think a part of the problem lies in here. You don't learn Elixir as much as you unlearn or unwire your brain from everything you already know. It is so different.

But once you know your way around the language, you never wanna build stuff with other technologies. It's brilliant and thanks to Elixir I'm also learning Rust, Elixir and Rust work very well together.

I also think Elixir will have a bright future, but it will probably always be a bit niche, where certain industries will adopt the language, while it will be very Alien for the average web developer.

Collapse
 
developarvin profile image
Arthur Vincent Simon

Why don't more developers use it?

  • It is fairly a new language
  • It uses functional programming which the majority of programmers don't use. Most people learned the object-oriented model
  • Not that much jobs as far as I can see. Needs to get to critical mass.
Collapse
 
wolfiton profile image
wolfiton

Thanks for sharing your opinion @arthurvincentsimon

Collapse
 
fpolster profile image
Florian Polster

For the same reason that for example Nim isn't more popular. Scala and Rust, although they have reached a certain degree of popularity, are two more languages which according to their awesomeness should be way more popular.

  • popularity among devs
  • jobs
  • ecosystem / libraries

That's the three-way chicken and egg problem.

Collapse
 
wolfiton profile image
wolfiton

Thanks for sharing @pofi your opinion and view of what it needs to change so that other languages with potential, can enter the market.

Collapse
 
moreurgentjest profile image
more-urgent-jest • Edited

it seems very interesting, but i haven't really even scratched the surface.

programming elixir 1.6 seems like a pretty good book so far (about half way through).

learning it isn't any harder than learning oop after learning imperative programming.

not sure what exactly i would use it for ... pretty much anything i guess : )

the concurrency is probably the most promising part?

how would something like small talk fit into that MIT v New Jersey paradigm?

Collapse
 
yoelblum profile image
Yoel

The competition was never fiercer. There are so many languages to choose from in 2021 it makes sense Elixir is having a hard time getting adoption.
Let me return the question - why should devs choose Elixir over so many great options? .net, java, php, golang, ruby, node, kotlin and on and on...
A new language that wants to disrupt the backend/web market has a harder time than ever.