I think Erlang is great, and have been a big fan for a long time, but as you say, it has its limitations and it is nice to have a quite different alternative with Go for concurrent systems.
> Erlang, for example, is admitted as being a poor choice for lots of string manipulation because of the way strings are implemented in the language. I believe that same guide mentions that it may not be the best choice for heavy number crunching.
This are two areas where Go has a big advantage over Erlang while providing an equivalent (although slightly different and more CSP-ish) concurrency model.
> I also want to mention that in my experience, Erlang applications are pure hell to deploy for people who don't have years of OTP deployment under their belts. So much of having a manageable Erlang app depends on the developers being well versed in a lot of subtle, and very easy to get wrong conventions.
Another big contrasts with Go, where you just build a static binary, copy it to any target systems, and run it.
I disagree with Erlang "deployment hell".
The full OTP deployment process is too heavy for anything non Telecom or Embedded. But for regular Internet applications, you just creating self-containing tar.gz file with OTP release using "rebar generate".
Then you upgrade your cluster in round-robin manner.
There are some open-source tools to automate this process.
But it's easy to use any Fabric-style tool or just your own bash/ssh scripts.
> Erlang, for example, is admitted as being a poor choice for lots of string manipulation because of the way strings are implemented in the language. I believe that same guide mentions that it may not be the best choice for heavy number crunching.
This are two areas where Go has a big advantage over Erlang while providing an equivalent (although slightly different and more CSP-ish) concurrency model.
> I also want to mention that in my experience, Erlang applications are pure hell to deploy for people who don't have years of OTP deployment under their belts. So much of having a manageable Erlang app depends on the developers being well versed in a lot of subtle, and very easy to get wrong conventions.
Another big contrasts with Go, where you just build a static binary, copy it to any target systems, and run it.