<br><br><div class="gmail_quote">On Thu, Mar 28, 2013 at 12:26 AM, giovanni_re <span dir="ltr"><<a href="mailto:john_re@fastmail.us" target="_blank">john_re@fastmail.us</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Do you have something valuable to add to these discussions?<br>
<br></blockquote><div><br></div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"> No - I want to provoke discussion, not take part in it.</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">
<br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"> I'll sit back and watch.</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">
<br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">I want to start publicizing Erlang - we've had the technical  discussions</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"> before.</span></div>
<div><br></div><div>You guys - you who read this list - go tweet and blog - join the<span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div>
<div>fun.</div><div><br></div><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px">I came back from the San Francisco Erlang Factory fired with</span></div>
<div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px">enthusiasm and immediately started a new blog at</span></div><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px"><br>
</span></div><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px">    <a href="http://joearms.github.com">http://joearms.github.com</a></span></div>
<div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px">The idea was to bang the drum a bit and explain what we're doing</span></div>
<div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px">from my point of view.</span></div><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px"><br>
</span></div><div><span style="background-color:rgb(255,255,255);color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px"> I'm now trying to explain what we do in simple terms so that more people</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"> can understand what we're doing.</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">
<br></div><div>My second post seemed to attract some attention</div><div>with 160 comments on:</div><div><br></div><div><a href="https://news.ycombinator.com/item?id=5451202">https://news.ycombinator.com/item?id=5451202</a></div>
<div><br></div><div>I'm saying things that a lot of people disagree with, but also</div><div>a lot of people agree with - so a lively discussion followed.</div><div><br></div><div>So if you love Erlang or hate it go join the fun at ycombinator.</div>
<div>Saying Erlang is great here is preaching to the converted,</div><div>time to broaden the discussion and take the argument to the</div><div>hurly burly of the marketplace.</div><div><br></div><div>I know I'm an opinionated bastard who makes loads of mistakes,</div>
<div>but perhaps we are not totally barking up the wrong tree.</div><div><br></div><div>I think it's time to throw a few stones into the pond and see where the ripples go.</div><div><br></div><div>In the next few weeks I'll be blogging my impressions from the Erlang factory.</div>
<div><br></div><div>I feel like Marco Polo telling tales from far off exotic places.</div><div><br></div><div>It's amazing - did you know, they don't have snow in San Francisco</div><div>what an exotic place.</div>
<div><br></div><div>/Joe</div><div> </div><div> </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
---<br>
<br>
Joe Armstrong: Solving the wrong problem (<a href="http://github.com" target="_blank">github.com</a>)<br>
111 points by geoffhill 4 hours ago | 47 comments<br>
 <a href="https://news.ycombinator.com/item?id=5451202" target="_blank">https://news.ycombinator.com/item?id=5451202</a><br>
<br>
 konstruktor 2 hours ago | link > At this point in time, sequential<br>
 programs started getting slower, year on year, and parallel programs<br>
 started getting faster.<br>
<br>
The first part of this statement is plain wrong. Single thread<br>
performance has improved a lot due to better CPU architecture. Look at<br>
<a href="http://www.cpubenchmark.net/singleThread.html" target="_blank">http://www.cpubenchmark.net/singleThread.html</a> and compare CPUs with the<br>
same clock rate, where a 2.5 GHz. An April 2012 Intel Core i7-3770T<br>
scores 1971 points while a July 2008 Intel Core2 Duo T9400 scores 1005<br>
points. This is almost double the score in less than four years. Of<br>
course, one factor is the larger cache that the quad core has, but this<br>
refutes Armstrong's point that the multicore age is bad for single<br>
thread performance even more.<br>
<br>
For exposure to a more balanced point of view, I would highly recommend<br>
Martin Thompson's blog <a href="http://mechanical-sympathy.blogspot.com" target="_blank">mechanical-sympathy.blogspot.com</a>. It is a good a<br>
starting point on how far single threaded programs can be pushed and<br>
where multi-threading can even be detrimental.<br>
<br>
Also, I think that fault tolerance is where Erlang really shines. More<br>
than a decade after OTP, projects like Akka and Hysterix are finally<br>
venturing in the right direction.<br>
<br>
<br>
===<br>
<br>
 Concurrency Models: Go vs Erlang (<a href="http://joneisen.me" target="_blank">joneisen.me</a>)<br>
