<?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: Summer Lovin&#8217; Erlang</title>
	<atom:link href="http://www.linux-mag.com/id/6375/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.linux-mag.com/id/6375/</link>
	<description>Open Source, Open Standards</description>
	<lastBuildDate>Sat, 05 Oct 2013 13:48:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: fporcher</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5521</link>
		<dc:creator>fporcher</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5521</guid>
		<description>Starting a colum about Erlang is welcome and a must at the time the software industry is indeed lacking sound and powerful development frameworks to address the full potential of multiple-core multiple-CPU computers.&lt;br /&gt;
&lt;br /&gt;
Erlang is a full blown &quot;pure&quot; functional programming language strongly oriented towards concurrent programming.&lt;br /&gt;
&lt;br /&gt;
Apart from the powerful and very expressive clause-oriented syntactic constructs used to define functions, Erlang retains nothing from the declarative aspects usually associated with the family of logic programming languages ; there is no backtacking mechanism, nor unification operator.&lt;br /&gt;
&lt;br /&gt;
Indeed, Erlang native and powerful &quot;match&quot; operator is best described as a &quot;binding&quot; operator (tree-binding) that Lisp lovers have long known as the &quot;let&quot; construct.&lt;br /&gt;
&lt;br /&gt;
There is no set, setq, or equivalent, and therefore no assignment operator per se : once bound, the value of an Erlang variable cannot be changed.&lt;br /&gt;
&lt;br /&gt;
Along with message passing, this is precisely what makes Erlang so safe and easy to use for concurrent programming (ok, once the programmer has forgotten about idiosyncratic iterative constructs and acquainted himself with the more robust functional approach) : no shared memory, no shared state, and therefore no need for lock or semaphone.&lt;br /&gt;
&lt;br /&gt;
Sort of parallel programming made easy !&lt;br /&gt;
&lt;br /&gt;
As emphasized by Douglas, despite its roots in Telecom, Erlang should be seen as a general programming language and a platform of choice for today&#039;s concurrent programming.&lt;br /&gt;
&lt;br /&gt;
My feeling is that wide and successful Erlang adoption lies first of all in helping developpers to realize how easy the shift from iterative programming (OO or not) to functional programming.&lt;br /&gt;
&lt;br /&gt;
Franck PORCHER, Ph.D.&lt;br /&gt;
fporcher@smartech.pf</description>
		<content:encoded><![CDATA[<p>Starting a colum about Erlang is welcome and a must at the time the software industry is indeed lacking sound and powerful development frameworks to address the full potential of multiple-core multiple-CPU computers.</p>
<p>Erlang is a full blown &#8220;pure&#8221; functional programming language strongly oriented towards concurrent programming.</p>
<p>Apart from the powerful and very expressive clause-oriented syntactic constructs used to define functions, Erlang retains nothing from the declarative aspects usually associated with the family of logic programming languages ; there is no backtacking mechanism, nor unification operator.</p>
<p>Indeed, Erlang native and powerful &#8220;match&#8221; operator is best described as a &#8220;binding&#8221; operator (tree-binding) that Lisp lovers have long known as the &#8220;let&#8221; construct.</p>
<p>There is no set, setq, or equivalent, and therefore no assignment operator per se : once bound, the value of an Erlang variable cannot be changed.</p>
<p>Along with message passing, this is precisely what makes Erlang so safe and easy to use for concurrent programming (ok, once the programmer has forgotten about idiosyncratic iterative constructs and acquainted himself with the more robust functional approach) : no shared memory, no shared state, and therefore no need for lock or semaphone.</p>
<p>Sort of parallel programming made easy !</p>
<p>As emphasized by Douglas, despite its roots in Telecom, Erlang should be seen as a general programming language and a platform of choice for today&#8217;s concurrent programming.</p>
<p>My feeling is that wide and successful Erlang adoption lies first of all in helping developpers to realize how easy the shift from iterative programming (OO or not) to functional programming.</p>
<p>Franck PORCHER, Ph.D.<br />
<a href="mailto:fporcher@smartech.pf">fporcher@smartech.pf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: smedda</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5522</link>
		<dc:creator>smedda</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5522</guid>
		<description>Erlang is a &quot;telecom language&quot; because based on &quot;asynchronous message passing interface&quot;. Of course this avoid shared memory and thus locks, but it leads to duplicate information maintained in several processes, a need to keep it synchronized and a lot of crossing cases. Moreover lots of external interfaces like database access are not easy to use in an asynchronous way.&lt;br /&gt;
&lt;br /&gt;
In term of efficiency, you do have lock as a process cannot deal with the following message until it has finished with the previous one. You lose time as well in process switching and because each process has first to find to which information the message it received applies to.</description>
		<content:encoded><![CDATA[<p>Erlang is a &#8220;telecom language&#8221; because based on &#8220;asynchronous message passing interface&#8221;. Of course this avoid shared memory and thus locks, but it leads to duplicate information maintained in several processes, a need to keep it synchronized and a lot of crossing cases. Moreover lots of external interfaces like database access are not easy to use in an asynchronous way.</p>
<p>In term of efficiency, you do have lock as a process cannot deal with the following message until it has finished with the previous one. You lose time as well in process switching and because each process has first to find to which information the message it received applies to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hilbertastronaut</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5523</link>
		<dc:creator>hilbertastronaut</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5523</guid>
		<description>I didn&#039;t have much to say about your previous post because it&#039;s obvious that a good runtime that supports high-level language features is the right way to go about developing on multicore.  &lt;br /&gt;
&lt;br /&gt;
However, one shouldn&#039;t confuse a good runtime with the language built on top of it.  The latter is mostly syntax and for skilled programmers, syntax is just religion ;-)  Furthermore, one can build many different languages on top of the same runtime, which also can enable interoperation of the different languages&#039; data structures, and please the expert programmers who are particular about the syntax they use.  The nonexpert programmers (who are primarily domain experts and not hackers) shouldn&#039;t have to care about the syntax -- they only want to &quot;get things done&quot; and are willing to endure any arcane and annoying syntax in order to have libraries that let them solve their problems with a minimum of coding time.  (Perl, COBOL, APL, ...)&lt;br /&gt;
&lt;br /&gt;
Building a good runtime is hard and not as attractive for marketing as making a new language, hence it&#039;s not done very much.  Often the groups that do make an investment in a runtime do it to solve internal problems (e.g., &quot;How do we support the current ecosystem of multiple development languages, while sharing common system and debugging facilities?&quot;) which shouldn&#039;t be visible to ordinary programmers.  However, the really interesting features for parallelism and concurrency (e.g., load balancing, parallel garbage collection, reliability, debug traces, software transactional memory) are all in the runtime.</description>
		<content:encoded><![CDATA[<p>I didn&#8217;t have much to say about your previous post because it&#8217;s obvious that a good runtime that supports high-level language features is the right way to go about developing on multicore.  </p>
<p>However, one shouldn&#8217;t confuse a good runtime with the language built on top of it.  The latter is mostly syntax and for skilled programmers, syntax is just religion ;-)  Furthermore, one can build many different languages on top of the same runtime, which also can enable interoperation of the different languages&#8217; data structures, and please the expert programmers who are particular about the syntax they use.  The nonexpert programmers (who are primarily domain experts and not hackers) shouldn&#8217;t have to care about the syntax &#8212; they only want to &#8220;get things done&#8221; and are willing to endure any arcane and annoying syntax in order to have libraries that let them solve their problems with a minimum of coding time.  (Perl, COBOL, APL, &#8230;)</p>
<p>Building a good runtime is hard and not as attractive for marketing as making a new language, hence it&#8217;s not done very much.  Often the groups that do make an investment in a runtime do it to solve internal problems (e.g., &#8220;How do we support the current ecosystem of multiple development languages, while sharing common system and debugging facilities?&#8221;) which shouldn&#8217;t be visible to ordinary programmers.  However, the really interesting features for parallelism and concurrency (e.g., load balancing, parallel garbage collection, reliability, debug traces, software transactional memory) are all in the runtime.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dmpase</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5524</link>
		<dc:creator>dmpase</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5524</guid>
		<description>As a hard core geek I would love to believe that the main thing required for a programming language to succeed is technical superiority -- good syntax, good concepts/foundations, good run-time environment and good support. Unfortunately, as a former language designer for the HPC community my experience says otherwise. &lt;br /&gt;
&lt;br /&gt;
I was co-author on a functional programming language (called &quot;Flo&quot;) for a company called Floating-Point Systems in the mid-80&#039;s and co-author on the CRAFT Fortran extensions for Cray Research in the mid-90&#039;s. Both languages were designed with the HPC community in mind, both had the full support of the companies involved, both had many person-years of effort behind them, and both were received enthusiastically by their community, at least for a while. Neither language lasted more than a few years and reasons cited for their demise were never technical merit. &lt;br /&gt;
&lt;br /&gt;
Another functional programming language, Sisal, also experienced a similar fate. Many years of effort were poured into its implementation, a community at Lawrence Livermore National Lab used the language (at least apparently) with enthusiasm. High Performance Fortran (HPF) also rose and fell, as have many others.&lt;br /&gt;
&lt;br /&gt;
Having a high-quality language, compiler and runtime environment with all the necessary tools for support, at least in each of these cases seemed to be a necessary condition but by itself it was not sufficient. It also had to somehow be accessible over a wide range of architectures and a long enough period of time to develop the programming skills necessary for wide-spread adoption. It needed to be taught in Universities and it needed to be perceived as something that would be around for a long enough time that substantial SW development in that language would not be perceived as money wasted.&lt;br /&gt;
&lt;br /&gt;
I&#039;m not saying this to dismiss Erlang - quite the opposite. I don&#039;t know whether Erlang is the answer to our parallel programming needs or not, but I do know intimately the requirements of parallel programming and the merits of functional languages and Erlang sounds like it has potential. &lt;br /&gt;
&lt;br /&gt;
If we assume that Erlang is the right combination of features and implementation, my question would be how do we make sure it doesn&#039;t fail for some of these non-technical reasons? How do we make it happen? &quot;Build it and they will come&quot; is just wishful thinking.</description>
		<content:encoded><![CDATA[<p>As a hard core geek I would love to believe that the main thing required for a programming language to succeed is technical superiority &#8212; good syntax, good concepts/foundations, good run-time environment and good support. Unfortunately, as a former language designer for the HPC community my experience says otherwise. </p>
<p>I was co-author on a functional programming language (called &#8220;Flo&#8221;) for a company called Floating-Point Systems in the mid-80&#8242;s and co-author on the CRAFT Fortran extensions for Cray Research in the mid-90&#8242;s. Both languages were designed with the HPC community in mind, both had the full support of the companies involved, both had many person-years of effort behind them, and both were received enthusiastically by their community, at least for a while. Neither language lasted more than a few years and reasons cited for their demise were never technical merit. </p>
<p>Another functional programming language, Sisal, also experienced a similar fate. Many years of effort were poured into its implementation, a community at Lawrence Livermore National Lab used the language (at least apparently) with enthusiasm. High Performance Fortran (HPF) also rose and fell, as have many others.</p>
<p>Having a high-quality language, compiler and runtime environment with all the necessary tools for support, at least in each of these cases seemed to be a necessary condition but by itself it was not sufficient. It also had to somehow be accessible over a wide range of architectures and a long enough period of time to develop the programming skills necessary for wide-spread adoption. It needed to be taught in Universities and it needed to be perceived as something that would be around for a long enough time that substantial SW development in that language would not be perceived as money wasted.</p>
<p>I&#8217;m not saying this to dismiss Erlang &#8211; quite the opposite. I don&#8217;t know whether Erlang is the answer to our parallel programming needs or not, but I do know intimately the requirements of parallel programming and the merits of functional languages and Erlang sounds like it has potential. </p>
<p>If we assume that Erlang is the right combination of features and implementation, my question would be how do we make sure it doesn&#8217;t fail for some of these non-technical reasons? How do we make it happen? &#8220;Build it and they will come&#8221; is just wishful thinking.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dmpase</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5525</link>
		<dc:creator>dmpase</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5525</guid>
		<description>To my earlier comment I probably ought to add that IMHO Erlang needs to play nicely with existing software. I know that might add some ugliness to Erlang, but I think excluding access to existing code may create too much of a barrier for wide adoption.&lt;br /&gt;
&lt;br /&gt;
When C came out it played in a different space than Fortran, but as it gained popularity eventually it needed to play nicely with Fortran. C++ was inherently compatible with C from the start. Java can interoperate with C/C++ and (even) Fortran. &lt;br /&gt;
&lt;br /&gt;
There is a huge mass of existing software that, frankly, the community cannot afford to rewrite just because the language is different. Much of the software is potentially compatible, at least in concept, with functional programming ideals. For example, there are many algebraic functions such as SQRT, SIN, COS and such, that could be interlaced with Erlang relatively easily. On the other hand, much of the existing software deals with access to hardware and hardware inherently manages state, which is more of a problem for functional languages.&lt;br /&gt;
&lt;br /&gt;
However this junction is managed, it seems clear that Erlang cannot simply live in its own world. Somehow it needs to play nicely in the sandbox with other software. Maybe it does already, I don&#039;t know. Could someone who knows Erlang comment on this? (Dr. Eadline?)&lt;br /&gt;
&lt;br /&gt;
Douglas Pase, PhD&lt;br /&gt;
douglas@pase.us</description>
		<content:encoded><![CDATA[<p>To my earlier comment I probably ought to add that IMHO Erlang needs to play nicely with existing software. I know that might add some ugliness to Erlang, but I think excluding access to existing code may create too much of a barrier for wide adoption.</p>
<p>When C came out it played in a different space than Fortran, but as it gained popularity eventually it needed to play nicely with Fortran. C++ was inherently compatible with C from the start. Java can interoperate with C/C++ and (even) Fortran. </p>
<p>There is a huge mass of existing software that, frankly, the community cannot afford to rewrite just because the language is different. Much of the software is potentially compatible, at least in concept, with functional programming ideals. For example, there are many algebraic functions such as SQRT, SIN, COS and such, that could be interlaced with Erlang relatively easily. On the other hand, much of the existing software deals with access to hardware and hardware inherently manages state, which is more of a problem for functional languages.</p>
<p>However this junction is managed, it seems clear that Erlang cannot simply live in its own world. Somehow it needs to play nicely in the sandbox with other software. Maybe it does already, I don&#8217;t know. Could someone who knows Erlang comment on this? (Dr. Eadline?)</p>
<p>Douglas Pase, PhD<br />
<a href="mailto:douglas@pase.us">douglas@pase.us</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hilbertastronaut</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5526</link>
		<dc:creator>hilbertastronaut</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5526</guid>
		<description>smedda:  Have you heard of Mnesia?&lt;br /&gt;
&lt;br /&gt;
http://www.erlang.org/doc/apps/mnesia/index.html</description>
		<content:encoded><![CDATA[<p>smedda:  Have you heard of Mnesia?</p>
<p><a href="http://www.erlang.org/doc/apps/mnesia/index.html" rel="nofollow">http://www.erlang.org/doc/apps/mnesia/index.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bradadkins</title>
		<link>http://www.linux-mag.com/id/6375/#comment-5527</link>
		<dc:creator>bradadkins</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/6375/#comment-5527</guid>
		<description>It should also be noted that CouchDB looks very promising as a document oriented asynchronous database system. Written in Erlang.&lt;br /&gt;
http://incubator.apache.org/couchdb/</description>
		<content:encoded><![CDATA[<p>It should also be noted that CouchDB looks very promising as a document oriented asynchronous database system. Written in Erlang.<br />
<a href="http://incubator.apache.org/couchdb/" rel="nofollow">http://incubator.apache.org/couchdb/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>