天天看點

許式偉《Go語言程式設計》章節摘錄:Go語言簡史

[size=large]  提起Go語言的出身,我們就必須将我們飽含敬意的眼光投向持續推出驚世駭俗成果的貝爾實驗室。貝爾實驗室已經走出了多位諾貝爾獎獲得者,一些對于現在科技至關重要的研究成果,比如半導體、通信技術、數位相機的感光元件CCD、光電池等都源自貝爾實驗室。該實驗室在科技界的地位可想而之,是一個毫無争議的科研聖地。

  這裡我們重點介紹一下貝爾實驗室中一個叫計算科學研究中心的部門對于作業系統和程式設計語言的貢獻。回溯至上世紀的1969年(估計大部分讀者那時候都還沒出世),肯•湯普遜(Ken Thompson)和丹尼斯•裡奇(Dennis Ritchie)在貝爾實驗室的計算科學研究中心裡開發出了UNIX這個大名鼎鼎的作業系統,還因為開發UNIX而衍生出了一門同樣赫赫有名的程式設計語言,C語言。對于很大一部分人而言,UNIX就是作業系統的鼻祖,C語言也是計算機課程中最廣泛使用的程式設計語言。UNIX和C語言在過去的幾十年以來已經造就了無數的成功商業故事,比如曾在90年代如日中天的太陽微系統(Sun MicroSystems),現在正如日中天的蘋果的Mac OS X作業系統其實也可以認為隻是UNIX的一個變種(FreeBSD)。

  雖然已經取得了如此巨大的成就,貝爾實驗室的這幾個人并沒有是以而沉浸在光環中止步不前。他們從上世紀80年代又開始了一個名為Plan 9的作業系統研究項目,目的就是解決UNIX中的一些問題,發展出一個UNIX的後續替代系統。在之後的幾十年中,該研究項目又演變出了另一個叫Inferno的項目分支,以及一個名為Limbo的程式設計語言。

  Limbo是用于開發運作在小型計算機上的分布式應用的程式設計語言。它支援子產品化程式設計,編譯期和運作時的強類型檢查,程序内基于具有類型的通信通道,原子性垃圾收集,和簡單的抽象資料類型。它被設計為:即便是在沒有硬體記憶體保護的小型裝置上,也能安全運作。

  Limbo語言被認為是Go語言的前身,不僅僅因為是同一批人設計的語言,而是實際上Go語言确實從Limbo語言中繼承了衆多優秀的特性。

  貝爾實驗室後來經曆了多次的動蕩,包括肯•湯普遜在内的Plan 9項目原班人馬加入了Google。在Google,他們創造了Go語言。早在2007年9月,Go語言還是這幫大牛的20%自由時間的實驗項目。幸運的是,到了2008年5月,Google發現了Go語言的巨大潛力,進而開始全力支援這個項目,讓這批人可以全身心投入Go語言的設計和開發工作。Go語言的第一個版本在2009年11月正式對外釋出,并在此後的兩年内快速疊代,發展迅猛。第一個正式版本的Go語言于2012年3月28日正式釋出,讓Go語言迎來了第一個引人矚目的裡程碑。

  基于Google對開源的一貫擁抱态度, Go語言也自然而然地選擇了開源方式釋出,并使用BSD授權協定。任何人可以檢視Go語言的所有源代碼,并可以為Go語言發展而奉獻自己的力量。

  Google作為Go語言的主推者,并沒有簡簡單單地把語言推給開源社群了事,不僅組建了一個獨立的小組全職開發Go語言,還在自家的服務中逐漸增加對Go語言的支援,比如對于Google有戰略意義的雲計算平台GAE(Google AppEngine),很早就開始支援Go語言。按目前的發展态勢,在Google内部Go語言有逐漸取代Java和Python主流地位的趨勢。在Google的更多産品中,我們将看到Go語言的蹤影,比如Google最核心的搜尋和廣告業務。

  在本書的序中,已經清晰诠釋了為什麼在語言泛濫的時代Google還要設計和推出一門新的程式設計語言。按照已經釋出的Go語言的特性,我們有足夠的理由相信Google推出此門新程式設計語言絕不僅僅是簡單的跑馬圈地運動,而是為了解決切實的問題。 

讓我們再來看看Go語言的主要作者們: 

[b]肯•湯普遜[/b](Ken Thompson,http://en.wikipedia.org/wiki/Ken_Thompson):設計了B語言和C語言,建立了Unix和Plan 9作業系統,1983年圖靈獎得主,Go的共同作者。

[b]羅布•派克[/b](Rob Pike,http://en.wikipedia.org/wiki/Rob_Pike):Unix小組的成員,參與Plan 9和Inferno作業系統,參與 Limbo和Go語言的研發。《UNIX程式設計環境》作者之一。

[b]羅伯特•格裡澤默[/b](Robert Griesemer):曾協助制作Java的HotSpot編譯器和Chrome浏覽器的JavaScript引擎V8。

[b]拉斯•考克斯[/b](Russ Cox,http://swtch.com/~rsc/):參與Plan 9作業系統的開發,Google Code Search項目負責人。

[b]伊安•泰勒[/b](Ian Lance Taylor):GCC社群的活躍人物。gold連接配接器和GCC過程間優化LTO的主要設計者,Zembu公司的創始人。

[b]布拉德•菲茨帕特裡克[/b](Brad Fitzpatrick,http://en.wikipedia.org/wiki/Brad_Fitzpatrick):LiveJournal 的創始人,著名開源項目memcached的作者。

  雖然我們這裡隻列出了一部分,大家已經可以看出這個語言開發團隊的空前強大。這讓我們在為Go語言的優秀特性而興奮之外,還非常看好這門語言的發展前景。[/size]

 [size=x-large] 本文摘自《Go語言程式設計》[/size]

繼續閱讀