1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00

Update ch1-01-genesis.md

修饰语句、删除一个多余空格
This commit is contained in:
junjie 2019-01-11 18:49:57 +08:00 committed by GitHub
parent 77361be8b2
commit 0e68ac609a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,7 +18,7 @@ Go语言其它的一些特性零散地来自于其他一些编程语言比如
## 1.1.1 来自贝尔实验室特有基因
作为Go语言标志性的并发编程特性则来自于贝尔实验室的Tony Hoare于1978年发表鲜为外界所知的关于并发研究的基础文献顺序通信进程 communicating sequential processes 缩写为CSP。在最初的CSP论文中程序只是一组没有中间共享状态的平行运行的处理过程它们之间使用管道进行通信和控制同步。Tony Hoare的CSP并发模型只是一个用于描述并发性基本概念的描述语言它并不是一个可以编写可执行程序的通用编程语言。
作为Go语言标志性的并发编程特性则来自于贝尔实验室的Tony Hoare于1978年发表鲜为外界所知的关于并发研究的基础文献顺序通信进程communicating sequential processes 缩写为CSP。在最初的CSP论文中程序只是一组没有中间共享状态的平行运行的处理过程它们之间使用管道进行通信和控制同步。Tony Hoare的CSP并发模型只是一个用于描述并发性基本概念的描述语言它并不是一个可以编写可执行程序的通用编程语言。
CSP并发模型最经典的实际应用是来自爱立信发明的Erlang编程语言。不过在Erlang将CSP理论作为并发编程模型的同时同样来自贝尔实验室的Rob Pike以及其同事也在不断尝试将CSP并发模型引入当时的新发明的编程语言中。他们第一次尝试引入CSP并发特性的编程语言叫Squeak老鼠的叫声是一个用于提供鼠标和键盘事件处理的编程语言在这个语言中管道是静态创建的。然后是改进版的Newsqueak语言新版老鼠的叫声新提供了类似C语言语句和表达式的语法还有类似Pascal语言的推导语法。Newsqueak是一个带垃圾回收的纯函数式语言它再次针对键盘、鼠标和窗口事件管理。但是在Newsqueak语言中管道已经是动态创建的管道属于第一类值、可以保存到变量中。然后是Alef编程语言Alef也是C语言之父Ritchie比较喜爱的编程语言Alef语言试图将Newsqueak语言改造为系统编程语言但是因为缺少垃圾回收机制而导致并发编程很痛苦这也是继承C语言手工管理内存的代价。在Aelf语言之后还有一个叫Limbo的编程语言地狱的意思这是一个运行在虚拟机中的脚本语言。Limbo语言是Go语言最接近的祖先它和Go语言有着最接近的语法。到设计Go语言时Rob Pike在CSP并发编程模型的实践道路上已经积累了几十年的经验关于Go语言并发编程的特性完全是信手拈来新编程语言的到来也是水到渠成了。