WildYorkies
It seems that the more I read, the more I find Elixir users speaking about all the ways that Elixir is not good for x, y, and z use cases.
Usually these x, y, and z use cases are not good because “Elixir is not fast enough for raw computation” or something of that sort.
In my mind, Elixir seems like more of an investment. Either:
1. The Actor model is the wave of the future in terms of program design and structure, and investing in Elixir would be a very smart move if even to wrap your head around the actor concepts
2. The Actor model is the wave of the present and is merely the best way to structure distributed apps that we currently have
After all, I’ve heard from people that Actors are not necessarily the best in terms of code clarity OR efficiency. CSP or STM could be better in this area even.
Now, I know that someone will say “Erlang isn’t technically an implementation of actors”. That’s fine, but it’s close enough.
The question I’m getting at is are Elixir users/contributors dedicated to the vision of #1 or do they see Elixir as more of #2. I assume that #2 is more likely based upon the way people in this community generally talk.
For example:
- “Elixir is not good for GUI programming, use something else”. It seems to me that Elixir and the messaging passing system would be ideal for GUI programming. Why just write this off as something not worth pursuing?
- “Elixir is not good at number crunching, use something else”. Okay, so why not teach/show people how to use the FFI to call out to number crunching C libraries instead? Why abandon Elixir all together?
You get the picture.
tl;dr - Do you think people are drinking the “Polyglot Programmer” kool-aid a little bit too much rather than being excited about Elixir’s future?
Trending in Discussions
Other Trending Topics
Chat & Discussions>Discussions
Latest on Elixir Forum
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #iex
- #graphql
- #ai
- #genstage
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex











First 10 of 46 Posts
tmbb
Message passing is terribly inefficient for graphics calculations. You can bind Elixir to something else, but implementing the GUI in Elixir sounds ill advised.
No one is saying you have to abandon Elixir. But you have to write your “fast” C library anyway. Combining the result of NIFs with calculations done by Elixir is probably not very smart. You should handle all the math inside the NIF and only return tbe final result, to minimize overhead.
michalmuskala
Elixir could be awesome for GUI programming - we just lack proper tools.
Elixir could be awesome at number crunching - it’s just our VM is not optimised for this.
This are not inherent limitations of Elixir, but rather the result of the current state of the ecosystem.
tmbb
And from what I gather, it will never be, right?
AstonJ
Generally Elixir programmers are fully aware of its strengths, and how they outnumber its weaknesses, hence are not insecure about it
so are happy to be open and frank about where other languages may be ‘stronger’ (whether, as Michał mentions above, because we lack tools or optimisations or whatever else). However I agree that we need to be mindful of how that may come across, especially to newbies …perhaps by highlighting that it is rarely a problem for most apps.
For instance, number crunching is often referred to - but in what context? If image manipulation, then we can just use ImageMagick (or some other library written in something like C) and which is something we commonly do in all sorts of languages (like Ruby, PHP, etc) with wrappers or tools such as Mogrify or Arc. If you need even more performance than ImageMagick, you can use VIPS, which also has an Elixir wrapper.
The other common one is Machine Learning, but now we have Tensorflowex
With regards to native UIs, we now have Scenic
stefanchrobot
Ideal for high-level UIs. Looking forward to Scenic.
WildYorkies
For context, let’s use the example of the newbie that is interested in Elixir and Golang.
Perhaps the Elixir person may indeed recommend that the newbie uses Golang for a specific project. But when you are competing for mindshare, and when Golang inevitably creates an Actor library of their own, that newbie may never give Elixir a second thought.
So in my newbie mind, it comes back to the question about where we’re heading or where efforts are being placed in Elixir in terms of improvements.
marciol
Its worth quote the work of @boydm: 3) ElixirConf 2017 - Elixir Native UI - Boyd Multerer
dimitarvp
I would not be worried about that anytime soon. The Golang folk can’t even agree on making a standard library sorting for 32-bit integers to be built-in and require you to pass a lambda function for that to actually work. Sorry, only 64-bit integers are supported by default!
Just a random example but the point is that the Golang authors and general community look down on the too much batteries included approach. I only wrote like 15 Golang microservices 2 years ago and the consensus almost everywhere to this day is: “why do you need a library, this is very easy to build on your own” (even if that incurs a 2-4 weeks cost). Granted things have improved a bit since then but when you talk to actual people, the mindset seems to be the same.
To create a BEAM-like environment is a huge task and it would go far beyond just a library – it is likely for that to even be a different compile target, say,
x86_64_actorsor something (vsx86_64_smpfor regular multithreading). And it would most likely mean adding a runtime that your Golang executable must carry with it – they are already quite big so not sure if the core team would support increasing that even further.The BEAM VM is not in danger of having a good competition for a while still, be sure of it.
AstonJ
Then we can just quote Joe Armstrong
dimitarvp
I would have agreed if these technologies actually had such a well-written runtime like the BEAM (which AFAIK they don’t). We are not talking only about conceptual purity or clarity here; we have to take into account what do we have to work with. I am not ideally informed but last I checked ~2 years ago, CSP and STM were very fragmented areas and there is not a lot of consensus on which library / framework there is the accepted standard tool.
BEAM is a de-facto standard for actor concurrency model.
From what I’ve seen on this forum and when talking to people outside, many people come to Elixir attracted to the benefits of the BEAM, and these are not going away. So I would say they are pretty committed, me included. However all of us are practical folk and we all come from different languages. Inevitably, if somebody is to outdo the BEAM VM, people would move on to there. If we were only here on hobbyist grounds I don’t think most of us would come to Elixir at all (having in mind how many programmers dislike the Ruby-ish syntax) and would probably still dabble in FORTRAN and occasionally write stuff for a living with Haskell or Common Lisp.
So yes – we are committed. And many of us bet money and personal livelihood on Elixir as well.
You might be conflating “Elixir users are not marketing themselves well enough” with “Elixir users are ready to jump ship whenever”. Programmers are not here to do marketing. There are people who are quite good in the area of composing and presenting case studies. Most of us are here to help people, get help, and get our paid work done.
No.
Elixir users are simply realists and very aware that there is no one language to rule them all. There is no “best” language. We know where Elixir and the BEAM VM shine and where it does not.
As a final point, listen to @michalmuskala – the areas where Elixir is lacking are either ripe for disruption (GUI libraries) or never going to change (the BEAM not being suited for raw computing power).