50 萬行Go代碼,美國一組織從Python 2遷移到 Go
美國教育非營利組織可汗學院(Khan Academy)方面透露,其已經用谷歌的 Go 編程語言完成了 50 萬行代碼,以取代此前用 Python 2 編寫的后臺服務器。根據介紹,可汗學院在其 Goliath 項目下實現了從 Python 2 到 Go 的大轉變。Goliath 最初是使用 Python 2 實現的;從 2019 年開始,可汗學院逐步將其遷移到了 Go。
當我們開始 Goliath 項目的時候,團隊中沒有人知道 Go,只是通過實驗驗證了 Go 是相較而言更好的選擇。今天,我們所有的后端和全棧工程師都在寫 Go,而我們對 Goliath 的漸進式交付也使我們跨越了一個重要的里程碑。現在有超過 50 萬行的 Go 代碼在生產中運行。這似乎是對 Go 本身進行反思的一個好時機。
Python 2 于 2020 年初到達 EOL 階段;鑒于此,可汗學院計劃進行大規模遷移。對此,可汗學院的首席軟件架構師 Kevin Dangoor 曾表示,從 Python 2 遷移到 3 并不是一件容易的事。
他的團隊曾認為 Kotlin 是一個有吸引力的選擇,但最終還是選擇了 Go;其工程師認為,和 Python 3 相比,Go 具有很大的性能優勢。“由于 Go 的編譯速度快得驚人,我們可以更快地進行迭代。此外,我們的團隊成員擁有多年的經驗和圍繞許多不同編輯器建立的肌肉記憶。Go 比 Kotlin 更受各種編輯器的支持。”
很多可汗學院的工程師反饋稱,Go 很容易寫和讀,并表示自己越是使用 Go 就越喜歡它。同時,Go 的錯誤處理、工具鏈以及編譯速度也都收到了諸多好評。另一方面,可汗學院方面也表達了對泛型的需要。“雖然大多數情況下不需要泛型。但有時候,特別是是在寫內部庫,尤其是涉及到 slice 時,就會明顯感覺到對泛型的需求...... 我們希望少寫一點代碼,而泛型提供的選項將對此有所幫助。”
最后,該組織總結稱,雖然一般來說 Go 比 Python 更冗長;但他們還是更喜歡 Go 一些,因為它速度快、工具好用、并且在生產中運行良好。