This post originated from an RSS feed registered with .NET Buzz
by Udi Dahan.
Original Post: Concurrency just isn't
Feed Title: Udi Dahan - The Software Simplist
Feed URL: http://feeds.feedburner.com/UdiDahan-TheSoftwareSimplist
Feed Description: I am a software simplist. I make this beast of architecting, analysing, designing, developing, testing, managing, deploying software systems simple.
This blog is about how I do it.
I'm cleaning out a backlog of responses to things I've read and Patrick Logan's "Concurrency Oriented Programming" is really a "me-too" on the "extralingual concurrency mechanisms" point.
Concurrency that is not governed by some over-arching rules could probably only be understood by the insane. In order to bring concurrency to the masses, it must be made simpler. The way to make it simpler is to take it away.
What I mean is this: If we were to describe concurrency at two separate levels, things could be quite understandable. The lower level is totally synchronous, with no concurrency whatsoever. Procedure-oriented if you will. Most everybody gets that. Now package that "procedure" into a "module" that does its work as a result of receiving some message/event. Easy so far.
The higher level is just to take a bunch of modules and get them to pass messages to each other. It's simple, pipeline thinking. The programmer doesn't have to deal with the complexities of concurrency in every line of code they write. Because, let's face it, we don't want a bunch of insane programmers running around.
This is also known as the Active-Object pattern, in the UML.
You want to exploit concurrency enabled hardware? Help make sure that software that runs on it is simple.