Go 部落格

Go 迎來 10 週年

Russ Cox,為 Go 團隊撰寫
2019 年 11 月 8 日

生日快樂,Go!

這個週末,我們慶祝 Go 釋出 10 週年,標誌著 Go 作為一種用於構建現代網路軟體的開源程式語言和生態系統迎來了它的 10 歲生日。

為紀念這一時刻,Renee FrenchGo Gopher 的創作者,創作了這幅令人愉悅的場景。

慶祝 Go 的 10 年讓我回想起 2009 年 11 月初,當時我們正準備與世界分享 Go。我們不知道會得到什麼樣的反響,不知道是否會有人關心這門小小的語言。我希望即使最終沒有人使用 Go,我們也能引起人們對一些好想法的關注,尤其是 Go 在併發和介面方面的處理方式,這些想法可能會影響後續的語言。

一旦人們對 Go 表現出熱情,我就開始研究 C、C++、Perl、Python 和 Ruby 等流行語言的歷史,並研究它們各自獲得廣泛認可所需的時間。例如,在我看來,Perl 在 20 世紀 90 年代中後期就已完全成熟,伴隨著 CGI 指令碼和網路的發展,但它實際上是在 1987 年首次釋出的。這種模式幾乎出現在我研究過的每一種語言中:一種新的語言似乎都需要大約十年時間才能透過默默的、持續的改進和傳播,最終真正騰飛。

我想知道:十年後 Go 會在哪裡?

今天,我們可以回答這個問題:Go 無處不在,在全球擁有至少 一百萬開發者在使用。

Go 最初的目標是網路系統基礎設施,也就是我們現在所說的雲軟體。如今,每個主要的雲服務提供商都在使用用 Go 編寫的核心雲基礎設施,例如 Docker、Etcd、Istio、Kubernetes、Prometheus 和 Terraform;雲原生計算基金會的大部分專案都是用 Go 編寫的。無數公司也正在使用 Go 將自己的業務遷移到雲端,從從頭開始構建的初創公司到正在對其軟體棧進行現代化的企業。Go 也已經超出了其最初的雲目標,其應用範圍廣泛,從使用 GoBotTinyGo 控制小型嵌入式系統,到在 GRAIL 進行大規模大資料分析和機器學習以檢測癌症,以及介於兩者之間的各種應用。

這一切都表明,Go 的成功超出了我們最狂野的夢想。而 Go 的成功不僅僅在於語言本身。它在於語言、生態系統,尤其是社群的共同努力。

2009 年,這門語言只是一個好想法,有一個可行的草圖實現。當時還沒有 go 命令:我們使用 6g 來編譯,6l 來連結二進位制檔案,並使用 makefiles 自動化。我們在語句末尾輸入分號。整個程式在垃圾回收期間會停止,而當時的垃圾回收器很難充分利用兩個核心。Go 只在 Linux 和 Mac 上執行,支援 32 位和 64 位 x86 以及 32 位 ARM。

在過去十年裡,在世界各地 Go 開發者的幫助下,我們將這個想法和草圖發展成了一種高效的語言,擁有了出色的工具、生產級的實現、最先進的垃圾回收器,以及支援 12 種作業系統和 10 種架構的移植

任何程式語言都需要一個蓬勃發展的生態系統的支援。開源釋出是該生態系統的種子,但此後,許多人貢獻了他們的時間和才華,用很棒的教程、書籍、課程、部落格文章、播客、工具、整合,當然還有可以透過 go get 匯入的可重用 Go 包來充實 Go 生態系統。沒有這個生態系統的支援,Go 永遠不可能成功。

當然,生態系統需要一個活躍的社群來支援。2019 年,世界各地有幾十個 Go 會議,以及超過 150 個 Go 聚會小組,擁有超過 90,000 名成員GoBridgeWomen Who Go 透過指導、培訓和會議獎學金,幫助為 Go 社群帶來新的聲音。僅在今年,他們就在工作坊中為數百名來自傳統代表性不足群體的學員進行了培訓,社群成員在這些工作坊中指導剛接觸 Go 的人。

全球有超過一百萬 Go 開發者,全球各地的公司都在尋求招聘更多人。事實上,人們經常告訴我們,學習 Go 幫助他們獲得了在科技行業的第一份工作。最終,我們對 Go 最引以為豪的不是一個設計精良的功能或一段巧妙的程式碼,而是 Go 在如此多人的生活中產生的積極影響。我們的目標是創造一種能夠幫助我們成為更好的開發者的語言,我們很高興 Go 幫助了這麼多其他人。

隨著 #GoTurns10 的到來,我希望每個人都能花點時間慶祝 Go 社群以及我們所取得的一切成就。我謹代表 Google 的整個 Go 團隊,感謝過去十年裡與我們同行過的每一個人。讓我們一起讓下一個十年更加精彩!

下一篇文章:Go.dev:Go 開發者的新樞紐
上一篇文章:Go Modules:v2 及後續版本
部落格索引