[erlang-questions] Go vs Erlang for distribution

Gleb Peregud gleber.p@REDACTED
Wed Jun 25 19:13:44 CEST 2014

In my opinion Go is not a right tool for almost any job. It falls
short in many areas:
- it ignores two decades of programming languages design research
- it does very poorly compared to other strongly typed statically
compiled language
- it has inconsistent type system
- it is absurdly verbose
- it's error handling is horrendous
- it is not a simple nor a small language
- it has too many special cases and exceptions in it's semantics
- no polymorphic data types (not to mention higher kinded polymorphism)
- etc.

In my opinion, in almost all uses of Go I heard, I am pretty sure
choosing either Erlang or Haskell would work much better.

With all engineering hours which were invested in Go, world could have
gotten a superb language instead of something so very mediocre.

On Wed, Jun 25, 2014 at 6:20 PM, John Haugeland <stonecypher@REDACTED> wrote:
>> 2. In his recent talk at EUC Garrett Smith showed us an interesting
>> slide[1] where Go appears to be one of the primary alternatives to Erlang,
>> as chosen by _Erlang programmers themselves_. To me this implies that Erlang
>> programmers have found in Go some of the principles Erlang builds upon, the
>> fact I'm going to dispute below.
> The people switching from Erlang to Go weren't Erlang programmers.  They
> were multi-language programmers who heard about Erlang from news sites and
> social media, and were dabbling.  This is like thinking that Ruby is over
> because, for around a year, HN told them to switch to Twisted Python, or Go,
> or now Rust.
> Nope.  People come and people Go.  We had a brief wave of dilettantes from
> the WhatsApp sale.  G'bye.
> Dart isn't going to kill anything either.  It's a bunch of people "ooh" ing
> and "aah" ing at the Google name and some benchmarks that first show Go
> being faster than everything, and then later show Go catching up to and
> passing the things they previously claimed to be faster than.  (And still
> aren't as fast as.)
> If it's a fun language, try it.  We're in no danger though.
>>   [1]: https://pbs.twimg.com/media/Bqr9xJJIgAIUewQ.png:large
>> So now comes the question: what do Erlang programmers think about Go
>> stealing some of the mindshare (and job-share) in the area of building
>> distributed systems? Why would if be a good option? Or not an option at all?
>> Just professional opinions based on your experience with Erlang please.
>> Let me explain what suggests Go might be a viable alternative:
>>   * the slide mentioned above
>>   * Go has been used for teaching distributed systems at the Carnegie
>> Mellon University since 2011. (Go 1 was release in early 2012) See this blog
>> from the teacher:
>> http://da-data.blogspot.co.uk/2013/02/teaching-distributed-systems-in-go.html
>>   * increased activity on projects such as libswarm[2], libchan[3], there
>> are more.
>>   [2]: https://github.com/docker/libswarm
>>   [3]: https://github.com/docker/libchan
>> If you haven't been keeping up with Go, here's a brief overview of its
>> principles:
>>   * imperative, statically typed, garbage collected, lower level than
>> scripting languages, but higher level than C
>>   * builtin concurrency with lightweight processes (called goroutines)
>> which are scheduled cooperatively
>>   * single address space for all goroutines (modifying shared data is
>> discouraged, but possible); hence no isolation
>>   * goroutines have no identity, communication between them is only
>> possible through channels; hence no ability to monitor or link to
>> goroutines, so no supervision
>>   * writing to a channel is always synchronous; it is possible to make a
>> buffered channel, but once the buffer is full, the next goroutine trying to
>> write to it will block
>>   * all errors must be handled explicitly; can be done at goroutine level
>> by setting up a catch-all handler. But crashing in the catch-call handler
>> will crash the goroutine. And crashing a goroutine crashes the whole
>> program. No Erlang-style "let it crash" or "let someone else handle errors"
>> From this short survey Go looks more like the ultimate antagonist to
>> Erlang, or at least its philosophy. What could justify its being chosen as
>> an _alternative_ to Erlang?
>> Sorry if it turned out a bit too long. Ultimately, I'm curious about the
>> reasons Go appears in a huge font on Garrett's slide. Also, finding out why
>> Go has seen a tremendous growth in just 2 years since initial stable release
>> and is already seen as a good fit for tasks Erlang is considered the best
>> tool in these circles might shed some light on which steps Erlang community
>> could take to increase the awareness about its merits (especially in the
>> light of a few recent threads on this list).
>> This ended up rather convoluted, I know. If it was the wrong place to
>> bring up this topic, I apologize. Feel free to ignore this thread in that
>> case.
>> Thanks for reading this far.
>> --
>> Best regards
>> Alexei Sholik
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

More information about the erlang-questions mailing list