<?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"
	>
<channel>
	<title>Comments on: Erlang does have shared memory</title>
	<atom:link href="http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/feed/" rel="self" type="application/rss+xml" />
	<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/</link>
	<description>Adventures in Open Source Erlang</description>
	<pubDate>Sat, 22 Nov 2008 03:56:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>By: Balu</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-282794</link>
		<dc:creator>Balu</dc:creator>
		<pubDate>Mon, 20 Oct 2008 22:23:44 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-282794</guid>
		<description>Since ETS is "shared memory", will using it invalidate Erlang's multi-core scalability advantage?</description>
		<content:encoded><![CDATA[<p>Since ETS is &#8220;shared memory&#8221;, will using it invalidate Erlang&#8217;s multi-core scalability advantage?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ulf Wiger</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-154003</link>
		<dc:creator>Ulf Wiger</dc:creator>
		<pubDate>Sun, 18 May 2008 08:43:03 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-154003</guid>
		<description>I have also reacted to the claims that Erlang lacks shared memory. My main objection is that it's too broad a statement, along the lines of "erlang doesn't have memory management" - it does, it's just that it's automatic.

Semantically, Erlang copies messages and data, but it doesn't always do so in practice. Since the language doesn't allow you to address memory directly, the underlying implementation is free to put all erlang processes in the same memory space without sacrificing robustness*. Ets tables are also kept in the same memory space. Furthermore, objects in Ets tables are not garbage collected, which makes a difference for very large data sets.

* Experimental versions of the VM have even used one global heap for all processes, and passed all messages by reference. Unfortunately, a new garbage collector would have been needed to make the implementation really useful in practice.</description>
		<content:encoded><![CDATA[<p>I have also reacted to the claims that Erlang lacks shared memory. My main objection is that it&#8217;s too broad a statement, along the lines of &#8220;erlang doesn&#8217;t have memory management&#8221; - it does, it&#8217;s just that it&#8217;s automatic.</p>
<p>Semantically, Erlang copies messages and data, but it doesn&#8217;t always do so in practice. Since the language doesn&#8217;t allow you to address memory directly, the underlying implementation is free to put all erlang processes in the same memory space without sacrificing robustness*. Ets tables are also kept in the same memory space. Furthermore, objects in Ets tables are not garbage collected, which makes a difference for very large data sets.</p>
<p>* Experimental versions of the VM have even used one global heap for all processes, and passed all messages by reference. Unfortunately, a new garbage collector would have been needed to make the implementation really useful in practice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Your Bear</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-153327</link>
		<dc:creator>Your Bear</dc:creator>
		<pubDate>Sat, 17 May 2008 07:37:02 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-153327</guid>
		<description>Hi Guys!

@Yariv: I agree with you, ets is a shared area of mutable storage.

@Orbitz: We have I/O and if you don't want to carry around the updated world in your call stacks, you better have some side effects. Yes, Haskell's answer to this are monads. By the way, bang operation in Erlang is a side effect as well.

@Hypothetical Guy: The message passing etc we all like Erlang for is otherwise known as actors model. You can add that to an OOP lang as well, with Scala being an example. See &lt;a href="http://dinbjoern.blogspot.com/2008/05/oop-and-cop.html" rel="nofollow"&gt;OOP and COP&lt;/a&gt;. Because destructive updates are what most of us were raised with and many algorithms and data structures exist using this feature, it is easier and I guess Scala will overtake Erlang as actor language at one time in point, although I hope that having that will make it too easy too make a mess of already complex concurrent or even distributed problem solutions.</description>
		<content:encoded><![CDATA[<p>Hi Guys!</p>
<p>@Yariv: I agree with you, ets is a shared area of mutable storage.</p>
<p>@Orbitz: We have I/O and if you don&#8217;t want to carry around the updated world in your call stacks, you better have some side effects. Yes, Haskell&#8217;s answer to this are monads. By the way, bang operation in Erlang is a side effect as well.</p>
<p>@Hypothetical Guy: The message passing etc we all like Erlang for is otherwise known as actors model. You can add that to an OOP lang as well, with Scala being an example. See <a href="http://dinbjoern.blogspot.com/2008/05/oop-and-cop.html" rel="nofollow">OOP and COP</a>. Because destructive updates are what most of us were raised with and many algorithms and data structures exist using this feature, it is easier and I guess Scala will overtake Erlang as actor language at one time in point, although I hope that having that will make it too easy too make a mess of already complex concurrent or even distributed problem solutions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: orbitz</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-152325</link>
		<dc:creator>orbitz</dc:creator>
		<pubDate>Thu, 15 May 2008 13:29:34 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-152325</guid>
		<description>Sure, you can write one with the other.  But doesn't mean Erlang has shared memory, just means you have the ability to express the semantics of shared memory in Erlang.  I'd be surprised if you couldn't.</description>
		<content:encoded><![CDATA[<p>Sure, you can write one with the other.  But doesn&#8217;t mean Erlang has shared memory, just means you have the ability to express the semantics of shared memory in Erlang.  I&#8217;d be surprised if you couldn&#8217;t.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yariv</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-152145</link>
		<dc:creator>Yariv</dc:creator>
		<pubDate>Thu, 15 May 2008 07:26:48 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-152145</guid>
		<description>Whether you define ets as shared memory or not, you can't deny that as far as the programmer is concerned ets shares some semantics with traditional shared memory implementations. That's not a bad thing by any means -- it's just interesting to observe the duality between message passing and shared memory + locks. Given one you can implement the other.</description>
		<content:encoded><![CDATA[<p>Whether you define ets as shared memory or not, you can&#8217;t deny that as far as the programmer is concerned ets shares some semantics with traditional shared memory implementations. That&#8217;s not a bad thing by any means &#8212; it&#8217;s just interesting to observe the duality between message passing and shared memory + locks. Given one you can implement the other.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt W</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-152000</link>
		<dc:creator>Matt W</dc:creator>
		<pubDate>Thu, 15 May 2008 02:03:52 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-152000</guid>
		<description>Hey Yariv,

I love Erlyweb and I keep up with your blog (I even scraped some HTML so I could figure out how to associate an atom feed with a website ;) ). Thanks for both!

I just wanted to let you know I made a google custom search for Erlang and yarivsblog.com is one of the few site that I'm limiting the search to.

You can find it at http://search.dawsdesign.com

I hope you find it useful!</description>
		<content:encoded><![CDATA[<p>Hey Yariv,</p>
<p>I love Erlyweb and I keep up with your blog (I even scraped some HTML so I could figure out how to associate an atom feed with a website ;) ). Thanks for both!</p>
<p>I just wanted to let you know I made a google custom search for Erlang and yarivsblog.com is one of the few site that I&#8217;m limiting the search to.</p>
<p>You can find it at <a href="http://search.dawsdesign.com" rel="nofollow">http://search.dawsdesign.com</a></p>
<p>I hope you find it useful!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: orbitz</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-151645</link>
		<dc:creator>orbitz</dc:creator>
		<pubDate>Wed, 14 May 2008 13:46:07 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-151645</guid>
		<description>To continue my previous thought, this sounds somewhat analogous to saying Haskell has side effects because you can create monads.</description>
		<content:encoded><![CDATA[<p>To continue my previous thought, this sounds somewhat analogous to saying Haskell has side effects because you can create monads.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hypothetical Labs</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-151577</link>
		<dc:creator>Hypothetical Labs</dc:creator>
		<pubDate>Wed, 14 May 2008 10:09:55 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-151577</guid>
		<description>[...] Yariv makes a good point about ets being Erlang&#8217;s sort of equivalent to shared memory. I agree totally. [...]</description>
		<content:encoded><![CDATA[<p>[...] Yariv makes a good point about ets being Erlang&#8217;s sort of equivalent to shared memory. I agree totally. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: orbitz</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-151366</link>
		<dc:creator>orbitz</dc:creator>
		<pubDate>Wed, 14 May 2008 02:30:33 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-151366</guid>
		<description>Hrm, I think this post is kind of cheap.  Erlang does not have shared mutable memory, it does however have the ability to write modules with the same semantics as shared mutable memory.  Heck, it's a programming language, no surprise there.  This is a property of a module though, not the language.  Perhaps a more accurate title: Erlang does not have shared mutable memory, but you can simulate it if you want.</description>
		<content:encoded><![CDATA[<p>Hrm, I think this post is kind of cheap.  Erlang does not have shared mutable memory, it does however have the ability to write modules with the same semantics as shared mutable memory.  Heck, it&#8217;s a programming language, no surprise there.  This is a property of a module though, not the language.  Perhaps a more accurate title: Erlang does not have shared mutable memory, but you can simulate it if you want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim Bates</title>
		<link>http://yarivsblog.com/articles/2008/05/13/erlang-does-have-shared-memory/#comment-151314</link>
		<dc:creator>Tim Bates</dc:creator>
		<pubDate>Wed, 14 May 2008 00:43:09 +0000</pubDate>
		<guid isPermaLink="false">http://yarivsblog.com/?p=188#comment-151314</guid>
		<description>No, the process dictionary represents mutable state (to a newcomer to Erlang), not shared memory - since it is constrained to a single process (the opposite of "shared"). And even the process dictionary could be implemented using Erlang's process model. ETS and the process dictionary are just optimizations, with their own performance implications and caveats, but they don't break Erlang's no-shared-memory model.</description>
		<content:encoded><![CDATA[<p>No, the process dictionary represents mutable state (to a newcomer to Erlang), not shared memory - since it is constrained to a single process (the opposite of &#8220;shared&#8221;). And even the process dictionary could be implemented using Erlang&#8217;s process model. ETS and the process dictionary are just optimizations, with their own performance implications and caveats, but they don&#8217;t break Erlang&#8217;s no-shared-memory model.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
