[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Appeal for information ...



Hello Rick and Peter,

For my efforts - stretching over decades - the main benefit I have received from you is the discussions and ideas, especially on this list. My actual work has generally been hacked together in C, but always with the benefit of occam-related concepts. You have done great service in keeping an alternative path alive in what threatens to become a computing monoculture. I would suggest to the Research Excellence Framework that this has been your main "Impact of Research" - avoidance of a monoculture. The Irish Potato Famine and many analogous disasters in technology (e.g. Ariane 5 disaster) teach the great value of avoiding monoculture.

A question on a term, and an idea responding to Rick...

On May 27, 2013, at 3:19 AM, Rick Beton <rick.beton@xxxxxxxxx> wrote:

Hi Peter,

I feel that the work at Canterbury has been very necessary, quite distinctive, and a considerable but subtle benefit to the commercial business software in which I spend my time. 

One notable benefit has been from the educational materials in process oriented design with Java, such as Peter Welch's talks and presentation materials.  This stream of insight has been quite distinctive in a software world where everyone else is talking about asynchronous programming (which is unscalable and therefore ultimately much harder).

What is the meaning of your term "asynchronous" in this context? I have noted it used frequently and clearly as a key concept.

Much business software is event driven, involving message passing queues etc. Clear ways of thinking through the issues are needed and the Canterbury team have made a very worthwhile contribution here.

We have been able to use JCSP in some very effective ways in a range of projects.  The largest design-in was in the London Congestion Charge control centre. Here, JCSP orchestrates the Java server that collected the feeds from nearly 1000 cameras, with 7 tcp connections per camera.  This task is highly concurrent and high volume (typically 1.5M records captured per day).

Some of my projects have been of the 'one thread per request' Tomcat model. Such projects tend not to use any other explicit threads. But as soon as the design needs to vary the lifecycle from one thread per request to interacting with longer-running threads, JCSP has been found to be an effective way of synchronising and exchanging data.

In my work, JCSP is now also being used from Scala and other JVM-based languages.

In terms of Canterbury's relevancy in novel areas, I would like to mention two recent technologies that illustrate current diversity. Node-JS is a framework for _javascript_ execution (a 'JVM' for _javascript_) that is notionally single-threaded and highly asynchronous. It might be seen as the antithesis of the event-driven process oriented approach: concurrency is entirely handled by callbacks and it requires callbacks within callbacks, nested to any number of levels in a way that can become quite disorienting.  The other technology is the new Go language, which embodies CSP and a process oriented approach via its runtime scheduler that is similar (not surprisingly) to that in Occam.  NodeJS and Go both date from around 2009 and highlight a world that is emerging from a 15-year domination by Java.  This shows us the importance of continuing the work at Canterbury - we already have a world-class centre for understanding concurrency in the process oriented model at a time that the world needs more of this understanding.  The Canterbury team have much to offer in terms of current and future technologies. 

I'd like to conclude with a few observations about Occam and the Kroc toolset. This has clearly been a potent tool for education and concurrency research.  However, there is just a hint that we might have done more here.  Compared to other small language bases (perhaps Go for example), there have been some hurdles to wider adoption that could in principle have been overcome with a modest effort - the incomplete tool chain and the need for creating more modular code are the two issues I would mention.

I think both these complaints are part of a bigger problem: It is necessary to handle all boundary conditions in a clear and understandable way (simply put: capable of being scripted in Linux, for example). Boundary conditions include: how to load the code, how to start, how to stop, how to initiate communication, how to connect new parts, how to bring already existing blocks of code into service. There should be no inaccessible magic - not even interrupts should be magic!

Larry

 I think that there needs to be more effort expended here - there is the potential for this work to have an active community of users, particularly in embedded logic and control systems, but it needs a small seed-corn to get it to a place where this can flourish.  Occam is the bed-rock of the highly-successful JCSP and deserves to do better.  I see Occam and Go as siblings that occupy a similar minset but slightly different spaces and there will be clear benefits from keeping Occam in a usable state therefore. There is potential for a healthy cross-fertilisation of ideas in their respective communities going into the future.

In summary, there has been much work that has been of considerable benefit from the Canterbury team and I strongly recommend that this continues. I have a few ideas for taking this further - perhaps in addition there might be more investment in Kroc as a vehicle for practical concurrency and for education, and more investment in cohesive literature such as a book on the process oriented approach on a variety of platforms.

Kind regards,
Rick Beton
--
Big Bee Consultants Ltd


On 24 May 2013 14:36, P.H.Welch <P.H.Welch@xxxxxxxxxx> wrote:

Dear occam-com and java-threads,

This is an appeal for information.  Please would those of you who have
been using any of the *ideas* and materials coming from our group at Kent:

  - the occam-pi language;
  - the KRoC compiler, libraries and CCSP multicore scheduler;
  - the libraries for Java (JCSP), C (CCSP), C++ (C++CSP) and Haskell
    (CHP) providing the CSP-occam-pi concurrency model;
  - the teaching materials for the above;
  - algorithms (e.g. for fast resolution of general choice),
    formal models (e.g. for mobile channels), architecture (e.g.
    for complex and emergent systems, operating systems, multicore
    scheduling), verification techniques (e.g. integration of model
    checking with programming language), etc.

let us know what you have been doing?  Please tell us if it has saved you
(or your company/university) any time and/or money?  Please tell us if
it has inspired (or is about to inspire!) aspects of your own work?
[Of course, those with whom we are in regular contact need not reply!]

The reason for this appeal will be known to UK academics.  All University
departments (in all subjects) in the UK are currently being assessed
in something called the "Research Excellence Framework" (REF).  20%
of this assessment depends on the "Impact" of research going back to
January 1993, but with the period of impact running from January 2008
to today.  The meaning of "Impact" is not fully understood ... but
would certainly include use by industry of the ideas and products of
research from the department and, probably, research and teaching in
other universities/colleges/schools that it has triggered.

The impact of the REF will be the allocation of recurrent funding for
staff across the country.  This will have a knock-on impact on the kinds
of research that will be undertaken in future years.  So, if you would
like us to continue doing what we have been doing ... please let us
know (*soon*) what you have been doing ... and whether our work has had
any positive impact!

Thank you very much,

Peter Welch.