Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

if you want true concurrency, why not use goroutines? It provides single binary deployment and static types?


I am a Go dev, too. I consider Go my main language. The BEAM has a very, very similar architecture to the M:N scheduler in Go. Goroutines are not dissimilar to BEAM processes. You can similarly run thousands of processes on the BEAM. But Go does not have a real Phoenix equivalent and there are reasons to use Elixir and BEAM, especially on the web side, including some of what I already mentioned above.


Elixir is very ergonomic when it comes to concurrency, e.g. parallel-map example:

    1..10
    |> Task.async_stream(fn x -> x*2 end, max_concurrency: 2, timeout: 7000, on_timeout: :kill_task)
    |> Enum.to_list()
Equivalent Go code would be very long and very ugly.

Golang has its positives but you also lose a lot. Whole ecosystem is not comparable, like "debug live production cluster" is one-command away for Elixir vs "fuck you" for Golang




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: