50 萬行 Go 代碼!可汗學院拋棄 Python 轉(zhuǎn)向 Go
2019 年 12 月,著名教育性非營利組織可汗學院宣布了一項將后端重新設(shè)計為一系列 Go 服務(wù)的工程——Goliath,將后端最初使用的 Python 2 語言轉(zhuǎn)換為 Go 語言。近日可汗學院透露,目前已完成超過 50 萬行 Go 代碼。
據(jù)介紹,在 Goliath 項目剛啟動時,除了團隊運行的驗證 Go 語言是更好選擇的實驗以外,團隊中沒有人了解 Go 語言。而現(xiàn)在,可汗學院所有的后端和全棧工程師都使用 Go 語言,目前已有超過 50 萬行 Go 代碼在生產(chǎn)環(huán)境中運行。
為什么會從 Python 轉(zhuǎn)向 Go 呢?可汗學院首席軟件架構(gòu)師 Kevin Dangoor 進行了分析。
Python 2 到達 EOL 階段
2018 年,Python 團隊宣布 Python 2.7 的 EOL(停用)日期為 2020 年 1 月 1 日,接下來,將不會有任何更新,也不會再有源碼安全補丁。這意味著使用 Python 2 的項目面臨著遷移。
對于使用 Python 2 作為后端服務(wù)器語言的可汗學院,如何遷移、選擇何種語言成為當務(wù)之急。
他們認為從 Python 2 遷移到 Python 3 并非易事,于是在 Kotlin、Go 等語言中進行選擇,并最終選擇了 Go。原因如下:
Go 提供了簡潔性和一致性,Go 團隊致力于開發(fā)一種幫助團隊長期可靠地發(fā)布軟件的語言; Go 的編譯速度驚人,可以幫助團隊實現(xiàn)更快速的迭代; 與 Kotlin 相比,Go 得到了更廣泛的編輯器的支持; Go 和 Kotlin(在 JVM 上)的性能相似,但 Go 使用的內(nèi)存少得多,這意味著它可以縮減為更小的實例。
那么,在使用 Go 語言后,開發(fā)團隊接受度如何呢?
工程師喜歡 Go 語言
可汗學院的工程師認為 Go 語言具備「易于讀寫」等優(yōu)秀特性。此外,Go 語言在錯誤處理、標準庫文檔、編譯器、工具鏈、性能、處理速度等多個方面受到好評,甚至其地鼠吉祥物也贏得了一片贊譽。

不過,可汗學院團隊也表達了對泛型的需求。他們認為在編寫內(nèi)部庫代碼或處理 slice 時尤其需要泛型。缺乏泛型是人們對 Go 語言的最大抱怨。
目前,可汗學院已完成 50 萬余行 Go 代碼。Kevin Dangoor 表示,雖然 Go 語言整體上比 Python 冗長,但它速度快、工具好用、在生產(chǎn)環(huán)境中運行良好。
參考鏈接:
https://blog.khanacademy.org/half-a-million-lines-of-go/
https://blog.khanacademy.org/go-services-one-goliath-project/

