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:
parent
0c48b5475f
commit
ed6074b6c9
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
*图 1.2-1 Go语言并发演化历史*
|
||||||
|
|
||||||
## 1.2.1 B语言 - Ken Thompson, 1972
|
## 1.2.1 B语言 - Ken Thompson, 1972
|
||||||
|
|
||||||
首先是B语言,B语言是Go语言之父贝尔实验室的Ken Thompson早年间开发的一种通用的程序设计语言,设计目的是为了用于辅助UNIX系统的开发。但是因为B语言缺乏灵活的类型系统导致使用比较困难。后来,Ken Thompson的同事Dennis Ritchie以B语言为基础开发出了C语言,C语言提供了丰富的类型,极大地增加了语言的表达能力。到目前为止它依然是世界上最常用的程序语言之一。而B语言自从被它取代之后,则就只存在于各种文献之中,成为了历史。
|
首先是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语言的特性。“素数筛”的原理如图:
|
从上面的程序中,除了猜测`print`函数可以支持多个参数外,我们很难看到Newsqueak语言相关的特性。由于Newsqueak语言和Go语言相关的特性主要是并发和管道。因此,我们这里通过一个并发版本的“素数筛”算法来略窥Newsqueak语言的特性。“素数筛”的原理如图:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
*图 1.2-2 素数筛*
|
||||||
|
|
||||||
Newsqueak语言并发版本的“素数筛”程序如下:
|
Newsqueak语言并发版本的“素数筛”程序如下:
|
||||||
|
|
||||||
@ -160,7 +164,9 @@ Newsqueak语言中并发体和管道的语法和Go语言已经比较接近了,
|
|||||||
|
|
||||||
由于Alef语言同时支持进程和线程并发体,而且在并发体中可以再次启动更多的并发体,导致了Alef的并发状态会异常复杂。同时Alef没有自动垃圾回收机制(Alef因为保留的C语言灵活的指针特性,也导致了自动垃圾回收机制实现比较困难),各种资源充斥于不同的线程和进程之间,导致并发体的内存资源管理异常复杂。Alef语言全部继承了C语言的语法,可以认为是增强了并发语法的C语言。下图是Alef语言文档中展示的一个可能的并发体状态:
|
由于Alef语言同时支持进程和线程并发体,而且在并发体中可以再次启动更多的并发体,导致了Alef的并发状态会异常复杂。同时Alef没有自动垃圾回收机制(Alef因为保留的C语言灵活的指针特性,也导致了自动垃圾回收机制实现比较困难),各种资源充斥于不同的线程和进程之间,导致并发体的内存资源管理异常复杂。Alef语言全部继承了C语言的语法,可以认为是增强了并发语法的C语言。下图是Alef语言文档中展示的一个可能的并发体状态:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
*图 1.2-3 Alef并发模型*
|
||||||
|
|
||||||
Alef语言并发版本的“Hello World”程序如下:
|
Alef语言并发版本的“Hello World”程序如下:
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Loading…
x
Reference in New Issue
Block a user