On Mon, 08 Oct 2018 11:51:59 +0100 roger peppe <rogpe...@gmail.com> wrote:
> On 8 October 2018 at 08:53, Rob Pike <r...@golang.org> wrote:
> > Actually the original is a paper:
> > https://www.cs.cmu.edu/~crary/819-f09/Hoare78.pdf
> > The book came later and is substantially different although not
> > contradictory. Channels were not in the paper and without channels (such as
> > in Occam) the flavor is very different.
>
> FWIW Occam does have channels; they're just not first class values.
>
> Perhaps you're thinking of Erlang, which I think was inspired more
> directly by the paper?

Erlang is not based on CSP. The main difference being async
message passing as opposed to message rendezvous.

Joe Armstrong (coinventor of Erlang) says this in his PhD thesis:

  1986 - I start work on the language that was to become Erlang,
  though at the time the language had no name. The language started
  as an experiment to add concurrent processes to Prolog
  ...
  at the time the best method for programming POTS appeared to
  be a variant of Prolog augmented with parallel processes.

  1987 ... This version of Erlang was embedded in Prolog using
  Prolog infix operators and did not yet have its own syntax.

There is not even a mention of CSP in this thesis or early
Erlang papers.

http://erlang.org/download/armstrong_thesis_2003.pdf
https://www.erlang.org/course/history

As for go, it is inspired by CSP but it omits a central
restriction of CSP: processes may not communicate by updating
global variables. Go also allows sharing lexical environment
when a nested function is started as a goroutine.  Worse, the
language provides no help in guarding against unprotected
concurrent access. [Race detection is external and not even
available on all supported platforms] 

A CSP like subset Go would make for an interesting experiment
(though I don't know if this is possible). Second, it would be
good to figure out how to detect unprotected concurrent access
at compile time (where possible).

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to