This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
@nur Elixir is rather limited by the Erlang VM. So a lot of stuff Clojure can do is pretty impossible in Elixr
Stuff like atoms, agents, refs, vars, transients, transducers, etc.
@nur the binary protocol pattern matching from Erlang is probably one thing that Clojure doesn't do as easily
@nur and generally bit fiddling of that sort. also, Erlang has lower level networking support than the JVM
@johanatan really? You can do some really low level stuff on the JVM.
My friend got zero copy user mode networking working on the JVM, that's pretty low level
@tbaldridge yea, i suppose so. I just know that people say networking is more efficient in Erlang: I think it bypasses the OS networking stack entirely (implemented in the language/runtime)
I think it might have something to do with memory usage too: processes & sockets are lighter weight
@johonatan look at that use case though, large numbers of very low bandwidth connections. Same for the original use-case of Erlang, control over hardware telecom switches
But people have to go and apply that to other things like HTTP servers, databases, backend services, etc. In all those cases Erlang really seems like the a really bad choice.
I'm not even convinced that a properly written JVM app couldn't have done what WhatsApp did. Perhaps it wouldn't fall out-of-the-box as it did with Erlang, but it's not impossible.
But even the self-healing stuff isn't really needed 99% of the time. I've built systems with quite high up-times and all it took was a solid distributed queue, a lot of boxes, and some hammock time.
As I heard a well known programmer once say: "Most people that choose Erlang, the first thing they do is go out and write a distributed queue...why not just start with that?"
Also, I've been burned by Erlang tech a few too many times. My experience with Riak was...really bad (to put it nicely). Compared to my experience with stuff like Cassandra. And this was on different projects spread over a few years. Maybe that's just the way Riak was written...maybe it's Erlang. I don't know, either way it left a really bad taste in my mouth. And that was backed up by my personal experiences with Erlang.
So yeah, I'll look to Erlang next time I need to build a telecom switch, with "nine nines" of uptime. Otherwise I'll stick with something faster and less restrictive.