{"id":277,"date":"2009-10-06T22:44:26","date_gmt":"2009-10-07T06:44:26","guid":{"rendered":"http:\/\/www.sauria.com\/blog\/2009\/10\/06\/concurrency-parallelism\/"},"modified":"2020-04-13T10:29:26","modified_gmt":"2020-04-13T18:29:26","slug":"concurrency-parallelism","status":"publish","type":"post","link":"https:\/\/www.sauria.com\/blog\/2009\/10\/06\/concurrency-parallelism\/","title":{"rendered":"Concurrency => Parallelism"},"content":{"rendered":"<p>I wanted to clarify a point from my post <a href=\"http:\/\/www.sauria.com\/blog\/2009\/10\/05\/the-cambrian-period-of-concurrency\/\">The Cambrian Period of Concurrency<\/a>.<\/p>\n<p>I made the statement<\/p>\n<blockquote>\n<p>From where I sit, this is all about exploiting multicore hardware<\/p>\n<\/blockquote>\n<p>because I&#8217;ve seen a pile of actor and other concurrency libraries which have not taken parallel execution of the concurrent program seriously. If I am going to go to the trouble of writing a concurrent program, then I want that execution to be parallel, especially in a multicore world.<\/p>\n<p>Simon Marlow from the GHC team <a href=\"http:\/\/ghcmutterings.wordpress.com\/2009\/10\/06\/parallelism-concurrency\/\">said<\/a> that if programming multicore machines is the only goal we ought to be looking at parallelism first and concurrency only as a last resort. Haskell has some nice features for taking advantage of parallelism. However, I explicitly stated that I was not as interested in highly regular or data parallel computations, which is what Haskell&#8217;s parallelism tools are aimed at. These are fine ways to get parallelism, but I am interested in problems which are genuinely concurrent, not just parallel. In a Van Roy hierarchy, these are the problems with observable nondeterminism. I also specifically called out reduction of latency as one of my goals, something which Marlow says is a possible benefit of concurrency. The GHC team is interested in a different mix of problems than I am.<\/p>\n<p><strong>Van Roy in short<\/strong><\/p>\n<p>I also forgot to mention Peter Van Roy&#8217;s paper <a href=\"http:\/\/lambda-the-ultimate.org\/node\/3465\">Programming Paradigms for Dummies: What Every Programmer Should Know<\/a>, which includes an overview of his stratification of concurrency and parallelism (and other stuff). If you don&#8217;t have time to read his book, the paper is shorter and more digestible.<\/p>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I wanted to clarify a point from my post The Cambrian Period of Concurrency. I made the statement From where I sit, this is all about exploiting multicore hardware because I&#8217;ve seen a pile of actor and other concurrency libraries which have not taken parallel execution of the concurrent program seriously. If I am going [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[28,26,6],"tags":[154,152],"class_list":["post-277","post","type-post","status-publish","format-standard","hentry","category-concurrency","category-programming","category-programming-languages","tag-concurrency","tag-programming"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/phUVc-4t","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/posts\/277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/comments?post=277"}],"version-history":[{"count":1,"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/posts\/277\/revisions"}],"predecessor-version":[{"id":458,"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/posts\/277\/revisions\/458"}],"wp:attachment":[{"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/media?parent=277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/categories?post=277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sauria.com\/blog\/wp-json\/wp\/v2\/tags?post=277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}