TL; DR of Some Thoughts on Go and Erlang

Posted by CodingCat on February 13, 2015

Recently, I read this blog article: http://blog.erlware.org/some-thoughts-on-go-and-erlang/

It explains some thoughts of the author on Go and Erlang, especially the fault-tolerance mechanism. Here is the tl;dr of this article:

Pros of Go:

  1. Client programming

  2. Complication and building tools

Cons of Go:

  1. Still falls into shared state architecture, thus bring every headache to the programmer when they code within such distributed model, (synchronization, etc.)

  2. Scheduling: in Go, the routines check the stack for every function call, and get preempted when it is marked as failed for its “too-long” running time. Still lag behind Erlang’s scheduler

  3. GC: Mark and Sweep Collection (http://www.brpreiss.com/books/opus5/html/page424.html) is the source of degraded performance

  4. Error Handling : Go does not provide anything like process monitor (like Akka’s remote watch) or auto restart ability for fault-tolerance

  5. No REPL for both programming, and remote command execution

  6. no hot code replacement (due to the fact that Go provides static linking)

  7. “Go’s channels, unidentifiable goroutines and lack of patterns to separate goroutines into separate modules leads to much harder code to reason about.”