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

ch1.2: 规范化图像编号

This commit is contained in:
chai2010 2018-08-14 20:50:17 +08:00
parent 0c48b5475f
commit ed6074b6c9
3 changed files with 8 additions and 2 deletions

View File

@ -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”程序如下

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB