Go語言簡史

turingbooks發表於2020-04-07

提起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語言的主要作者們:

  • 肯•湯普遜(Ken Thompson,http://en.wikipedia.org/wiki/Ken_Thompson):設計了B語言和C語言,建立了Unix和Plan 9作業系統,1983年圖靈獎得主,Go的共同作者。
  • 羅布•派克(Rob Pike,http://en.wikipedia.org/wiki/Rob_Pike):Unix小組的成員,參與Plan 9和Inferno作業系統,參與 Limbo和Go語言的研發。《UNIX程式設計環境》作者之一。
  • 羅伯特•格里澤默(Robert Griesemer):曾協助製作Java的HotSpot編譯器和Chrome瀏覽器的JavaScript引擎V8。
  • 拉斯•考克斯(Russ Cox,http://swtch.com/~rsc/):參與Plan 9作業系統的開發,Google Code Search專案負責人。
  • 伊安•泰勒(Ian Lance Taylor):GCC社群的活躍人物。gold聯結器和GCC過程間優化LTO的主要設計者,Zembu公司的創始人。
  • 布拉德•菲茨帕特里克(Brad Fitzpatrick,http://en.wikipedia.org/wiki/Brad_Fitzpatrick):LiveJournal 的創始人,著名開源專案memcached的作者。

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

本文摘自8月末即將上市的《Go語言程式設計》

相關文章