Many thanks to Luke Gorrie for pointing out Hoare's _Communicating
Sequential Processes_ (CSP). That book is hard to find below US$70.
I found a copy via Amazon.com for US$50, but the seller had to give me
a refund when he discovered that his inventory system lied. :-( I
managed to find another just yesterday for US$42. :-) Hopefully this
one will be able to deliver.
For some reason, I'd written myself a reminder note to watch the
proceedings for the Communicating Process Architectures 2002
conference. (This was before the conference took place.) I finally
got around to looking at it again:
http://www.wotug.org/cpa2002/programme.shtml (*).
[The CPA conference papers don't seem to use Joe's "Concurrency-
Oriented Programming Language" term. But a lot of spend a lot of
time in or around CSP theory.]
Following the link to the JCSP project,
http://www.cs.ukc.ac.uk/projects/ofa/jcsp/, led to enlightenment for a
kind. Peter Welch's (long!) slide presentations have
interesting stuff. Including the following (typos are mine(**)):
// "Objects Considered Harmful"
class Thingie {
private:
int count;
public:
method1() {
count = 42;
thing.func();
// What is the value of count here??
// 42? 43? Something else?
}
method2() {
count++;
}
}
You don't know if the thing object's func() method might end up
calling (directly or indirectly) Thingie's method2(). Java's
"synchronized" monitor locks won't help. "This lack of ability to
reason locally about private fields is strangely familiar. In the bad
old days, free use of global variables led us into exactly the same
mess. Structured programming led us out of that mire. Is object
orientation taking us back in?"
This is preaching to the choir for readers here, yet much of what I've
been reading this evening has triggered several, "I hadn't quite
boiled things down to _that_ before."
To make a long story shorter, I'm really looking forward to the
arrival of Hoare's book.
-Scott
(*) Ah, silly me, I only just found the magic hyperlink to find the
conferences full-text papers! On the left sidebar, under "Practice",
follow the "Documents" link, then "Papers", then choose the
"Communicating Process Architectures 2002" multibox thingie.
(**) I don't do Java much, so the example I cooked up may very well be
bad Java.(***)
(***) Never mind....