the-way-to-go_ZH_CN/01.2.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/01.2.md
在声明和包的设计方面,Go 语言受到 Pascal、Modula 和 Oberon 系语言的影响;在并发原理的设计上,Go 语言从同样受到 Tony Hoare 的 CSP(通信序列进程 Communicating Squential Processes)理论影响的 Limbo 和 Newsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。
Communicating sequential processes - Wikipedia https://en.wikipedia.org/wiki/Communicating_sequential_processes
communicating sequential processes
CSP 通信顺序进程
C.A.R.Hoare 1979
CSP是一种用来描述并行系统交互模式的形式语言,最早由C.A.R.Hoare(1934-)在其1979年的一篇论文中提出。
CSP对并发编程语言的设计有深远影响,受其影响的编程语言包括Limbo和Go等。
https://www.cs.cmu.edu/~crary/819-f09/Hoare78.pdf
https://xie.infoq.cn/article/a0880b7d215f7b82bc3a0380a
https://github.com/lintide/GoConcurrencyPatterns
Distinction
Go is the latest on the Newsqueak-Alef-Limbo branch, distinguished by first-class channels.
Erlang is closer to the original CSP, where you communicate to a process by name rather than over a channel.
The models are equivalent but express things differently.
Rough analogy: writing to a file by name (process, Erlang) vs. writing to a file descriptor (channel, Go).