|Hi David, Rick|
I agree completely that priority is not the priority, by a long chalk; it is how to program large numbers of processors.
While I doubt this is entirely a language issue – there is a desperate need IMHO to introduce apprenticeship in programming, as well as programming within schools, where at least a start has been made – we may need to raise the level of abstraction.
I'd beg that we strive to achieve an even greater degree of security and transparency than occam had, and that we address the need for 'packaging' (what someone at Inmos called "project modularity" (promoting reuse), as well as "system modularity" (affording (de)composition) without clutter. With Honeysuckle, I proposed layering instead : define components and interconnection separately (documenting a design), and then require that implementation refines it.
Honeysuckle also proposed raising the level of abstraction from channel to 'service' – a protocol defining how communication proceeds. I know deadlock is not the only demon that threatens parallel programs, but IMHO it remains the most insidious and arguably the biggest deterrent. Adopting server/client architecture at the root level does not introduce any additional work or restriction, but effectively slays that demon. (A service can reduce to a mere channel.) This does not preclude allowing "cyclic ordered processes" (as Dijkstra called them), which can be safely connected to a c/s network, and are deadlock-free.
The final major addition in Honeysuckle was recursive data types, allowing dynamic lists and trees.
I woud love to partake in any meeting on an occam successor. Please keep me listed!
PS A Honeysuckle draft manual, plus archive of papers can be found here
(I regret there is no compiler. I devoted my time to the design of the overall language.)
On 4 Oct 2012, at 23:51, David May wrote:
I would like to see an Occam-like language agreed, defined,
implemented and promoted in an open process.
I'm not interested in discussions about how to represent
priority. There were several very good reasons why this was
relegated to the 'configuration' section of the original language
specification. In the meantime, nothing has changed.
The occam-pi language is an over-extended version of occam
with no formal specification. Some of the novel features have no
efficient implementation in message-passing distributed memory
So my suggestion is that we start form occam2, and look at what
we need to add from occam3 and occam-pi. What is essential?
I've been working on language issues for quite a while now -
mainly looking at how we can really get value out of thousands
Not sure how best to do this but I'd like to see it happen. I'd be
happy to host a meeting.
On 4 Oct 2012, at 20:38, Rick Beton wrote:
I started the original discussion following Peter's 'Occam Obviously' presentation, but sadly the language discussion petered out, lapsing into a fascinating but many-year-long rehearsed discussions on priority.
My original hope was to seek an answer to this question: if the answer is Occam (obviously or otherwise), what will it take to make Occam generally usable? In its present form it is not so.
Then there's the question of aspiration versus practicalities. The first suggestion I made was for packages to be added to Occam-pi and I put it first deliberately. Not a new suggestion, this; in fact Occam3 had 'modules' way back in 19xx (choose your own xx). I don't really care for the details of the implementation, I'm much more concerned that Occam-pi/-tau should belong to a busy community, inspired by (a) clarity of thinking and (b) a need to make things happen.
If this is wishful thinking, then alas Occam is not obviously going ever to be more than a teaching tool.
So, what next?
Open Channel Publishing Ltd.
(Reg. in England, Company Number 6818450)