<?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/"
	>

<channel>
	<title>Conceptric &#187; concurrency</title>
	<atom:link href="http://www.conceptric.co.uk/tag/concurrency/feed" rel="self" type="application/rss+xml" />
	<link>http://www.conceptric.co.uk</link>
	<description>Ideas and Applications</description>
	<lastBuildDate>Sat, 31 Jul 2010 20:30:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>My sequential diploma</title>
		<link>http://www.conceptric.co.uk/my-sequential-diploma.htm</link>
		<comments>http://www.conceptric.co.uk/my-sequential-diploma.htm#comments</comments>
		<pubDate>Sat, 25 Oct 2008 17:13:11 +0000</pubDate>
		<dc:creator>James Whinfrey</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Personal Perspectives]]></category>
		<category><![CDATA[Posts]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[distributed computing]]></category>
		<category><![CDATA[open university]]></category>

		<guid isPermaLink="false">http://www.conceptric.co.uk/?p=84</guid>
		<description><![CDATA[Another Open University course completed having raised my awareness of the nightmare of true concurrent programming. There has to be an easier way?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still working towards an <abbr title="Open University">OU</abbr> <a href="http://www3.open.ac.uk/courses/bin/p12.dll?Q01D12">Diploma in Computing</a>, and taking my time about it, hence the title. Despite this theme, my last module in developing concurrent distributed systems &#8212; catchy title, but accurate  &#8212; opened up the world of concurrency, and the ease with which truly parallel applications can be developed using modern tools. Ha, as far as I can tell Java is pretty good in the concurrent minefield of a mutable state environment, but limited IDEs are the equivalent of wandering into it with a blindfold. </p>
<p>The problem is trying to decide which of these mutable resources are likely to be accessed in a concurrent fashion, provide locks to enforce mutual exclusivity; ensuring no other processes is working from an intermediate, invalid state; and all without becoming deadlocked. Traditional debugging and even test&#8212;driven approaches aren&#8217;t much help, because the errors are dependent on the order in which the processes are scheduled to be executed; not very repeatable, and certainly not controllable.</p>
<p>So the course left me itching to have a go, but aware that concurrent object oriented development needs to be done in the right language, oh, and very carefully. A little reading around the topic lead me to the idea of immutable state development. </p>
<p>Now in <acronym title="Object Oriented Programming">OOP</acronym> terms an immutable state is not very helpful, nothing much ever happens. We rely on the software state being stored in the attributes of all those objects, and actions being driven by the exchange of messages between them. But in the <a href="http://en.wikipedia.org/wiki/Functional_programming">functional programming paradigm</a> an immutable state is implicit, since the state is stored in the way functions execute each other, and themselves, no data is actually stored in variables. This means that processes can be executed in any order without any danger of seeing an invalid state: no need for any locking and a much simpler programming job!</p>
<p>I&#8217;ve only just started investigating these ideas, but with the thrust of computing performance in the direction of multiple processors, either on a single machine or via the &#8216;cloud&#8217;, it seems that concurrent, parallel programming may be very important in the future. A couple of languages I want to check out are <a href="http://www.erlang.org/">Erlang</a> and <a href="http://clojure.org/">Clojure</a>. Finally, I found the <a href="http://podcast.rubyonrails.org/">Ruby on Rails Podcast</a> <a href="http://podcast.rubyonrails.org/programs/1/episodes/erubycon-jim-weirich">interview with Jim Weirich</a> an interesting perspective on the programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.conceptric.co.uk/my-sequential-diploma.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
