Hoare, Communicating Sequential Processes, and JCSP

Göran Båge <>
Wed Feb 12 20:28:39 CET 2003

Mike Williams wrote:
> I think that you will find that "selective message reception" in Erlang comes
> from EriPascal which in turn comes from CHILL. Of course CHILL has at least four
> mutually incompatible methods for processes to send messages (or exhange 
> information) with each other.

And the message passing communication mechanism was lobbied into CHILL
by Ericsson (CHILL was a CCITT language defined by a committee, and then
accepted by all parties unanimously - so everything was in there),

> The big difference  between Erlang and CHILL/EriPascal is that Erlang's pattern
> matching allows you use any component (or combination of components) to select
> which messages you want to receive and in which order. CHILL/EroPascal have the
> concept of a Signal number (an integeter constant) which is one of items in the 
> header of a message (called signal in these languages). I am sure that Bjarne
> and Göran can give you the full details.

Basically correct, the (internal) signal id was seen as a globally defined name
by the programmer, signals were declared with a name and statically typed 
parameters. Types were checked globally. The main signal parameter passing
mechanism was by copy as EriPascal was designed for distributed systems. We
were however forced to throw in a reference type parameter which messed up
the distribution semantics, efficiency was a big thing back then (1980).
We could also handle interrupts in a similar way, by associating interrupts
with signals.

> Of course Ada also tried to use selective reception in "select", but mesed it
> all up by making communication synchronous. This gave rise to all sorts of
> wierd and wonderful compiler optimisations (Haberman/Nassi) where the compiler
> detects that the propgrammer is using extra Ada tasks to do asycnhronous message
> passing and optimises the code to replace these task by a semaphore!

Ah, the good old Haberman/Nassi, those were the days :-) Was that ever
> This is a wonderful example of faultly thinking leading to a unecssary problem
> and research being directed to solving that unecessary problem. A somewhat far
> fetched parallel is Java being used to solve the unecessary problems created
> by C++ :-)

-- Goran
-------------------- May the Snow be with you -------
  Goran Bage
  Byvagen 10,      SE-133 34 Saltsjobaden,      Sweden
  email:,       phone: +46 8 7172907

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3443 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20030212/0876bada/attachment.bin>

More information about the erlang-questions mailing list