當前位置:
首頁 > 知識 > Go語言:成長的十年

Go語言:成長的十年

Go語言之父,Google大神Rob Pike代表Go語言的另外兩位締造者Robert Griesemer和Ken Thompson在自己的博客上發表了一篇名為《Go: Ten years and climbing》的文章,用以紀念Go語言從最初的設計idea起到目前的十年發展。筆者讀完後,也是深有感觸,因此在這裡粗略翻譯一下全文,希望能有更多的程序員加入到Gopher行列中來。

譯文全文如下:

Drawing Copyright ?2017 Renee French

本周是創建Go語言十周年的紀念日。

記得第一次關於這門語言設計的討論是在2007年9月20日,一個周四的下午。進而在第二天的下午兩點,我、Robert Griesemer以及Ken Thompson在谷歌山景城總部43#樓的一間名為Yaounde的會議室里又組織進行了一場有關這門語言設計的會議。這門語言的名字誕生於9月25日,在第一封有關語言設計的mail中可以看到一些關於命名的設計考量:

Subject: Re: prog lang discussion
From: Rob "Commander" Pike
Date: Tue, Sep 25, 2007 at 3:12 PM
To: Robert Griesemer, Ken Thompson
i had a couple of thoughts on the drive home.
1. name
"go". you can invent reasons for this name but it has nice properties.
it"s short, easy to type. tools: goc, gol, goa. if there"s an interactive
debugger/interpreter it could just be called "go". the suffix is .go
...

(將語言命名為Go這事兒值得一提;「golang」來自於這門語言的web站點地址(因為go.com當時已經是迪斯尼的一個web站點了),但卻不是語言的恰當名字。)

Go項目將2009年11月10日,即Go項目正式開源的那天作為其官方生日。最初Go項目託管在code.google.com上,幾年後遷移至GitHub。不過,現在我們要回到最初的語言概念構建階段,即那之前的兩年,這可以讓我們做更進一步地回顧,以更久遠的視角,見證一些語言早期的歷史事件。

Go開發過程中的第一個驚喜是收到下面這封mail信息:

Subject: A gcc frontend for Go
From: Ian Lance Taylor
Date: Sat, Jun 7, 2008 at 7:06 PM
To: Robert Griesemer, Rob Pike, Ken Thompson
One of my office-mates pointed me at http://.../go_lang.html . It
seems like an interesting language, and I threw together a gcc
frontend for it. It"s missing a lot of features, of course, but it
does compile the prime sieve code on the web page.

Ian Lance Taylor的加入以及第二個編譯器實現(gccgo)在帶來震驚的同時,也伴隨著喜悅。這對Go項目來說不僅僅是鼓勵,更是一種對可行性的證明。有了語言的第二個實現對確定語言規範和標準庫的過程是至關重要的,同時也有助於Go保證其高可移植性的承諾。

雖然Ian的辦公室離我們不遠,但在看到這封mail之前我們從未謀面。不過,從那之後,Ian Lance Taylor便成為了Go語言及工具設計和實現的核心人物。

Russ Cox也是在2008年加入到剛成立不久的Go語言開發團隊的。隨著他的加入,他的一些天賦也隨即在語言設計和實現中展現出來。Russ發現Go method的通用性意味著一個函數也可以擁有自己的方法,這直接導致了http.HandlerFunc的出現,這是一個我們所有人都未曾想到的結果。Russ還在當時設計的基礎上提出了一些更泛化的想法,比如io.Reader和io.Writer介面,奠定了所有I/O庫的整體結構。

Jini Kim是我們最初的產品經理,他招來了安全專家Adam Langley來幫助我們將Go推向Google外面的世界。Adam為我們做了許多不為外人所知的事情,包括創建最初golang.org站點的web頁面以及build dashboard。不過他最大的貢獻當然要屬cryptographic庫了。起先,對於我們中的一部分人來說,這個庫無論是規模還是複雜度,和其他庫比起來都不成比例。但是就是這個庫在後期成為了很多重要的網路和安全軟體的基礎,並且成為了Go語言開發歷史的關鍵組成部分。像Cloudflare這樣的網路基礎設施提供商就重度依賴Adam在Go項目中的工作,Internet也因此變得更好。因此,我們由衷感謝他的工作。

事實上,許多公司在早期使用Go進行開發,尤其是初創公司。其中一些公司成為了雲計算的巨頭,其中就有一家這樣的公司,它現在叫Docker。這家公司使用Go語言,並催化出計算領域的容器行業,進而導致了像Kubernetes這樣的項目出現。今天我們可以說Go是容器語言,這是另一個我們完全沒有預料到的結果。

不過,Go語言在雲計算領域起到作用更大。2015年3月,Donnie Berkholz在為RedMonk撰寫的一篇文章中宣稱:Go是「雲計算基礎設施新興語言」。幾乎與此同時,Apcera的Derek Collison說:Go已經是雲計算語言了。在那個時候,這也許還不是事實。但Berkholz所使用的「新興」一詞卻恰如其分的表明了Go在當時的地位。

今天,Go已經成為雲計算語言。想像一下:一個只有10歲的年輕編程語言已經成為這樣一個規模龐大且不斷發展的行業的主導者,這樣的成功以前只是存在於在想像中。如果你覺得「主導」這個詞太過強勢的話,讓我們來看看中國互聯網行業。一段時間以來,Go在中國地區大量使用的數據一度讓我們誤認為Google趨勢圖出現了某些錯誤,但是凡是去過中國,參加過中國區Go語言大會的人都可以證實:Google趨勢圖的數據是真的,Go在中國的使用非常火爆!

簡而言之,Go語言的十年發展為我們帶來了許多里程碑。 最令人驚訝的是我們現在的位置:保守估計表明至少有50萬Go程序員。 當前面那封為Go命名的郵件發送時,憧憬能有有五十萬gopher的想法聽起來會感覺很荒唐。 但就在此時此刻這裡,我們不僅有了50w gopher,並且數量還在持續增長。

說到gophers,很高興看到來自Renee French想法的吉祥物Go Gopher(地鼠),不僅成為了一個非常受人喜愛的作品,而且也是世界各地Go程序員的象徵。許多各個地區頂級的Go大會都被稱為GopherCons,因為他們聚集了來自世界各地的gophers。

Gopher大會正在迅速發展。第一次大會的舉辦只不過是三年前的事情,但今天在全世界各地有很多這樣的Go大會。並且還有無數小的本地「聚會(meetups)」。在任何某一天,世界上某個地方都會有不止一個gopher群體在進行有關Go的分享。

回顧過去十年的Go設計和開發,Go社區的發展是驚人的。會議和聚會的數量、長長的且不斷增加的Go項目貢獻者名單、大量用Go實現的開放源代碼存儲庫、使用Go的公司數量等等,細思恐(吃驚)極!

對於我們三個人,Robert, Rob和Ken,當初只是想讓我們的編程生活更輕鬆一些,而如今,我們難以置信地、欣慰地看到我們的工作已經開始起作用了。

未來十年會帶來什麼呢?

- Rob Pike, with Robert Griesemer and Ken Thompson

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 青峰科技 的精彩文章:

Cplusplus,學習多態總結,編程學習
Spring5源碼解析-Spring中的bean工廠後置處理器
C++—const volatile mutable的用法
騰訊雲DevOps流水線的應用與實踐
前方高能提示:SDCC 2017之區塊鏈技術實戰線上峰會開播倒計時

TAG:青峰科技 |