官术网_书友最值得收藏!

1.1.1 來自貝爾實驗室特有基因

作為Go語言標志性的并發編程特性來自貝爾實驗室的Tony Hoare于1978年發表的鮮為外界所知的關于并發研究的基礎文獻:通信順序進程(communicating sequential processes,CSP)。在最初的CSP論文中,程序只是一組沒有中間共享狀態的并發運行的處理過程,它們之間使用通道進行通信和控制同步。Tony Hoare的CSP并發模型只是一種用于描述并發性基本概念的描述語言,并不是編寫可執行程序的通用編程語?言。

CSP并發模型最經典的實際應用是愛立信公司發明的Erlang編程語言。不過,在Erlang將CSP理論作為并發編程模型的同時,同樣來自貝爾實驗室的Rob Pike及其同事也在不斷嘗試將CSP并發模型引入當時新發明的編程語言中。他們嘗試在Newsqueak語言中支持CSP模式的并發編程。此后的Alef語言試圖將C語言改造為系統編程語言(Alef也是C語言之父Ritchie比較喜愛的編程語言),但是因為缺少垃圾收集機制而導致并發編程很痛苦(這也是繼承C語言手工管理內存的代價)。在Alef語言之后還有一款名為Limbo的編程語言,是運行在虛擬機中的腳本語言。Limbo語言是與Go語言最接近的祖先,它和Go語言有著最接近的語法。到設計Go語言時,Rob Pike在CSP并發編程模型的實踐中已經積累了20多年的經驗,關于Go語言并發編程的特性完全是信手拈來,新編程語言的到來也是水到渠?成。

圖1-2展示了Go語言代碼庫的早期開發日志(在Git中用git log --before={2008-03-03} --reverse命令查看),由此可以看出Go語言最直接的演化歷?程。

圖1-2 Go語言開發日志

從早期提交的日志中可以看出,Go語言是從Ken Thompson發明的B語言、Dennis M. Ritchie發明的C語言逐步演化過來的,它先是C語言家族的成員,因此很多人將Go語言稱為21世紀的C語?言。

圖1-3給出的是Go語言中來自貝爾實驗室特有并發編程基因的演化過?程。

圖1-3 Go語言并發演化歷史

回顧貝爾實驗室開發編程語言的進程,從B語言、C語言到Newsqueak、Alef、Limbo,一路走來,Go語言繼承了來自貝爾實驗室的近半個世紀的軟件設計基因,終于完成了C語言革新的使命。縱觀近幾年的發展趨勢,Go語言已經成為云計算、云存儲時代甚至大語言模型時代最重要的基礎編程語?言。

主站蜘蛛池模板: 绩溪县| 绥中县| 夏河县| 鹤峰县| 禄劝| 榆社县| 揭西县| 蕉岭县| 藁城市| 和田市| 兴海县| 秭归县| 西乡县| 林甸县| 孝感市| 韩城市| 盱眙县| 吐鲁番市| 万山特区| 海阳市| 海宁市| 尤溪县| 德格县| 梧州市| 鄢陵县| 连平县| 芜湖市| 逊克县| 松阳县| 宁陵县| 江北区| 大余县| 公安县| 永济市| 玛沁县| 仪陇县| 苗栗县| 惠来县| 绍兴县| 资阳市| 文安县|