<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: A Meme I&#8217;d Like To Crush</title>
	<atom:link href="http://third-bit.com/blog/archives/1262.html/feed" rel="self" type="application/rss+xml" />
	<link>http://third-bit.com/blog/archives/1262.html</link>
	<description>Data is ones and zeroes &#124; Software is ones and zeroes and hard work.</description>
	<lastBuildDate>Tue, 22 May 2012 16:23:22 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Jon Harrop</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1388</link>
		<dc:creator>Jon Harrop</dc:creator>
		<pubDate>Tue, 01 Jan 2008 12:15:35 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1388</guid>
		<description>If I explain why, will you promise not to send me Buffy? ;-)

I believe the reason is easiest to understand if you code in an impure language but in an almost entirely purely functional style. This limits mutation to comparatively tiny parts of the code base and massively reduces the number of mutexes required to add parallelism safely.

For example, our visualization software used to be written in (highly imperative) C++ and, consequently, was practically impossible to parallelize. However, switching to OCaml (an impure functional programming language) made it easy to rewrite the software more concisely, more efficiently and with only a tiny amount of mutation (in performance-critical parts). Consequently, parallelizing the OCaml code required only 4 mutexes in 250kLOC of code!

So purely functional programming helps because it makes the number of locks in your code scale up very slowly with the size of the code base itself.

However, if you&#039;re asking how/if the elimination of all mutation and the replacement of locks with other concurrency constructs solves the parallelism problem, I agree. I have seen a lot of evidence to suggest that it helps with (even cures) massive concurrency but never in the context of parallel programming.

