I'm going to trail off this thread and change its name because I'm changing the subject a bit. Everybody seems to agree that occam is "dead" but is still the best way to do things, which is of course ironic. I have long wanted to move it in a more practical direction while keeping its cleanness and simplicity (NO OO), and now may have a business route to that (more on that later). I want to get some opinions from the list.

First, I don't see why anyone should believe occam is dead, unless (unbeknownst to me) the Kent folk have ceased support of occam-pi.

Second, I don't see why OO has to be unclean or 'un-simple'. Surely, it's the interpretation of OO, in Java and C++, that's the problem. However, I would certainly agree that inheritance is also a problem, as it lacks a simple and coherent semantics.

IMHO, we need both process and object abstraction. They can co-exist within a simple model, where every object has a single owner at any time. Object and value can pass between processes. (Besides, do you really want to live without defining lists, stacks, queues, trees etc.?)

The longer I have tinkered with Honeysuckle, the more I am convinced that service protocol is the right way to raise the level of abstraction from a simple channel. It is natural and intuitive, and is applicable to everything from flip-flop and gate to distributed (client-server) computing. It also extends the formal foundation, bringing guaranteed a priori deadlock freedom (via static verification which can built into the compiler – no need to hire mathematicians to prove anything).

A compiler is under development (progressing well) that targets CSP initially.