Some thoughts on Go and Erlang
I write it fully acknowledging that programming language flamewars are pointless, but this article just shows that you don't even have to try hard to create a biased comparison.<p>Here's the essential difference between Go and Erlang: Go gets most of the things right, Erlang gets way too much wrong.<p>So what does Go gets right but Erlang doesn't:<p>* Go is fast. Erlang isn't<p>* Go has a non-surprising, mainstream syntax. You can pick it up in hours. Erlang - not so much.<p>* Go has a great, consistent, modern, bug-free standard library. Erlang - not so much.<p>* Go is good at strings. Erlang - not so much.<p>* Go has the obvious data structures: structs and hash tables. Erlang - no.<p>* Go is a general purpose language. Erlang was designed for a specific notion of fault tolerance - one that isn't actually needed or useful for 90% of the software but every program has to pay the costs<p>* Go has shared memory. Yes, that's a feature. It allows things to go fast. Purity of not sharing state between threads sounds good in theory until you need concurrency and get bitten by the cost of awkwardness of having to copy values between concurrent processes<p>So sure, if you ignore all the major faults of Erlang (<a href="http://damienkatz.net/2008/03/what_sucks_abou.html" rel="nofollow">http://damienkatz.net/2008/03/what_sucks_abou.html</a>, <a href="http://www.unlimitednovelty.com/2011/07/trouble-with-erlang-or-erlang-is-ghetto.html" rel="nofollow">http://www.unlimitednovelty.com/2011/07/trouble-with-erlang-...</a>, <a href="http://ferd.ca/an-open-letter-to-the-erlang-beginner-or-onlooker.html" rel="nofollow">http://ferd.ca/an-open-letter-to-the-erlang-beginner-or-onlo...</a>, <a href="http://sacharya.com/tag/erlang-sucks/" rel="nofollow">http://sacharya.com/tag/erlang-sucks/</a>) it compares very favorably to Go.<p>You just have to overlook ugly syntax, lack of string type, lack of structs, lack of hash tables, slow execution time. Other than those fundamental things, Erlang is great.