<?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: Concurrency Rant: Different Types of Concurrency and Why Lots of People Already use &#8216;Erlang&#8217; Concurrency</title>
	<atom:link href="http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/</link>
	<description></description>
	<lastBuildDate>Wed, 09 May 2012 22:39:34 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Brett Morgan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-238938</link>
		<dc:creator>Brett Morgan</dc:creator>
		<pubDate>Tue, 11 Aug 2009 08:19:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-238938</guid>
		<description>I&#039;m getting the feeling that all web apps are going to head into the concurrent access / update class to facilitate gen y friendlyness. For example, Google Reader&#039;s X people also liked this post link, which could easily morph into community discussion area...</description>
		<content:encoded><![CDATA[<p>I&#8217;m getting the feeling that all web apps are going to head into the concurrent access / update class to facilitate gen y friendlyness. For example, Google Reader&#8217;s X people also liked this post link, which could easily morph into community discussion area&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: qedisk</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-234205</link>
		<dc:creator>qedisk</dc:creator>
		<pubDate>Sun, 28 Jun 2009 18:42:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-234205</guid>
		<description>&gt; Threads talk to each other by adding (hopefully immutable) messages to a queue.
Message put in concurrent collections/queues needn&#039;t be immutable, because there is a happens-before relationship between putting and taking the message. It means that the state the message was in when put in queue is fully visible to receiving thread.</description>
		<content:encoded><![CDATA[<p>&gt; Threads talk to each other by adding (hopefully immutable) messages to a queue.<br />
Message put in concurrent collections/queues needn&#8217;t be immutable, because there is a happens-before relationship between putting and taking the message. It means that the state the message was in when put in queue is fully visible to receiving thread.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Markus Kohler</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-226648</link>
		<dc:creator>Markus Kohler</dc:creator>
		<pubDate>Tue, 10 Mar 2009 09:59:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-226648</guid>
		<description>Great post Stephan!
I fully agree. 

@Steve V. Why do you think that the message passing feature has to be hardcoded into the language?

If we can get message passing implementing in  Scala as a library, I think that could be an advantage over something that is hardcoded into the language.</description>
		<content:encoded><![CDATA[<p>Great post Stephan!<br />
I fully agree. </p>
<p>@Steve V. Why do you think that the message passing feature has to be hardcoded into the language?</p>
<p>If we can get message passing implementing in  Scala as a library, I think that could be an advantage over something that is hardcoded into the language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sriram srinivasan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-224518</link>
		<dc:creator>sriram srinivasan</dc:creator>
		<pubDate>Sun, 18 Jan 2009 21:49:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-224518</guid>
		<description>&quot;completely missed the most important part of Erlang parallelism: the pi calculus&quot;.

Comparing an implementation to a turing-complete formalism is strange. Just because Erlang has syntactic support for message passing doesn&#039;t mean it is an embodiment of pi. Remote object refs perform the same function as erlang pids, FWIW. 

Also, pi-calculus is about concurrency, not parallelism. 

On a slightly related note, here&#039;s Wil van der Aalst on why he thinks the term &quot;pi-calculus&quot; is thrown around a bit too liberally. 
http://is.tm.tue.nl/staff/wvdaalst/publications/p257.pdf</description>
		<content:encoded><![CDATA[<p>&#8220;completely missed the most important part of Erlang parallelism: the pi calculus&#8221;.</p>
<p>Comparing an implementation to a turing-complete formalism is strange. Just because Erlang has syntactic support for message passing doesn&#8217;t mean it is an embodiment of pi. Remote object refs perform the same function as erlang pids, FWIW. </p>
<p>Also, pi-calculus is about concurrency, not parallelism. </p>
<p>On a slightly related note, here&#8217;s Wil van der Aalst on why he thinks the term &#8220;pi-calculus&#8221; is thrown around a bit too liberally.<br />
<a href="http://is.tm.tue.nl/staff/wvdaalst/publications/p257.pdf" rel="nofollow">http://is.tm.tue.nl/staff/wvdaalst/publications/p257.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-220081</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Wed, 24 Dec 2008 15:19:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-220081</guid>
		<description>Merry christmas
Stephan</description>
		<content:encoded><![CDATA[<p>Merry christmas<br />
Stephan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arnaud Bailly</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-220049</link>
		<dc:creator>Arnaud Bailly</dc:creator>
		<pubDate>Wed, 24 Dec 2008 14:04:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-220049</guid>
		<description>Yes, I am aware of that article. I think however that the overhead observed by the authors and introduced by code instrumentation should be balanced by the &#039;abstraction comfort&#039; STMs provide. FWIW, there is a good overview of STM in CACM.

As yourself, I have only toyed with STM and never used it on real projects, but I feel they are conceptually higher-level than other concurrency mechanisms and hence maybe easier to work with. Moreover, the fact that, at least in Haskell, you can compose STM computations together while keeping its properties is really interesting.

Of course, this is only a &#039;feeling&#039;, having dealt mostly with threads and message-passing style concurrency ni my past programming experience.

Merry christmas,
Arnaud</description>
		<content:encoded><![CDATA[<p>Yes, I am aware of that article. I think however that the overhead observed by the authors and introduced by code instrumentation should be balanced by the &#8216;abstraction comfort&#8217; STMs provide. FWIW, there is a good overview of STM in CACM.</p>
<p>As yourself, I have only toyed with STM and never used it on real projects, but I feel they are conceptually higher-level than other concurrency mechanisms and hence maybe easier to work with. Moreover, the fact that, at least in Haskell, you can compose STM computations together while keeping its properties is really interesting.</p>
<p>Of course, this is only a &#8216;feeling&#8217;, having dealt mostly with threads and message-passing style concurrency ni my past programming experience.</p>
<p>Merry christmas,<br />
Arnaud</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-220034</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Wed, 24 Dec 2008 13:16:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-220034</guid>
		<description>@Arnaud: I think STM  is quite interesting, Clojure seems to have nailed it in it&#039;s implementation. It looks clean and easy to understand.

STM is a mechanism to share state between processes and fits into the first category.

I haven&#039;t tried STM in a real world project but would be eager to, perhaps 2009 I find a suitable project.

There have been some articles along the lines of STM not scaling though.

http://queue.acm.org/detail.cfm?id=1454466</description>
		<content:encoded><![CDATA[<p>@Arnaud: I think STM  is quite interesting, Clojure seems to have nailed it in it&#8217;s implementation. It looks clean and easy to understand.</p>
<p>STM is a mechanism to share state between processes and fits into the first category.</p>
<p>I haven&#8217;t tried STM in a real world project but would be eager to, perhaps 2009 I find a suitable project.</p>
<p>There have been some articles along the lines of STM not scaling though.</p>
<p><a href="http://queue.acm.org/detail.cfm?id=1454466" rel="nofollow">http://queue.acm.org/detail.cfm?id=1454466</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arnaud Bailly</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219874</link>
		<dc:creator>Arnaud Bailly</dc:creator>
		<pubDate>Wed, 24 Dec 2008 07:47:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219874</guid>
		<description>Hello Stephan,
I am not a specialist of concurrency, just a mere mortal trying sometimes to use it :-) I am wondering where Software Transactional Memory fits, and what do you think about it. Iknow about the Haskell implementation, and it seems there exists JVM based implementations, but I did not try them.

STM based transactions do not exchange data per se, running in isolation, yet by virtue of retry and conditional, they can be synchronized with one another.

Regards,
Arnaud

PS: and don&#039;t feed the troll ;-)</description>
		<content:encoded><![CDATA[<p>Hello Stephan,<br />
I am not a specialist of concurrency, just a mere mortal trying sometimes to use it :-) I am wondering where Software Transactional Memory fits, and what do you think about it. Iknow about the Haskell implementation, and it seems there exists JVM based implementations, but I did not try them.</p>
<p>STM based transactions do not exchange data per se, running in isolation, yet by virtue of retry and conditional, they can be synchronized with one another.</p>
<p>Regards,<br />
Arnaud</p>
<p>PS: and don&#8217;t feed the troll ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219848</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Wed, 24 Dec 2008 06:41:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219848</guid>
		<description>Ugh. Personal attacks.

&quot;The reason I brought up the Windows system was supposed to be a counterexample, but you were too busy telling me I’d missed the point to realize that you were missing the point of said counterexample.&quot;

I&#039;ve read it again and again, but I can&#039;t see how this is a counter example. 

Windows process do share state, threads don&#039;t. What am I missing? I&#039;m sorry your responses are to vague to my level of understanding. There might be hints but I&#039;m too stupid to see them. 

On the other side the comments just look like name dropping,

&quot;Parallel channels, identified channels, proxying, masquerading, voluntary yielding, continuations;&quot;

It would me nice to elaborate one point instead. With

&quot;can or cannot message”

it seems to me that you change my words all the time:

&lt;i&gt;&quot;* First: Need to share data
* Second: No need to share data (or “not to share in real time”)&quot;&lt;/i&gt;

Instead of providing me with some key words to find concurrency examples on your site your only comment is:

&quot;Indeed.&quot;

Thanks for your comments, they might have helped some readers. They haven&#039;t helped me. 

We both have different views on the topic. I want to share knowledge, you want to prove I&#039;m stupid. Well I am. Merry xmas.</description>
		<content:encoded><![CDATA[<p>Ugh. Personal attacks.</p>
<p>&#8220;The reason I brought up the Windows system was supposed to be a counterexample, but you were too busy telling me I’d missed the point to realize that you were missing the point of said counterexample.&#8221;</p>
<p>I&#8217;ve read it again and again, but I can&#8217;t see how this is a counter example. </p>
<p>Windows process do share state, threads don&#8217;t. What am I missing? I&#8217;m sorry your responses are to vague to my level of understanding. There might be hints but I&#8217;m too stupid to see them. </p>
<p>On the other side the comments just look like name dropping,</p>
<p>&#8220;Parallel channels, identified channels, proxying, masquerading, voluntary yielding, continuations;&#8221;</p>
<p>It would me nice to elaborate one point instead. With</p>
<p>&#8220;can or cannot message”</p>
<p>it seems to me that you change my words all the time:</p>
<p><i>&#8220;* First: Need to share data<br />
* Second: No need to share data (or “not to share in real time”)&#8221;</i></p>
<p>Instead of providing me with some key words to find concurrency examples on your site your only comment is:</p>
<p>&#8220;Indeed.&#8221;</p>
<p>Thanks for your comments, they might have helped some readers. They haven&#8217;t helped me. </p>
<p>We both have different views on the topic. I want to share knowledge, you want to prove I&#8217;m stupid. Well I am. Merry xmas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Haugeland</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219833</link>
		<dc:creator>John Haugeland</dc:creator>
		<pubDate>Wed, 24 Dec 2008 03:53:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219833</guid>
		<description>&lt;b&gt;“Should it be the case that these were the main two, you might have a point. However, given that neither of the mechanisms you describe adequately explain the Windows model of threads and ropes inside processes [...]”

I think you might have missed the point again. There are different types of concurrency, one where the parallel running processes/actors/objects/things share information and one where they don’t exchange information. If you know more, you could fill me in.&lt;/b&gt;

I tried to; you were too busy feeling correct to look into the hints you were given.  Windows parallelism fits neither model.  Windows processes do not share memory (at least not without significant contrarian gymnastics, but the same can be said of every pure implementation the average programmer can name); Windows threads do.  The reason I brought up the Windows system was supposed to be a counterexample, but you were too busy telling me I&#039;d missed the point to realize that you were missing the point of said counterexample.

I realize it&#039;s very comfortable to repeat what you&#039;ve been told, but try this again.  There&#039;s more to the world than &quot;processes can communicate&quot; and &quot;processes can&#039;t communicate&quot;.  Parallel channels, identified channels, proxying, masquerading, voluntary yielding, continuations; there&#039;re all sorts of approaches out there which do not map to your very black and white world, and the fact that the world&#039;s dominant parallelism model is one of them should be something of a red flag to you.

It really isn&#039;t as cut and dried as &quot;can or cannot message&quot;, even if you want it to be, and even if you don&#039;t know about the alternatives.  I wasn&#039;t at all cryptic about my counterexample; you should have read up on it before assuming you were correct.

&lt;b&gt;From a first look I can’t find relevant tutorials to concurrency using the search on both pages. Perhaps I don’t use the right key words.&lt;/b&gt;

Indeed.

&lt;b&gt;http://lamp.epfl.ch/~cremet/publications/pilib.pdf&lt;/b&gt;

This was a legitimate mistake to make.  That isn&#039;t honestly the pi calculus, even though its authors present it as such.  Many of the most important guarantees of the Pi Calculus derive from isolation, which cannot be provided on the Java virtual machine for reasons that I&#039;m sure you&#039;ll ask me to explain at length instead of just researching, since this is apparently my tutorial and my blog, and since you feel comfortable refuting essentially any comment by saying &quot;you haven&#039;t written a book hard enough, therefore you are wrong.&quot;

This may help elucidate the point.

http://www.cs.cmu.edu/~wing/publications/Wing02a.pdf

Frankly, your &quot;as John wasn&#039;t kind enough&quot; comment reeks of contempt; if you had been less standoffish about the help you were offered in the first place, you might have received more.  As stands you&#039;ve got a last read and a disinterested goodbye.</description>
		<content:encoded><![CDATA[<p><b>“Should it be the case that these were the main two, you might have a point. However, given that neither of the mechanisms you describe adequately explain the Windows model of threads and ropes inside processes [...]”</p>
<p>I think you might have missed the point again. There are different types of concurrency, one where the parallel running processes/actors/objects/things share information and one where they don’t exchange information. If you know more, you could fill me in.</b></p>
<p>I tried to; you were too busy feeling correct to look into the hints you were given.  Windows parallelism fits neither model.  Windows processes do not share memory (at least not without significant contrarian gymnastics, but the same can be said of every pure implementation the average programmer can name); Windows threads do.  The reason I brought up the Windows system was supposed to be a counterexample, but you were too busy telling me I&#8217;d missed the point to realize that you were missing the point of said counterexample.</p>
<p>I realize it&#8217;s very comfortable to repeat what you&#8217;ve been told, but try this again.  There&#8217;s more to the world than &#8220;processes can communicate&#8221; and &#8220;processes can&#8217;t communicate&#8221;.  Parallel channels, identified channels, proxying, masquerading, voluntary yielding, continuations; there&#8217;re all sorts of approaches out there which do not map to your very black and white world, and the fact that the world&#8217;s dominant parallelism model is one of them should be something of a red flag to you.</p>
<p>It really isn&#8217;t as cut and dried as &#8220;can or cannot message&#8221;, even if you want it to be, and even if you don&#8217;t know about the alternatives.  I wasn&#8217;t at all cryptic about my counterexample; you should have read up on it before assuming you were correct.</p>
<p><b>From a first look I can’t find relevant tutorials to concurrency using the search on both pages. Perhaps I don’t use the right key words.</b></p>
<p>Indeed.</p>
<p><b><a href="http://lamp.epfl.ch/~cremet/publications/pilib.pdf" rel="nofollow">http://lamp.epfl.ch/~cremet/publications/pilib.pdf</a></b></p>
<p>This was a legitimate mistake to make.  That isn&#8217;t honestly the pi calculus, even though its authors present it as such.  Many of the most important guarantees of the Pi Calculus derive from isolation, which cannot be provided on the Java virtual machine for reasons that I&#8217;m sure you&#8217;ll ask me to explain at length instead of just researching, since this is apparently my tutorial and my blog, and since you feel comfortable refuting essentially any comment by saying &#8220;you haven&#8217;t written a book hard enough, therefore you are wrong.&#8221;</p>
<p>This may help elucidate the point.</p>
<p><a href="http://www.cs.cmu.edu/~wing/publications/Wing02a.pdf" rel="nofollow">http://www.cs.cmu.edu/~wing/publications/Wing02a.pdf</a></p>
<p>Frankly, your &#8220;as John wasn&#8217;t kind enough&#8221; comment reeks of contempt; if you had been less standoffish about the help you were offered in the first place, you might have received more.  As stands you&#8217;ve got a last read and a disinterested goodbye.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219727</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 23 Dec 2008 20:30:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219727</guid>
		<description>As John wasn&#039;t kind enough to provide some information on the pi calculus in Erlang, as a service to all readers:

http://lamp.epfl.ch/~cremet/publications/pilib.pdf

A library for the pi calculus. As a bonus: Implemented in Scala.</description>
		<content:encoded><![CDATA[<p>As John wasn&#8217;t kind enough to provide some information on the pi calculus in Erlang, as a service to all readers:</p>
<p><a href="http://lamp.epfl.ch/~cremet/publications/pilib.pdf" rel="nofollow">http://lamp.epfl.ch/~cremet/publications/pilib.pdf</a></p>
<p>A library for the pi calculus. As a bonus: Implemented in Scala.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219714</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 23 Dec 2008 15:59:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219714</guid>
		<description>&quot;Should it be the case that these were the main two, you might have a point. However, given that neither of the mechanisms you describe adequately explain the Windows model of threads and ropes inside processes [...]&quot;

I think you might have missed the point again. There are different types of concurrency, one where the parallel running processes/actors/objects/things share information and one where they don&#039;t exchange information. If you know more, you could fill me in.

The other thing is mechanisms to solve the concurrency problems that arise from the first and second kind of concurrency.

But solutions or mechanisms or models and concurrency types are different things.

&quot;I have been. For a long time. http://sc.tri-bit.com/ and http://fullof.bs/ are both me. I’ve written dozens of complete tutorials on half a dozen languages and serious topics.&quot;

From a first look I can&#039;t find relevant tutorials to concurrency using the search on both pages. Perhaps I don&#039;t use the right key words.

@J: SomnifugiJMS is nice, especially if you already know JMS (used if for an intra application bus for Swing applications). I also liked Werx as a bus system - but the open source project is discontinued (It had a nice hierarchy system for messages an was fast).

If you&#039;re interested in concurrency you need to read the Doug Lea book &quot;Java Concurrency in Practice&quot;. 

Other than that if you need high performance concurreny you best use:

- Erlang (buy the Erlang book)
- If you have Java knowledge then it would be good to look into the Scala implementations of actors and OTP.
- If you need Erlang concurrency in Java you could take a look at Kilim

http://codemonkeyism.com/archives/2008/06/21/interesting-picture-benchmarking-erlang-versus-java-concurrency/

I&#039;m not sure how Actors Guild performs, I need to look into that

http://actorsguildframework.org/

Write your own implementation :-) What people can learn from Erlang is the inbox model (and thinking in supervisors and restarting processes) and take it into the language of their choice.</description>
		<content:encoded><![CDATA[<p>&#8220;Should it be the case that these were the main two, you might have a point. However, given that neither of the mechanisms you describe adequately explain the Windows model of threads and ropes inside processes [...]&#8221;</p>
<p>I think you might have missed the point again. There are different types of concurrency, one where the parallel running processes/actors/objects/things share information and one where they don&#8217;t exchange information. If you know more, you could fill me in.</p>
<p>The other thing is mechanisms to solve the concurrency problems that arise from the first and second kind of concurrency.</p>
<p>But solutions or mechanisms or models and concurrency types are different things.</p>
<p>&#8220;I have been. For a long time. <a href="http://sc.tri-bit.com/" rel="nofollow">http://sc.tri-bit.com/</a> and <a href="http://fullof.bs/" rel="nofollow">http://fullof.bs/</a> are both me. I’ve written dozens of complete tutorials on half a dozen languages and serious topics.&#8221;</p>
<p>From a first look I can&#8217;t find relevant tutorials to concurrency using the search on both pages. Perhaps I don&#8217;t use the right key words.</p>
<p>@J: SomnifugiJMS is nice, especially if you already know JMS (used if for an intra application bus for Swing applications). I also liked Werx as a bus system &#8211; but the open source project is discontinued (It had a nice hierarchy system for messages an was fast).</p>
<p>If you&#8217;re interested in concurrency you need to read the Doug Lea book &#8220;Java Concurrency in Practice&#8221;. </p>
<p>Other than that if you need high performance concurreny you best use:</p>
<p>- Erlang (buy the Erlang book)<br />
- If you have Java knowledge then it would be good to look into the Scala implementations of actors and OTP.<br />
- If you need Erlang concurrency in Java you could take a look at Kilim</p>
<p><a href="http://codemonkeyism.com/archives/2008/06/21/interesting-picture-benchmarking-erlang-versus-java-concurrency/" rel="nofollow">http://codemonkeyism.com/archives/2008/06/21/interesting-picture-benchmarking-erlang-versus-java-concurrency/</a></p>
<p>I&#8217;m not sure how Actors Guild performs, I need to look into that</p>
<p><a href="http://actorsguildframework.org/" rel="nofollow">http://actorsguildframework.org/</a></p>
<p>Write your own implementation :-) What people can learn from Erlang is the inbox model (and thinking in supervisors and restarting processes) and take it into the language of their choice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219688</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 23 Dec 2008 15:05:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219688</guid>
		<description>@Steve: Of course you&#039;re entitled to have another opinion. That&#039;s mine.

Coming back to the envy thing. I&#039;ve never understood the concept. If I am envy, why shouldn&#039;t I change to another language? Wouldn&#039;t that be the best thing to do? Staying with one programming language and being envy about another doesn&#039;t make sense to me.</description>
		<content:encoded><![CDATA[<p>@Steve: Of course you&#8217;re entitled to have another opinion. That&#8217;s mine.</p>
<p>Coming back to the envy thing. I&#8217;ve never understood the concept. If I am envy, why shouldn&#8217;t I change to another language? Wouldn&#8217;t that be the best thing to do? Staying with one programming language and being envy about another doesn&#8217;t make sense to me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219687</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 23 Dec 2008 15:02:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219687</guid>
		<description>@Steve: &quot;[...] being defensive of Java and its offspring, and as being envious of Erlang.&quot;

Of course it is defensive that was the goal. There have been dozens sof blogs posts 2008 from people using Erlang with no clue about what other people do.

&quot;[...] them just parrot what they have read in other blogs.&quot;

About Java? Well queues, ESBs, Fork/Join, MapReduce are concepts, not primarily language features. And some Erlang developers seem to forget that message passing, supervisor hierarchies et al are concepts too.

&quot;Message passing is message passing. Is the fact that message passing in one language is comparable to message passing in another language enough to declare that “there isn’t as much difference between concurrency in different languages as people want you to believe there is!”

Yes.

I know it makes Erlang not that wonder language some people think it is. I&#039;m sorry for that.</description>
		<content:encoded><![CDATA[<p>@Steve: &#8220;[...] being defensive of Java and its offspring, and as being envious of Erlang.&#8221;</p>
<p>Of course it is defensive that was the goal. There have been dozens sof blogs posts 2008 from people using Erlang with no clue about what other people do.</p>
<p>&#8220;[...] them just parrot what they have read in other blogs.&#8221;</p>
<p>About Java? Well queues, ESBs, Fork/Join, MapReduce are concepts, not primarily language features. And some Erlang developers seem to forget that message passing, supervisor hierarchies et al are concepts too.</p>
<p>&#8220;Message passing is message passing. Is the fact that message passing in one language is comparable to message passing in another language enough to declare that “there isn’t as much difference between concurrency in different languages as people want you to believe there is!”</p>
<p>Yes.</p>
<p>I know it makes Erlang not that wonder language some people think it is. I&#8217;m sorry for that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Haugeland</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219438</link>
		<dc:creator>John Haugeland</dc:creator>
		<pubDate>Tue, 23 Dec 2008 04:04:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219438</guid>
		<description>&lt;b&gt;It would be nice if you would fill in the gaps and write a post on your own for all of us to learn. Thanks.&lt;/b&gt;

I have been.  For a long time.  http://sc.tri-bit.com/ and http://fullof.bs/ are both me.  I&#039;ve written dozens of complete tutorials on half a dozen languages and serious topics.

Before you get smug about what other people haven&#039;t done, be sure that they haven&#039;t done it.

&lt;b&gt;&lt;i&gt;“It’d be nice if people saying “there are only N kinds” knew what kinds there were.”&lt;/i&gt;

Update: Compare this to “There are mainly two different types of concurrency”. I let the reader find the difference as an exercise.&lt;/b&gt;

Should it be the case that these were the main two, you might have a point.  However, given that neither of the mechanisms you describe adequately explain the Windows model of threads and ropes inside processes, meaning that you&#039;ve missed something like nine tenths of the real world market, you&#039;re really only lampooning yourself by here.</description>
		<content:encoded><![CDATA[<p><b>It would be nice if you would fill in the gaps and write a post on your own for all of us to learn. Thanks.</b></p>
<p>I have been.  For a long time.  <a href="http://sc.tri-bit.com/" rel="nofollow">http://sc.tri-bit.com/</a> and <a href="http://fullof.bs/" rel="nofollow">http://fullof.bs/</a> are both me.  I&#8217;ve written dozens of complete tutorials on half a dozen languages and serious topics.</p>
<p>Before you get smug about what other people haven&#8217;t done, be sure that they haven&#8217;t done it.</p>
<p><b><i>“It’d be nice if people saying “there are only N kinds” knew what kinds there were.”</i></p>
<p>Update: Compare this to “There are mainly two different types of concurrency”. I let the reader find the difference as an exercise.</b></p>
<p>Should it be the case that these were the main two, you might have a point.  However, given that neither of the mechanisms you describe adequately explain the Windows model of threads and ropes inside processes, meaning that you&#8217;ve missed something like nine tenths of the real world market, you&#8217;re really only lampooning yourself by here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J. Betancourt</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219287</link>
		<dc:creator>J. Betancourt</dc:creator>
		<pubDate>Mon, 22 Dec 2008 21:23:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219287</guid>
		<description>Though I am far from expert in this topic, the responses seem on point.  

Yes there are similarities between message based asynchronous architectures and Actor-like systems, but they smell different.  A while back I was looking at the JCSP library that puts PI-calculus primitives into Java, it did not look like many of the things you mentioned in Java, though SomnifugiJMS looks interesting as an alternate approach.

I hope you post a followup.  I look forward to learning more.</description>
		<content:encoded><![CDATA[<p>Though I am far from expert in this topic, the responses seem on point.  </p>
<p>Yes there are similarities between message based asynchronous architectures and Actor-like systems, but they smell different.  A while back I was looking at the JCSP library that puts PI-calculus primitives into Java, it did not look like many of the things you mentioned in Java, though SomnifugiJMS looks interesting as an alternate approach.</p>
<p>I hope you post a followup.  I look forward to learning more.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Vinoski</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219275</link>
		<dc:creator>Steve Vinoski</dc:creator>
		<pubDate>Mon, 22 Dec 2008 18:09:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219275</guid>
		<description>@Stephan: FWIW the posting definitely comes across as being defensive of Java and its offspring, and as being envious of Erlang.

&quot;I’ve been comparing communicating with immutable messages over queues to Erlang, and to me this looks comparable (scheduler and OTP aside).&quot;

But why is that comparison useful? Message passing is message passing. Is the fact that message passing in one language is comparable to message passing in another language enough to declare that &quot;there isn’t as much difference between concurrency in different languages as people want you to believe there is!&quot; Of course not. And that&#039;s the problem I have with this piece -- it glosses over way too many details and as a result reaches conclusions that are inaccurate and unsound.</description>
		<content:encoded><![CDATA[<p>@Stephan: FWIW the posting definitely comes across as being defensive of Java and its offspring, and as being envious of Erlang.</p>
<p>&#8220;I’ve been comparing communicating with immutable messages over queues to Erlang, and to me this looks comparable (scheduler and OTP aside).&#8221;</p>
<p>But why is that comparison useful? Message passing is message passing. Is the fact that message passing in one language is comparable to message passing in another language enough to declare that &#8220;there isn’t as much difference between concurrency in different languages as people want you to believe there is!&#8221; Of course not. And that&#8217;s the problem I have with this piece &#8212; it glosses over way too many details and as a result reaches conclusions that are inaccurate and unsound.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219262</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 22 Dec 2008 16:40:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219262</guid>
		<description>&quot;[...] and you’ve completely missed the most important part of Erlang parallelism: the pi calculus.&quot;

As this is  only a blog post and the Doug book is several hundreds of pages long (and the concurrency chapter in the Erlang book on my dessk is much longer than the post), obviously the post is not complete. 

It would be nice if you would fill in the gaps and write a post on your own for all of us to learn. Thanks.

&quot;It’d be nice if people saying “there are only N kinds” knew what kinds there were.&quot;

Update: Compare this to &lt;i&gt;&quot;There are mainly two different types of concurrency&quot;&lt;/i&gt;. I let the reader find the difference as an exercise.


</description>
		<content:encoded><![CDATA[<p>&#8220;[...] and you’ve completely missed the most important part of Erlang parallelism: the pi calculus.&#8221;</p>
<p>As this is  only a blog post and the Doug book is several hundreds of pages long (and the concurrency chapter in the Erlang book on my dessk is much longer than the post), obviously the post is not complete. </p>
<p>It would be nice if you would fill in the gaps and write a post on your own for all of us to learn. Thanks.</p>
<p>&#8220;It’d be nice if people saying “there are only N kinds” knew what kinds there were.&#8221;</p>
<p>Update: Compare this to <i>&#8220;There are mainly two different types of concurrency&#8221;</i>. I let the reader find the difference as an exercise.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219261</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 22 Dec 2008 16:37:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219261</guid>
		<description>@Steve: Envy? As a Scala user? Probably not.

&quot;[...] concurrency primitives are therefore really no different than those of language Y is way off the mark.&quot;

Am I mixing message passing with threads? I don&#039;t think so. I&#039;ve been comparing communicating with immutable messages over queues to Erlang, and to me this looks comparable (scheduler and OTP aside).</description>
		<content:encoded><![CDATA[<p>@Steve: Envy? As a Scala user? Probably not.</p>
<p>&#8220;[...] concurrency primitives are therefore really no different than those of language Y is way off the mark.&#8221;</p>
<p>Am I mixing message passing with threads? I don&#8217;t think so. I&#8217;ve been comparing communicating with immutable messages over queues to Erlang, and to me this looks comparable (scheduler and OTP aside).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Haugeland</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219257</link>
		<dc:creator>John Haugeland</dc:creator>
		<pubDate>Mon, 22 Dec 2008 16:28:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219257</guid>
		<description>There are _lots_ of other kinds of parallelism, and you&#039;ve completely missed the most important part of Erlang parallelism: the pi calculus.  If you were to pick up a language like Ada or Fortress, you&#039;d know about three more kinds of parallelism overnight.  Offhand, I can name nine, and I bet there are quite a few I don&#039;t know about.

It&#039;d be nice if people saying &quot;there are only N kinds&quot; knew what kinds there were.</description>
		<content:encoded><![CDATA[<p>There are _lots_ of other kinds of parallelism, and you&#8217;ve completely missed the most important part of Erlang parallelism: the pi calculus.  If you were to pick up a language like Ada or Fortress, you&#8217;d know about three more kinds of parallelism overnight.  Offhand, I can name nine, and I bet there are quite a few I don&#8217;t know about.</p>
<p>It&#8217;d be nice if people saying &#8220;there are only N kinds&#8221; knew what kinds there were.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Vinoski</title>
		<link>http://codemonkeyism.com/concurrency-rant-different-types-of-concurrency-and-why-lots-of-people-already-use-erlang-concurrency/comment-page-1/#comment-219231</link>
		<dc:creator>Steve Vinoski</dc:creator>
		<pubDate>Mon, 22 Dec 2008 15:41:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.codemonkeyism.com/?p=402#comment-219231</guid>
		<description>Sounds like some Java advocate has Erlang envy...

Yes, if you stand back far enough, you start to see common concurrency patterns in a variety of different technologies. That&#039;s a no-brainer; there are only so many ways to do this sort of stuff. But to then draw the conclusion that language X concurrency primitives are therefore really no different than those of language Y is way off the mark. You&#039;re incorrectly mixing very, very different levels of abstraction.</description>
		<content:encoded><![CDATA[<p>Sounds like some Java advocate has Erlang envy&#8230;</p>
<p>Yes, if you stand back far enough, you start to see common concurrency patterns in a variety of different technologies. That&#8217;s a no-brainer; there are only so many ways to do this sort of stuff. But to then draw the conclusion that language X concurrency primitives are therefore really no different than those of language Y is way off the mark. You&#8217;re incorrectly mixing very, very different levels of abstraction.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Database Caching 7/35 queries in 0.039 seconds using disk

Served from: codemonkeyism.com @ 2012-05-17 09:53:24 -->
