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.