The Haskell community keep making such claims and I keep responding by asking them to parallelize some of the example programs from my books but all I&#039;ve ever seen is Fibonacci number generators and other such programs that have absolutely no bearing on real parallel programming.</description>
		<content:encoded><![CDATA[<p>If I explain why, will you promise not to send me Buffy? <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I believe the reason is easiest to understand if you code in an impure language but in an almost entirely purely functional style. This limits mutation to comparatively tiny parts of the code base and massively reduces the number of mutexes required to add parallelism safely.</p>
<p>For example, our visualization software used to be written in (highly imperative) C++ and, consequently, was practically impossible to parallelize. However, switching to OCaml (an impure functional programming language) made it easy to rewrite the software more concisely, more efficiently and with only a tiny amount of mutation (in performance-critical parts). Consequently, parallelizing the OCaml code required only 4 mutexes in 250kLOC of code!</p>
<p>So purely functional programming helps because it makes the number of locks in your code scale up very slowly with the size of the code base itself.</p>
<p>However, if you&#8217;re asking how/if the elimination of all mutation and the replacement of locks with other concurrency constructs solves the parallelism problem, I agree. I have seen a lot of evidence to suggest that it helps with (even cures) massive concurrency but never in the context of parallel programming.</p>
<p>The Haskell community keep making such claims and I keep responding by asking them to parallelize some of the example programs from my books but all I&#8217;ve ever seen is Fibonacci number generators and other such programs that have absolutely no bearing on real parallel programming.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ulf Wiger</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1387</link>
		<dc:creator>Ulf Wiger</dc:creator>
		<pubDate>Fri, 28 Dec 2007 13:04:39 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1387</guid>
		<description>One of the underlying tenets of Erlang is that you need to use the right kind of concurrency support for your particular problem. For example, Parlog (parallel version of Prolog) was considered during the early experiments that led up to Erlang, but it was considered to have the wrong granularity of concurrency for telecoms applications. When I read &quot;parallel-capable&quot;, I think more of Parlog-style programming than Erlang. While I can testify that Erlang&#039;s concurrency model is just right for telecoms control systems, I know of no serious projects using it for parallel processing. If the chunks of work are large enough that some 10-50 usecs of cost, creating a process and coordinating with it, is acceptable overhead, then Erlang is an interesting alternative, but for many problems, this is is obviously unacceptable.

Haskell does have some interesting work in progress on data parallelism (http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell), but I&#039;m sure they&#039;re a long way away from any form of proof yet.</description>
		<content:encoded><![CDATA[<p>One of the underlying tenets of Erlang is that you need to use the right kind of concurrency support for your particular problem. For example, Parlog (parallel version of Prolog) was considered during the early experiments that led up to Erlang, but it was considered to have the wrong granularity of concurrency for telecoms applications. When I read &#8220;parallel-capable&#8221;, I think more of Parlog-style programming than Erlang. While I can testify that Erlang&#8217;s concurrency model is just right for telecoms control systems, I know of no serious projects using it for parallel processing. If the chunks of work are large enough that some 10-50 usecs of cost, creating a process and coordinating with it, is acceptable overhead, then Erlang is an interesting alternative, but for many problems, this is is obviously unacceptable.</p>
<p>Haskell does have some interesting work in progress on data parallelism (<a href="http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell" rel="nofollow">http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell</a>), but I&#8217;m sure they&#8217;re a long way away from any form of proof yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1386</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Wed, 26 Dec 2007 22:31:16 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1386</guid>
		<description>You might want to check out the Wide Finder Project: http://www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder</description>
		<content:encoded><![CDATA[<p>You might want to check out the Wide Finder Project: <a href="http://www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder" rel="nofollow">http://www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: A Fresh Cup &#187; Blog Archive &#187; Double Shot #105</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1385</link>
		<dc:creator>A Fresh Cup &#187; Blog Archive &#187; Double Shot #105</dc:creator>
		<pubDate>Sun, 23 Dec 2007 15:16:39 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1385</guid>
		<description>[...] A Meme I’d Like To Crush - Greg Wilson, who actually knows a thing or two on the subject, discusses the current swooning over Erlang &#8217;cause it&#8217;s so parallelizable. [...]</description>
		<content:encoded><![CDATA[<p>[...] A Meme I’d Like To Crush &#8211; Greg Wilson, who actually knows a thing or two on the subject, discusses the current swooning over Erlang &#8217;cause it&#8217;s so parallelizable. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Wilson</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1384</link>
		<dc:creator>Greg Wilson</dc:creator>
		<pubDate>Thu, 20 Dec 2007 12:03:48 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1384</guid>
		<description>Steve H: yes, badly designed studies say more about experimenter bias than they do about the subject supposedly being investigated. That doesn&#039;t mean all studies have to be badly designed ;-)

Joseph K: Not sure what you mean by &quot;you academics&quot;, and no, I didn&#039;t say that we shouldn&#039;t pay attention to Erlang/Haskell/whatever --- I said we should try to find out if the claims being made for them are true or not. If they are, that&#039;s interesting; if they&#039;re not, that&#039;s interesting too.

Thomas L: have you included testimonials from people who tried Erlang and gave up in your sample?  If not, perhaps &quot;totally biased&quot; cuts both ways ;-)

See also http://pyre.third-bit.com/blog/archives/1271.html.</description>
		<content:encoded><![CDATA[<p>Steve H: yes, badly designed studies say more about experimenter bias than they do about the subject supposedly being investigated. That doesn&#8217;t mean all studies have to be badly designed <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Joseph K: Not sure what you mean by &#8220;you academics&#8221;, and no, I didn&#8217;t say that we shouldn&#8217;t pay attention to Erlang/Haskell/whatever &#8212; I said we should try to find out if the claims being made for them are true or not. If they are, that&#8217;s interesting; if they&#8217;re not, that&#8217;s interesting too.</p>
<p>Thomas L: have you included testimonials from people who tried Erlang and gave up in your sample?  If not, perhaps &#8220;totally biased&#8221; cuts both ways <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>See also <a href="http://pyre.third-bit.com/blog/archives/1271.html" rel="nofollow">http://pyre.third-bit.com/blog/archives/1271.html</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Lackner</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1383</link>
		<dc:creator>Thomas Lackner</dc:creator>
		<pubDate>Wed, 19 Dec 2007 19:53:40 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1383</guid>
		<description>Wow, we get to produce a super complicated, totally biased study that has no real conclusions (other than which of the sampled programmers is more experience), and we get a Buffy DVD out of it? This sounds like a great opportunity.

I can understand your issue with the obvious hyperbole in Nat&#039;s statement, but I think it is short-sighted to disregard the testimonial of the hundreds of people that have recently moved their applications to Erlang. They all state the same thing: it is much easier to produce a reliable, maintainable application in Erlang than with other parallel frameworks.</description>
		<content:encoded><![CDATA[<p>Wow, we get to produce a super complicated, totally biased study that has no real conclusions (other than which of the sampled programmers is more experience), and we get a Buffy DVD out of it? This sounds like a great opportunity.</p>
<p>I can understand your issue with the obvious hyperbole in Nat&#8217;s statement, but I think it is short-sighted to disregard the testimonial of the hundreds of people that have recently moved their applications to Erlang. They all state the same thing: it is much easier to produce a reliable, maintainable application in Erlang than with other parallel frameworks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joseph Kepler</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1382</link>
		<dc:creator>Joseph Kepler</dc:creator>
		<pubDate>Wed, 19 Dec 2007 15:27:19 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1382</guid>
		<description>Yeah, I agree, using the term &quot;parallel-capable&quot; in that context is absurd.  But what exactly what exactly is *your* point?  Is it that we shouldn&#039;t pay attention to Erlang or Haskell because there hasn&#039;t been psychological study on how easy their concurrency models are?  I really hope you academics can find something more meaningful to do.  Such research would be about as valuable as a study to decide which is more intense: Jet Skying or Snowmobiling.

So, how are the book sales going?  Sorry, I&#039;ve already blown my budget for the holidays, so I won&#039;t be able to order a copy.</description>
		<content:encoded><![CDATA[<p>Yeah, I agree, using the term &#8220;parallel-capable&#8221; in that context is absurd.  But what exactly what exactly is *your* point?  Is it that we shouldn&#8217;t pay attention to Erlang or Haskell because there hasn&#8217;t been psychological study on how easy their concurrency models are?  I really hope you academics can find something more meaningful to do.  Such research would be about as valuable as a study to decide which is more intense: Jet Skying or Snowmobiling.</p>
<p>So, how are the book sales going?  Sorry, I&#8217;ve already blown my budget for the holidays, so I won&#8217;t be able to order a copy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: steve h</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1381</link>
		<dc:creator>steve h</dc:creator>
		<pubDate>Wed, 19 Dec 2007 15:20:51 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1381</guid>
		<description>I suppose we&#039;ll have that study as soon as we have *any* study showing the benefits of one approach vs. any other in programming.  I&#039;ve seen attempts at such studies but it seems to me that all they do is expose the assumptions and prejudices of their authors.</description>
		<content:encoded><![CDATA[<p>I suppose we&#8217;ll have that study as soon as we have *any* study showing the benefits of one approach vs. any other in programming.  I&#8217;ve seen attempts at such studies but it seems to me that all they do is expose the assumptions and prejudices of their authors.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Development in a Blink &#187; Blog Archive &#187; Amazon SimpleDB is running Erlang</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1380</link>
		<dc:creator>Development in a Blink &#187; Blog Archive &#187; Amazon SimpleDB is running Erlang</dc:creator>
		<pubDate>Wed, 19 Dec 2007 02:25:57 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1380</guid>
		<description>[...] Greg Wilson, author of Practical Parallel Programming, picks up on the post and says this about pure functional languages: I don’t believe that PFLs make non-trivial parallel programs easier to write. I don’t believe they make parallel programming harder, either, and the reason I don’t is that I haven’t seen any empirical studies of real programmers writing real programs that point either way. [...]</description>
		<content:encoded><![CDATA[<p>[...] Greg Wilson, author of Practical Parallel Programming, picks up on the post and says this about pure functional languages: I don’t believe that PFLs make non-trivial parallel programs easier to write. I don’t believe they make parallel programming harder, either, and the reason I don’t is that I haven’t seen any empirical studies of real programmers writing real programs that point either way. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Third Bit &#187; Blog Archive &#187; Show Me</title>
		<link>http://third-bit.com/blog/archives/1262.html#comment-1379</link>
		<dc:creator>The Third Bit &#187; Blog Archive &#187; Show Me</dc:creator>
		<pubDate>Tue, 18 Dec 2007 12:48:55 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1262.html#comment-1379</guid>
		<description>[...] More recently, in a comment on an earlier post asking what data there was to back up the claim that Erlang and Haskell made parallel programming easier, Neil Bartlett said: As a working programmer I favour my own personal experiences and experimentation over academic studies&#8230; [...]</description>
		<content:encoded><![CDATA[<p>[...] More recently, in a comment on an earlier post asking what data there was to back up the claim that Erlang and Haskell made parallel programming easier, Neil Bartlett said: As a working programmer I favour my own personal experiences and experimentation over academic studies&#8230; [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

