diff --git a/ch1-basic/ch1-02-hello-revolution.md b/ch1-basic/ch1-02-hello-revolution.md index dade0fb..92cb249 100644 --- a/ch1-basic/ch1-02-hello-revolution.md +++ b/ch1-basic/ch1-02-hello-revolution.md @@ -4,6 +4,8 @@ ![](../images/ch1.2-1-go-history.png) +*图 1.2-1 Go语言并发演化历史* + ## 1.2.1 B语言 - Ken Thompson, 1972 首先是B语言,B语言是Go语言之父贝尔实验室的Ken Thompson早年间开发的一种通用的程序设计语言,设计目的是为了用于辅助UNIX系统的开发。但是因为B语言缺乏灵活的类型系统导致使用比较困难。后来,Ken Thompson的同事Dennis Ritchie以B语言为基础开发出了C语言,C语言提供了丰富的类型,极大地增加了语言的表达能力。到目前为止它依然是世界上最常用的程序语言之一。而B语言自从被它取代之后,则就只存在于各种文献之中,成为了历史。 @@ -100,7 +102,9 @@ print("Hello,", "World", "\n"); 从上面的程序中,除了猜测`print`函数可以支持多个参数外,我们很难看到Newsqueak语言相关的特性。由于Newsqueak语言和Go语言相关的特性主要是并发和管道。因此,我们这里通过一个并发版本的“素数筛”算法来略窥Newsqueak语言的特性。“素数筛”的原理如图: -![](../images/ch1-02-prime-sieve.png) +![](../images/ch1.2-2-prime-sieve.png) + +*图 1.2-2 素数筛* Newsqueak语言并发版本的“素数筛”程序如下: @@ -160,7 +164,9 @@ Newsqueak语言中并发体和管道的语法和Go语言已经比较接近了, 由于Alef语言同时支持进程和线程并发体,而且在并发体中可以再次启动更多的并发体,导致了Alef的并发状态会异常复杂。同时Alef没有自动垃圾回收机制(Alef因为保留的C语言灵活的指针特性,也导致了自动垃圾回收机制实现比较困难),各种资源充斥于不同的线程和进程之间,导致并发体的内存资源管理异常复杂。Alef语言全部继承了C语言的语法,可以认为是增强了并发语法的C语言。下图是Alef语言文档中展示的一个可能的并发体状态: -![](../images/ch1-02-alef.png) +![](../images/ch1.2-3-alef.png) + +*图 1.2-3 Alef并发模型* Alef语言并发版本的“Hello World”程序如下: diff --git a/images/ch1-02-prime-sieve.png b/images/ch1.2-2-prime-sieve.png similarity index 100% rename from images/ch1-02-prime-sieve.png rename to images/ch1.2-2-prime-sieve.png diff --git a/images/ch1-02-alef.png b/images/ch1.2-3-alef.png similarity index 100% rename from images/ch1-02-alef.png rename to images/ch1.2-3-alef.png