6 ms·
>> I feel like people are really overstating the momentum Elixir has I don't think so at all. I see elixir gaining a groundswell of momentum very much like the
by josai 11y ago
>> I feel like people are really overstating the momentum Elixir has
I don't think so at all. I see elixir gaining a groundswell of momentum very much like the early days of rails and node. Of course it's the beginning, but I see a whole different crowd of people interested in elixir - the "gets things done" crowd rather than the "this is cool/elite" crowd I see playing with factor or haskell (sorry, but it's true).
Elixir does not compete with Python, Ruby or JS - it solves a whole different problem, which is the "massively multiplayer" requirement the apps world is obviously moving towards. No-one I know likes Go or Scala. Clojure is a genuine competitor, you are right about that, but it lacks the ruby community spirit showing itself in elixir. Say what you want about ruby but its community moves mountains.
It's early, yes, but I know a lot of good rails devs who are embracing elixir and they're all "smart and gets things done" types. A lot of torque is building behind taking elixir mainstream, and there's excitement in the air. Time will tell, but it's a bet I'm increasingly ready to make.
- lighthawk 11y ago> Elixir does not compete with ... Ruby ... I think it does, actually, though not intentionally. José Valim was a Rails core dev and as far I can tell he took on Elixir to address concerns with performance. In http://elixir-lang.org/blog/2013/08/08/elixir-design-goals/ http://elixir-lang.org/blog/2013/08/08/elixir-design-goals/ he says, "Given my previous background in Ruby, it is natural that some of the constructs added were borrowed from Ruby. However, those additions were a by-product, never a language goal." He follows this with a comparison of Ruby code to Elixir. I'm heavy into Ruby but looking forward to Elixir gaining strength.
- josai 11y ago> I think it does, actually You may be right, but what I meant is that every rubyist i know looking into elixir is after massively persistent connections. Websocket, basically, to thousands or more clients. They are leaving ruby because it simply cannot offer that (I don't care what DHH says. No-one big is doing EM WS in production, nor should they). Phoenix has a steeper learning curve than rails but is addressing the new paradigm of persistent duplex connections. Rails remains unapologetically a request-based framework, ActionCable notwithstanding. That is fine. 99% of today's apps don't that. Right tool for the job! But to me, the future is very clear. I'm heavy into ruby too, but speaking pragmatically, it and elixir are playing different games in different ballparks. That's why I said they don't compete.
- sjtgraham 11y ago> No-one big is doing EM WS in production Are you kidding me? Look at Pusher, which is literally EM sitting behind Route 53
- lectrick 11y agoThere are many, many other selling points to Elixir/Erlang over Ruby, if you already like Ruby (and its syntax, some of its conventions, etc.) 1) Immutable data throughout- prevents certain classes of bugs 2) 10x faster- obvious benefit 3) Actual macros- the ultimate metaprogramming: http://elixir-lang.org/getting-started/meta/macros.html http://elixir-lang.org/getting-started/meta/macros.html 4) Functional paradigm- encourages decoupling of code by forcing state to be passed around explicitly as arguments, this also aids unit testing, it also reduces bugs further 5) Instant "forking" without having to worry about thread safety, and good semantics around it 6) Potential 99.999999999% uptime reliability (thanks to Erlang's OTP) 7) Hot-swappable code upgrades with no downtime 8) Pattern-matching reduces the amount of "switch logic" code greatly. In Ruby code I often saw complex logic branches with no test coverage- it's easier to cover those in Elixir when every "branch" is a different pattern-matched function 9) A bunch of neato things such as build-your-own-sigils, which felt even more "Ruby-like" than Ruby's own capability (or lack thereof) here: http://elixir-lang.org/getting-started/sigils.html http://elixir-lang.org/getting-started/sigils.html 10) Trendy Actor model built-in from the get-go ;)
- lighthawk 11y ago
- themartorana 11y agoHi. I'm Dave. I really like Go, and I write and maintain a real-time and turn-based multiplayer game backend. I liked Elixir a lot too, but when trying to pick the right tool, the learning required around Elixir/Erlang, the VM, and OTP didn't make sense when writing a production system that needs to handle 1000 req/s or more with a small staff. Go handles what we do fantastically. Now you know someone. :)
- rdtsc 11y agoActually OTP makes even more sense though. WhatsApp processes billions of messages per day and they only have 10 or so engineers working on the backend. At any large scale what becomes more important is fault tolerance. Even though Go has goroutines and sane and modern concurrent IO handling, goroutines still share memory. So then even a super fast 1M req/s system is no good if it is down 50% of the time because it crashed.
- perishabledave 11y agoIf your interested, Jamie Winsor of Undead Labs did a talk at Erlang Factory on how they use Elixir for their backend: https://www.youtube.com/watch?v=_i6n-eWiVn4 https://www.youtube.com/watch?v=_i6n-eWiVn4 Also theres a good writeup on how Erlang was used for some of Call of Duty's infrastructure. http://www.erlang-factory.com/upload/presentations/395/ErlangandFirst-PersonShooters.pdf http://www.erlang-factory.com/upload/presentations/395/Erlan... Sounds like you're already committed to Go, but just wanted to make the case. Concurrent, fault-tolerant, highly scalable systems is Elixir's sweet spot. [edit] One more, great talk from the Elixir Conf on how Martin Shurrer used Erlang to build a multiplayer card game. This one is particularly good because it deals with scaling, game states, and is very practical: http://confreaks.tv/videos/elixirconf2014-otp-in-production-the-nitty-gritty-details-of-game-servers http://confreaks.tv/videos/elixirconf2014-otp-in-production-...
- themartorana 11y agoTo be clear, I really liked both Elixir and Erlang. It's just that purely functional programming, the Erlang VM, OTP, and so on all required learning, and so introduced so many possible points of failure. Go was familiar from the jump, and easy to reason around coming from primarily Objective-C, C, Python, and C#. Considering timeline, it wouldn't have made sense to be so behind the learning curve. With more time or breathing room, I think Erlang would be a space I'd jump into with both feet. Edit: I know Martin through common colleagues and have worked with him in Austria. He's a great dev, and that was a good watch. Thanks for the link.