Hacker News new | ask | show | jobs
by hajile 2338 days ago
Rust: much lower-level systems language which will take quite a bit more development time.

Go: Go's CMT implementation is fundamentally broken (you can't just use go channels without mutexes for complex work unless you want your application to have bugs). Elixir and Erlang Actors have much better guarantees.

Java: BEAM is slower than the JVM, but much more stable. Native actors are a much better experience than Akka.

Python: Django finally added initial support for async development, but library support is a long ways off (and the GIL is its own issue). BEAM is about an order of magnitude faster than Cpython (though probably similar performance with pypy). If you prefer Ruby syntax over Python, there is no contest here.

My big question is less Why BEAM? and more Why Elixir?

I prefer the native Erlang Syntax, LFE/Joxa (lisps), or alpaca (ML family with static types) over Ruby-ish syntax.

3 comments

I'd not written any Ruby before touching Elixir (and still don't, barring tools like Dependabot and Vagrant), but far and away prefer Elixir's syntax to Erlang.

I write scraps of Erlang from time to time, but hate the idiosyncrasies such as the rules behind commas and full stops, and variable names starting with capitals. There are so many other weird quirks too, like how strings are handled.

Good comment covering the languages.

I came from Python. For me Elixir was much more approachable as a first step into a functional language. Syntax, documentation, getting started/onboarding. I believe there are efforts under way to make Erlang docs a bit easier to approach.

And then Phoenix with projects like Presence really built my excitement for the language. Had some colleague that was thrilled by Ecto changesets.

So a combination of ergonomics, easily accessible to new people and strong hype-marketing brought me in I guess. And I enjoyed it and am happy with the results it gives.

Even if you prefer the Erlang syntax, you might choose Elixir for the libraries. E.g., as far as I know, Phoenix isn't available from "plain" Erlang.