He references the post "Parallelism /= Concurrency," which we previously discussed here: <a href="http://news.ycombinator.com/item?id=2457307" rel="nofollow">http://news.ycombinator.com/item?id=2457307</a><p>That was largely a semantic issue, which I responded with:<p>Parallelism: simultaneous calculations executing in the service of a single problem, usually with the goal of improved performance.<p>Concurrency: executions in the same time granularity, but not necessarily simultaneous. Also not necessarily in the service of the same problem, but some form of synchronization is required.<p>What I will add this time is that there are different kinds of parallelism, and I think he's considering "data parallelism" the <i>real</i> parallelism. I think this is a false distinction. What he calls "concurrency," I and others call either task parallelism (for distinct tasks that don't need to communicate much) or pipeline parallelism (for tasks that work on data in stages).
I'm dubious that Haskell is better for writing distributed concurrent systems, but I don't know much about haskell.<p>Rather than bashing erlang like this, I'd have gotten a lot more out of an article that described how Haskell approached the problem, possibly with contrasts to erlang.<p>But when you start off with at best nonsense "erlang's parallelism is not parallelism" you're going to lose people who do know something about erlang.<p>Here's the deal with erlang: The syntax throws some people off. If you will spend a couple hours learning the language (maybe a couple days) you'll start to appreciate the syntax and it will no longer be a problem.<p>Erlang is not as fast as bare metal languages like, say, C, but Erlang is fantastic for making programs in parallel and executing them on multiple cores or nodes or clusters of nodes with multiple cores.<p>I guess I should take the occurrence of these kinds of articles as a sign that Erlang is getting wider acceptance. That's great!<p>But please, cheer your language, don't bash the competition.
I've read several authoritative books on Erlang and all of them used the term "concurrency" not "parallelism." I'm not sure who's running around saying Erlang provides parallelism.
Concurrency - property of systems in which several computational processes are executing at the same time, and potentially interacting with each other.<p>Parallelism - computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel").<p>Go to slide #13 in my presentation:<p><a href="http://www.slideshare.net/nivertech/migrationtomulticore" rel="nofollow">http://www.slideshare.net/nivertech/migrationtomulticore</a><p>Before introduction of SMP VM - Erlang was strictly concurrent, with only ability to write parallelism via distribution (i.e. multi-node systems). With SMP VM you can write single-node parallel code too.
Not, that it's the best language for HPC, but you can always call C/C++, Fortran, CUDA/OpenCL from it using NIFs.