1.1 起源與發展
Go 語言起源 2007 年,並於 2009 年正式對外發布。它從 2009 年 9 月 21 日開始作爲谷歌公司 20% 兼職項目,即相關員工利用 20% 的空餘時間來參與 Go 語言的研發工作。該項目的三位領導者均是著名的 IT 工程師:Robert Griesemer,參與開發 Java HotSpot 虛擬機;Rob Pike,Go 語言項目總負責人,貝爾實驗室 Unix 團隊成員,參與的項目包括 Plan 9,Inferno 操作系統和 Limbo 編程語言;Ken Thompson,貝爾實驗室 Unix 團隊成員,C 語言、Unix 和 Plan 9 的創始人之一,與 Rob Pike 共同開發了 UTF-8 字符集規範。自 2008 年 1 月起,Ken Thompson 就開始研發一款以 C 語言爲目標結果的編譯器來拓展 Go 語言的設計思想。
這是一個由計算機領域 “發明之父” 所組成的黃金團隊,他們對系統編程語言,操作系統和並行都有着非常深刻的見解
圖 1.1 Go 語言設計者:Griesemer、Thompson 和 Pike
在 2008 年年中,Go 語言的設計工作接近尾聲,一些員工開始以全職工作狀態投入到這個項目的編譯器和運行實現上。Ian Lance Taylor 也加入到了開發團隊中,並於 2008 年 5 月創建了一個 gcc 前端。
Russ Cox 加入開發團隊後着手語言和類庫方面的開發,也就是 Go 語言的標準包。在 2009 年 10 月 30 日,Rob Pike 以 Google Techtalk 的形式第一次向人們宣告了 Go 語言的存在。
直到 2009 年 11 月 10 日,開發團隊將 Go 語言項目以 BSD-style 授權(完全開源)正式公佈在 Linux 和 Mac OS X 平臺上的版本。Hector Chu 於同年 11 月 22 日公佈了 Windows 版本。
作爲一個開源項目,Go 語言藉助開源社區的有生力量達到快速地發展,並吸引更多的開發者來使用並改善它。自該開源項目發佈以來,超過 200 名非谷歌員工的貢獻者對 Go 語言核心部分提交了超過 1000 個修改建議。在過去的 18 個月裏,又有 150 開發者貢獻了新的核心代碼。這儼然形成了世界上最大的開源團隊,並使該項目躋身 Ohloh 前 2% 的行列。大約在 2011 年 4 月 10 日,谷歌開始抽調員工進入全職開發 Go 語言項目。開源化的語言顯然能夠讓更多的開發者參與其中並加速它的發展速度。Andrew Gerrand 在 2010 年加入到開發團隊中成爲共同開發者與支持者。
在 Go 語言在 2010 年 1 月 8 日被 Tiobe(聞名於它的編程語言流行程度排名)宣佈爲 “2009 年年度語言” 後,引起各界很大的反響。目前 Go 語言在這項排名中的最高記錄是在 2010 年 2 月創下的第13名,流行程度 1778%。
時間軸:
- 2007 年 9 月 21 日:雛形設計
- 2009 年 11 月 10日:首次公開發布
- 2010 年 1 月 8 日:當選 2009 年年度語言
- 2010 年 5 月:谷歌投入使用
- 2011 年 5 月 5 日:Google App Engine 支持 Go 語言
從 2010 年 5 月起,谷歌開始將 Go 語言投入到後端基礎設施的實際開發中,例如開發用於管理後端複雜環境的項目。有句話叫 “吃你自己的狗食”,這也體現了谷歌確實想要投資這門語言,並認爲它是有生產價值的。
Go 語言的官方網站是 golang.org,這個站點採用 Python 作爲前端,並且使用 Go 語言自帶的工具 godoc 運行在 Google App Engine 上來作爲 Web 服務器提供文本內容。在官網的首頁有一個功能叫做 Go Playground,是一個 Go 代碼的簡單編輯器的沙盒,它可以在沒有安裝 Go 語言的情況下在你的瀏覽器中編譯並運行 Go,它提供了一些示例,其中包括國際慣例 “Hello, World!”。
更多的信息詳見 github.com/golang/go,Go 項目 Bug 追蹤和功能預期詳見 github.com/golang/go/issues。
Go 通過以下的 Logo 來展示它的速度,並以囊地鼠(Gopher)作爲它的吉祥物。
圖1.2 Go 語言 Logo
谷歌郵件列表 golang-nuts 非常活躍,每天的討論和問題解答數以百計。
關於 Go 語言在 Google App Engine 的應用,這裏有一個單獨的郵件列表 google-appengine-go,不過 2 個郵件列表的討論內容並不是分得很清楚,都會涉及到相關的話題。go-lang.cat-v.org/ 是 Go 語言開發社區的資源站,irc.freenode.net 的#go-nuts 是官方的 Go IRC 頻道。
@golang 是 Go 語言在 Twitter 的官方帳號,大家一般使用 #golang 作爲話題標籤。
這裏還有一個在 Linked-in 的小組:www.linkedin.com/groups?gid=2524765&trk=myg_ugrp_ovr。
Go 編程語言的維基百科:en.wikipedia.org/wiki/Go_(programming_language))
Go 語言相關資源的搜索引擎頁面:gowalker.org
Go 語言還有一個運行在 Google App Engine 上的 Go Tour,你也可以通過執行命令 go install go-tour.googlecode.com/hg/gotour
安裝到你的本地機器上。對於中文讀者,可以訪問該指南的 中文版本,或通過命令 go install https://bitbucket.org/mikespook/go-tour-zh/gotour
進行安裝。
鏈接
- 目錄
- 上一部分:前言
- 下一節: 語言的主要特性與發展的環境和影響因素