46 points by geoka9 2 hours ago | 13 comments<br>
 <a href="https://news.ycombinator.com/item?id=5451651" target="_blank">https://news.ycombinator.com/item?id=5451651</a><br>
<br>
<br>
 jerf 2 hours ago | link Erlang's error checking model is a great deal<br>
 more like Go's than he thinks. Erlang is in the "exceptions are<br>
 exceptional" camp too, and idiomatic code should not be throwing<br>
 exceptions around willy -nilly.<br>
<br>
Go is noticably more fragile with errors. Unhandled exceptions (which<br>
are just a fact of life unless you're a perfect programmer) will result<br>
in the entire program terminating if you don't have something that<br>
handles it. This behavior is forced on it precisely because of the<br>
shared memory model (one of the actual big differences); if one<br>
goroutine has f'ed up, you simply don't know what the state of your<br>
program is anymore. (Theoretically you could do better than that, but<br>
not simply.) Since Erlang memory is isolated, it can kill just that one<br>
process, and the other processes can pick up the pieces. (Not<br>
necessarily perfectly or without loss, but in practice, really quite<br>
well.) Consequently, for any serious Go program, you're still going to<br>
have to choose an exception handling policy, it's not as if it has<br>
gotten away from exceptions. Failures are a fact of life... for all you<br>
know, memory was corrupted. Again, the difference here is not "error<br>
handling policy" but the longer term consequences of shared vs. isolated<br>
memory spaces. If you just type up idiomatic Erlang OTP code, you have<br>
to go out of your way to not have a bulletproof server; if you just type<br>
up idiomatic Go code it's on you to make sure you're not excessively<br>
sharing state and that you aren't going to see your entire server doing<br>
tens of thousands of things come down due to one unhandled exception. Go<br>
programmers need to be more worried about error handling in practice<br>
than Erlang programmers, since Erlang programmers aren't facing the<br>
termination of the entire world if they screw up one thing.<br>
<br>
There's also a recurring pattern in newer language advocates in which<br>
they will in one year claim it's a good thing that they don't have X,<br>
and next year tout to the high heavens how wonderful it is that they<br>
just implemented X. I went around with the Haskell world on a couple of<br>
those issues ("no, strings are not linked lists of numbers", "yes they<br>
are you're just not thinking functionally and inductively dude, and by<br>
the way, six months later, check out this totally radical ByteString<br>
library, and when that still turns out not to be stringy enough hey,<br>
check out Data.Text six months later..."). Thinking you can get away<br>
without OTP is likely to be one of those for Go. No. You need it, though<br>
I have questions about whether it can even be built in Go, because one<br>
of the other actual differences between the languages...<br>
<br>
... which is Channels vs. Processes. Go has channels, but you can't tell<br>
who or what has them, and there's no such thing as a "goroutine<br>
reference". By contrast, Erlang has processes, but no way to tell what<br>
messages they may send or receive, and there's no such thing as a<br>
"channel". Again, this has major impacts on how the system is<br>
structured, in particular because it is meaningful to talk about how to<br>
restart a "process" in a way that it is not meaningful to talk about how<br>
to restart a "channel".<br>
<br>
Go advocates desperately, desperately need to avoid the temptation to<br>
explain to themselves why Erlang isn't as good, because then they'll<br>
fail to learn the lessons that Erlang learned the easy way. There's a<br>
lot of ways to improve on Erlang, but let me tell you that despite those<br>
opportunities, Erlang as a language is one of the wisest languages<br>
around, you do not want to try to exceed it by starting from scratch.<br>
Learn from it, please , I want a better Erlang than Erlang, but talking<br>
yourself into how Go is already better than Erlang isn't going to get<br>
you there.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br>