<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Micah Elliott &#187; parallel</title>
	<atom:link href="http://micahelliott.com/tag/parallel/feed/" rel="self" type="application/rss+xml" />
	<link>http://micahelliott.com</link>
	<description>Stories from my Startup Journey</description>
	<lastBuildDate>Mon, 29 Nov 2010 07:46:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
<image>
  <link>http://micahelliott.com</link>
  <url>http://micahelliott.com/mde-gravatar7.png</url>
  <title>Micah Elliott</title>
</image>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.6.3" -->
	<copyright>Copyright &#38;#xA9; Micah Elliott 2010 </copyright>
	<managingEditor>mde@micahelliott.com (Micah Elliott)</managingEditor>
	<webMaster>mde@micahelliott.com (Micah Elliott)</webMaster>
	<category>posts</category>
	<image>
		<url>http://micahelliott.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Micah Elliott &#187; parallel</title>
		<link>http://micahelliott.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Stories from my Startup Journey</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &amp; Culture" />
	<itunes:author>Micah Elliott</itunes:author>
	<itunes:owner>
		<itunes:name>Micah Elliott</itunes:name>
		<itunes:email>mde@micahelliott.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://micahelliott.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>1983-96: The Golden Age of Programming Languages</title>
		<link>http://micahelliott.com/2008/06/1983-96-the-golden-age-of-programming-languages/</link>
		<comments>http://micahelliott.com/2008/06/1983-96-the-golden-age-of-programming-languages/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 08:00:00 +0000</pubDate>
		<dc:creator>Micah</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[parallel]]></category>

		<guid isPermaLink="false">http://blog.micahelliott.com/?p=43</guid>
		<description><![CDATA[These are the languages that I consider interesting* today. I&#8217;ve included their approximate year of first release. Also, a look at the importance of support for concurrency. As you can see, these fit into a surprisingly small time window, which I&#8217;ll call the Golden Age.** I wanted to make it a round decade, but had [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-style: italic;">These are the languages that I consider interesting* today.  I&#8217;ve included their approximate year of first release.  Also, a look at the importance of support for concurrency.</span></p>
<p>As you can see, these fit into a surprisingly small time window, which I&#8217;ll call the <span style="font-style: italic;">Golden Age</span>.**  I wanted to make it a round decade, but had to include Common Lisp.
<ul>
<li>C++ (1983)</li>
<li>Common Lisp (1984)</li>
<li>Erlang (1986)</li>
<li>Haskell (1987)</li>
<li>Perl (1987)</li>
<li>Tcl (1988)</li>
<li>Fortran90 (1991)</li>
<li> Python (1991)</li>
<li>Lua (1993)</li>
<li>Ruby (1993)</li>
<li>Java (1995)</li>
<li>Javascript (1995)</li>
<li>PHP (1995)</li>
<li>OCaml (1996)</li>
</ul>
<p>What&#8217;s happened since 1996?  Not much, besides refinement and extension.  It would seem that it takes a decade or two for a language to really stabilize and see wide adoption.*  But why did the innovation come to a screeching halt in 1996?</p>
<p>Here is a sampling of some languages that are sprouting up this decade.  Maybe you&#8217;ve <span style="font-style: italic;">heard</span> of some of them.  But <span style="font-style: italic;">adopted</span> one?  Not likely.
<ul>
<li><a href="http://www.scala-lang.org/">Scala</a></li>
<li><a href="http://www.co-array.org/">Co-Array Fortran</a> (features merging into Fortran)</li>
<li><a href="http://en.wikipedia.org/wiki/Unified_Parallel_C">Unified Parallel C</a></li>
<li><a href="http://en.wikipedia.org/wiki/Fortress_%28programming_language%29">Fortress</a></li>
<li><a href="http://chapel.cs.washington.edu/">Chapel</a> (vaporware targeted for 2010)</li>
<li><a href="http://www.research.ibm.com/x10/">X10</a> (secret vaporware)</li>
<li><a href="http://www.cs.washington.edu/research/zpl/home/index.html">ZPL</a> (vaporware)</li>
<li><a href="http://titanium.cs.berkeley.edu/">Titanium</a> (not even in Wikipedia, just a Java dialect)</li>
</ul>
<p>What do all these have in common?  <span style="font-weight: bold;">They&#8217;re trying to tackle concurrency.</span>  But none of these have significant momentum (arguably Scala has <span style="font-style: italic;">some</span>).  It&#8217;s probably at least 10 years before any of these get major traction.  Will any of these take off the way the languages of the Golden Age have?  Or will we just keep extending mostly imperative languages (<a href="http://www.openmp.org/">OpenMP</a>, <a href="http://www.threadingbuildingblocks.org/">Threading Building Blocks</a>, vendor-specific compiler directives, etc).  Where does FP fit into all this?  <span style="font-weight: bold;">Will the functional languages see a resurgence based on their natural fitness for concurrency?</span>  That&#8217;s my bet.</p>
<p>Which of the Golden Age languages have the cleanest concurrency models?  I&#8217;ll be exploring that question in future posts.</p>
<p>Why do I care about this?  I simply want to use the <span style="font-style: italic;">best language for the job</span> (another future post).  But most jobs these days are needing to scale to multiple cores/machines (the &#8220;<a href="http://www.gotw.ca/publications/concurrency-ddj.htm">free lunch is over</a>&#8221; horse is dead; I won&#8217;t belabor that here).  Everyone is talking about this unaddressed barrier to writing parallel apps effectively, but most programmers have no solution in mind.  A language with clean concurrency support is essential so that applications will scale well, with little effort, and be easy to write, quickly and correctly.  Let&#8217;s discover some and let everybody know.</p>
<p><span style="color: rgb(102, 102, 102);font-size:85%;" ><span style="font-style: italic;">Notes: Some of these dates were hard to locate and may be inaccurate.  You may disagree with my unspecified definition of interesting.  Scheme and Smalltalk are worthy of mention, but they make the window too big.  I&#8217;ve omitted any language from Microsoft: they generally don&#8217;t last; those that do (VB, C#) are an uninteresting commercial niche; and they are always brown cows.</span></span><span style="font-style: italic; color: rgb(102, 102, 102);font-size:85%;" >  I won&#8217;t try to prove the &#8220;decade for adoption&#8221; theory, but you can go search for data on when Java started to supplant C++; and Python/Ruby might be starting to do the same to Java (even though Java is the younger).</span><br /><span style="font-style: italic;"><br />Related articles:</span>
<ul>
<li><a href="http://www.eetimes.com/showArticle.jhtml?articleID=196600735"><span class="storyheadline"></span></a><a href="http://en.wikipedia.org/wiki/Programming_language#History">Some programming language history</a></li>
<li><a href="http://www.levenez.com/lang/history.html">Language history graph</a></li>
<li><a href="http://en.wikipedia.org/wiki/Concurrent_computing#Concurrent_programming_languages">Some concurrent programming languages</a></li>
<li><a href="http://softwareblogs.intel.com/2007/02/23/do-we-need-another-parallel-programming-language/">Do we need another parallel programming language?</a></li>
<li><a href="http://www.eetimes.com/showArticle.jhtml?articleID=196600735"><span class="storyheadline">Cray, IBM, Sun weigh in on language</span></a></li>
<li><span class="storyheadline"><a href="http://www.infoq.com/presentations/erlang-software-for-a-concurrent-world">Joe Armstrong on Software for a Concurrent World (video)</a><br /></span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://micahelliott.com/2008/06/1983-96-the-golden-age-of-programming-languages/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

