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