首頁 > 軟體

50 萬行 Go 程式碼!可汗學院拋棄 Python 轉向 Go

2021-05-21 15:00:05

2019 年 12 月,著名教育性非營利組織可汗學院宣佈了一項將後端重新設計為一系列 Go 服務的工程——Goliath,將後端最初使用的 Python 2 語言轉換為 Go 語言。近日可汗學院透露,目前已完成超過 50 萬行 Go 程式碼。

據介紹,在 Goliath 項目剛啟動時,除了團隊運行的驗證 Go 語言是更好選擇的實驗以外,團隊中沒有人瞭解 Go 語言。而現在,可汗學院所有的後端和全棧工程師都使用 Go 語言,目前已有超過 50 萬行 Go 程式碼在生產環境中運行。

為什麼會從 Python 轉向 Go 呢?可汗學院首席軟體架構師 Kevin Dangoor 進行了分析。

Python 2 到達 EOL 階段

2018 年,Python 團隊宣佈 Python 2.7 的 EOL(停用)日期為 2020 年 1 月 1 日,接下來,將不會有任何更新,也不會再有源碼安全補丁。這意味著使用 Python 2 的項目面臨著遷移。

對於使用 Python 2 作為後端伺服器語言的可汗學院,如何遷移、選擇何種語言成為當務之急。

他們認為從 Python 2 遷移到 Python 3 並非易事,於是在 Kotlin、Go 等語言中進行選擇,並最終選擇了 Go。原因如下:

Go 提供了簡潔性和一致性,Go 團隊致力於開發一種幫助團隊長期可靠地釋出軟體的語言;Go 的編譯速度驚人,可以幫助團隊實現更快速的迭代;與 Kotlin 相比,Go 得到了更廣泛的編輯器的支援;Go 和 Kotlin(在 JVM 上)的效能相似,但 Go 使用的記憶體少得多,這意味著它可以縮減為更小的例項。那麼,在使用 Go 語言後,開發團隊接受度如何呢?

工程師喜歡 Go 語言

可汗學院的工程師認為 Go 語言具備「易於讀寫」等優秀特性。此外,Go 語言在錯誤處理、標準庫文件、編譯器、工具鏈、效能、處理速度等多個方面受到好評,甚至其地鼠吉祥物也贏得了一片讚譽。

不過,可汗學院團隊也表達了對泛型的需求。他們認為在編寫內部庫程式碼或處理 slice 時尤其需要泛型。缺乏泛型是人們對 Go 語言的最大抱怨。

目前,可汗學院已完成 50 萬餘行 Go 程式碼。Kevin Dangoor 表示,雖然 Go 語言整體上比 Python 冗長,但它速度快、工具好用、在生產環境中運行良好。

參考連結:

https://blog.khanacademy.org/half-a-million-lines-of-go/

https://blog.khanacademy.org/go-services-one-goliath-project/

技術編輯:小魔丨發自 思否編輯部

公眾號:SegmentFault


IT145.com E-mail:sddin#qq.com