<div dir="ltr"><br><blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir="ltr"><div>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.<br></div></div></blockquote><div><br>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.<br><br>Nope.  People come and people Go.  We had a brief wave of dilettantes from the WhatsApp sale.  G'bye.<br><br>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.)<br><br>If it's a fun language, try it.  We're in no danger though.<br><br><br><br> </div><blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir="ltr">  [1]: <a href="https://pbs.twimg.com/media/Bqr9xJJIgAIUewQ.png:large" target="_blank" onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FBqr9xJJIgAIUewQ.png%3Alarge\46sa\75D\46sntz\0751\46usg\75AFQjCNEzfM0XSPrrPu26bIQsH7SmgJj2Jw';return true;" onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FBqr9xJJIgAIUewQ.png%3Alarge\46sa\75D\46sntz\0751\46usg\75AFQjCNEzfM0XSPrrPu26bIQsH7SmgJj2Jw';return true;">https://pbs.twimg.com/media/<wbr>Bqr9xJJIgAIUewQ.png:large</a><br><div><div><br></div><div>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.<br>

<br>Let me explain what suggests Go might be a viable alternative:<br><br></div><div>  * the slide mentioned above<br></div><div>  * 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: <a href="http://da-data.blogspot.co.uk/2013/02/teaching-distributed-systems-in-go.html" target="_blank" onmousedown="this.href='http://da-data.blogspot.co.uk/2013/02/teaching-distributed-systems-in-go.html';return true;" onclick="this.href='http://da-data.blogspot.co.uk/2013/02/teaching-distributed-systems-in-go.html';return true;">http://da-data.blogspot.co.uk/<wbr>2013/02/teaching-distributed-<wbr>systems-in-go.html</a><br>

</div><div>  * increased activity on projects such as libswarm[2], libchan[3], there are more.<br><br>  [2]: <a href="https://github.com/docker/libswarm" target="_blank" onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fdocker%2Flibswarm\46sa\75D\46sntz\0751\46usg\75AFQjCNGABff6B2zk5FIUcqUiTiDSvpO6FA';return true;" onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fdocker%2Flibswarm\46sa\75D\46sntz\0751\46usg\75AFQjCNGABff6B2zk5FIUcqUiTiDSvpO6FA';return true;">https://github.com/docker/<wbr>libswarm</a><br>  [3]: <a href="https://github.com/docker/libchan" target="_blank" onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fdocker%2Flibchan\46sa\75D\46sntz\0751\46usg\75AFQjCNHcRR939evWrOFKWnnIwvACXIC33Q';return true;" onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fdocker%2Flibchan\46sa\75D\46sntz\0751\46usg\75AFQjCNHcRR939evWrOFKWnnIwvACXIC33Q';return true;">https://github.com/docker/<wbr>libchan</a><br>

<br></div><div>If you haven't been keeping up with Go, here's a brief overview of its principles:<br><br></div><div>  * imperative, statically typed, garbage collected, lower level than scripting languages, but higher level than C<br>

  * builtin concurrency with lightweight processes (called goroutines) which are scheduled cooperatively<br></div><div>  * single address space for all goroutines (modifying shared data is discouraged, but possible); hence no isolation<br>

</div><div>  * goroutines have no identity, communication between them is only possible through channels; hence no ability to monitor or link to goroutines, so no supervision<br></div><div>  * 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<br>

</div><div>  * 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"<br>

</div><div><br></div><div>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?<br></div><div><br></div>

<div>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).<br>

<br></div><div>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.<br><br></div><div>Thanks for reading this far.<br><br></div>

<div><div><div><div><div>-- <br>Best regards<br>Alexei Sholik
</div></div></div></div></div></div></div>
</blockquote></div>