Go 部落格

Go 的四年

Andrew Gerrand
2013 年 11 月 10 日

今天標誌著 Go 作為一個開源專案成立四週年。

與其談論我們在技術上的進展(再過幾周釋出 Go 1.2 時會有很多可以談論的),我們認為不如藉此機會回顧一下 Go 社群是如何成長的。

讓我們從一張圖表開始

這張圖表顯示了過去四年中 Google 搜尋詞“golang”的增長情況。注意曲線在 2012 年 3 月 Go 1.0 釋出時出現的拐點。如果這些搜尋能很好地代表興趣,那麼很明顯,自發布以來,尤其是在過去 2 年裡,對 Go 的興趣顯著增長。

但是這些興趣來自哪裡呢?

開源社群已經接納了 Go,我們的社群維基列出了數百個 Go 專案。其中一些熱門專案包括:

  • Docker 是一個用於在輕量級容器中打包和執行應用程式的工具。Docker 使應用程式的隔離、打包和部署變得容易,深受系統管理員的喜愛。其建立者 Solomon Hykes 將 Go 的標準庫、併發原語和易於部署性列為關鍵因素,並表示“簡單地說,如果 Docker 不是用 Go 編寫的,它就不會如此成功。”

  • Packer 是一個自動化建立虛擬機器或雲服務部署所需機器映象的工具。其作者 Mitchell Hashimoto 現在正在開發另一個 Go 專案,serf,一個去中心化的發現服務。與 Docker 類似,這些專案有助於管理大規模的基於叢集的服務。

  • BitlyNSQ 是一個即時分散式訊息傳遞平臺,旨在實現容錯和高可用性,目前在 bitly 和許多其他公司投入生產使用。

  • CanonicalJuJu 基礎設施自動化系統用 Go 重寫。專案負責人 Gustavo Niemeyer 表示:“Go 之所以成為一個引人注目的選擇,不是因為某一個方面,而是因為精心組織了製作精良的小模組。”

  • raft 軟體包提供了 Raft 分散式一致性協議的實現。它是 etcdSkyDNS 等 Go 專案的基礎。

  • 其他熱門專案包括 biogoGorilla Web Toolkitgroupcache、Mozilla 的 hekakvql 輕量級儲存系統,以及 Sky 行為資料庫。

但這只是冰山一角。高質量的開源 Go 專案數量驚人。多產的 Go 駭客 Keith Rarick 說得很好:“Go 生態系統僅用了四年時間就達到了令人驚歎的水平。想想 2013 年的 Go 和 1995 年的 Python 或 1999 年的 Java 相比吧。或者和 1987 年的 C++ 相比!”

企業也喜歡 Go。Go 使用者維基頁面列出了數十個成功案例(如果您正在使用 Go,請務必將自己新增到其中)。一些例子如下:

  • CloudFlare 完全使用 Go 構建了他們的分散式 DNS 服務,並且正在將每分鐘處理數 GB 日誌的基礎設施遷移到該語言。程式設計師 John Graham-Cumming 表示:“我們發現 Go 非常適合我們的需求:熟悉的語法、強大的型別系統、強大的網路庫和內建併發性的結合意味著我們在這裡構建的專案越來越多地使用 Go。”

  • SoundCloud 是一個音訊分發服務,擁有“數十個Go 系統,幾乎涉及網站的每個部分,在許多情況下為各項功能提供自上而下的支援。”工程師 Peter Bourgon 表示:“Go 表明,困擾其他語言和生態系統的那些開發者們不得不忍受的繁冗(通常帶著憤怒)根本不是現代程式設計的必要部分。使用 Go,我與我的工具之間有著直接而非對抗的關係,從開發到生產都是如此。”

  • ngrok 服務允許 Web 開發者遠端訪問他們的開發環境。其作者 Alan Shreve 表示,“ngrok 作為專案取得成功,很大程度上歸功於選擇了 Go 作為實現語言”,他列舉了 Go 的 HTTP 庫、效率、跨平臺相容性和易於部署作為主要優勢。

  • Poptip 提供社交分析服務,產品工程師 Andy Bonventre 表示:“最初只是嘗試用 Go 編寫一個服務,結果幾乎將我們的整個基礎設施都遷移到了 Go。我最喜歡 Go 的地方不一定是語言特性,而是它對工具、測試以及其他使編寫大型應用程式更易於管理的元素的關注。”

  • 音樂協作初創公司Splice 選擇使用 Go 構建其服務。聯合創始人 Matt Aimonetti 表示:“我們認真研究並考慮了許多程式語言,但 Go 的簡潔性、效率、理念和社群最終贏得了我們。”

  • 當然,Google 的工程團隊也在轉向使用 Go。工程師 Matt Welsh 最近分享了他的經驗,講述瞭如何用 Go 重寫一個大型生產服務。其他值得注意的公開例子包括 YouTube 的 vitess 專案dl.google.com。我們希望很快能分享更多類似的故事。

2012 年 9 月,Apcera 的 CEO Derek Collison 預測“Go 將在 24 個月內成為 [基礎設施即服務]、編排和 [平臺即服務] 等系統工作的主導語言”。看看上面的列表,很容易相信這個預測。

那麼您如何參與進來呢?無論您是經驗豐富的 Go 程式設計師還是僅僅對 Go 好奇,都有很多方式可以加入 Go 社群:

  • 加入離您最近的 Go 使用者組,在那裡您當地的 gophers 會面交流知識和經驗。這些組織正在世界各地湧現。我本人曾在阿姆斯特丹、柏林、哥德堡、倫敦、莫斯科、慕尼黑、紐約市、巴黎、舊金山、首爾、斯德哥爾摩、悉尼、東京和華沙的 Go 小組發表演講;但還有更多

  • 建立或貢獻一個開源 Go 專案(或貢獻 Go 本身)。(如果您正在構建某些東西,我們非常樂意在 Go 郵件列表上聽到您的訊息。)

  • 如果您在 2014 年 2 月在歐洲,請前來參加 FOSDEM 2014Go Devroom(開發者房間)。

  • 參加 2014 年 4 月在丹佛舉行的首屆大型 Go 會議 GopherCon。該活動由 Gopher Academy 組織,他們也運營一個 Go 招聘板塊

Go 團隊對過去四年裡 Go 社群的成長感到驚歎。我們很高興看到 Go 正在構建如此多出色的事物,並對與我們出色且專注的貢獻者們一起工作深表感激。感謝大家。

祝願 Go 再創輝煌四年!

下一篇文章:Go 中的文字規範化
上一篇文章:Go 中的字串、位元組、rune 和字元
部落格索引