3 ms·
I think Go's channels came largely from Tony Hoare's CSP, via a series of languages and experiences within the Bell Labs group that also produced Unix and Plan9
by __d 4y ago
I think Go's channels came largely from Tony Hoare's CSP, via a series of languages and experiences within the Bell Labs group that also produced Unix and Plan9.
See Limbo, Alef, Newsqueak, and Squeak.
Occam was also derived from CSP, but I don't think it's accurate to call it a direct ancestor to Go.
https://en.wikipedia.org/wiki/Limbo_(programming_language) https://en.wikipedia.org/wiki/Limbo_(programming_language)
https://en.wikipedia.org/wiki/Alef_(programming_language) https://en.wikipedia.org/wiki/Alef_(programming_language)
https://en.wikipedia.org/wiki/Newsqueak https://en.wikipedia.org/wiki/Newsqueak
- dboreham 4y agoHmm. Wasn't Alef done by Phil Winterbottom? I remember meeting him at a party in (iirc in Putney) and talking to him about Transputers. I can't remember if he was already familiar. It was a pretty good party. Anyway, based on that evidence I suspect there was a more direct derivation than from base CSP.
- __d 4y agoTL;DR -- I suspect you're right: the Alef, Limbo, Go evolutionary path was well aware of occam. Alef was Phil Winterbottom, yes. The Squeak paper (http://ordiecole.com/squeak/cardelli_squeak1985.pdf http://ordiecole.com/squeak/cardelli_squeak1985.pdf) was 1985, so let's assume the work was likely some time in 1984. That would follow the Blit terminal work (paper in 1982), which seems reasonable. Newsqueak, Alef, and Limbo followed in that order. occam 1 was 1983, so it seems reasonable that Cardelli & Pike were aware of it, although it's not cited in the paper, so perhaps they weren't. The Newsqueak TR is from 1994, although it seems likely the work was done earlier. The TR doesn't contain any formal citations, but the text describes the language: "syntax and basic semantics come from C, while the message-passing primitives come from CSP". I think it's a little odd that it doesn't mention occam, as I think it was widely known by the mid-80s as a successful use of the CSP concepts, and Newsqueak must have been somewhere in the range 1985-1994. Alef is described as being derived from Newsqueak, but was released with Plan9 1st edition in 1992. Alef has "alt" and "par" constructs, which strongly suggest an occam influence. That said, this talk (http://go-lang.cat-v.org/talks/slides/emerging-languages-camp-2010.pdf http://go-lang.cat-v.org/talks/slides/emerging-languages-cam...) from Rob Pike identifies occam (and Erlang) as a distinct evolutionary branch from CSP. I guess we'd need to ask to be sure. Party time in Putney?
- dboreham 4y agoFire up the time machine...
- kitd 4y agoThanks, looks like you're right. FWIW, there's a brief history here: https://stackoverflow.com/questions/32651557/golang-main-difference-from-csp-language-by-hoare https://stackoverflow.com/questions/32651557/golang-main-dif...