
Python 2 在 2020 年寿终正寝,美国教育非盈利组织可汗学院(Khan Academy)在 2019 年开始为大规模迁移做准备,要么过渡到 Python 3,要么选择其他技术栈。
目前该学院已用 Go 语言完成了 50 万行代码,来取代之前用 Python 2 编写的后端服务器。据该学院的首席架构师 Kevin Dangoor 介绍,他们在名为 Goliath 的项目上由 Python 2 向 Go 转变。

Kevin Dangoor 在 2019 年曾发文表示,从 Python 2 迁移到 Python 3 并非易事,除了外界普遍认为的障碍外,他们在项目中还使用了大量的第三方 API。因此,他们又把目标转移到了 Kotlin 上,Kotlin 是一个非常富有表现力的语言,其性能优势可以节省不少费用。与此同时,他们还试用了 Go,并针对这两门语言进行了性能测试,最终 Go 胜出。Go 语言的简单性和一致性,内存占用少,以及 Go 团队致力于开发一种可以帮助团队长期可靠地发布软件为其赢得了优势。

除了上述原因之外,Go 超快速的编译速度可以更快地进行迭代。此外,Dangoor 团队成员还拥有多年的开发经验和使用多种编辑器经验。而 Go 比 Kotlin 更受各种编辑器的支持。Go 在错误处理,工具链等放也让团队成员感到满意。
Goole 于 2007 年开始在内部使用 Go,并在 2012 年发布了 Go 1.0 版本,目前它已跻身最受欢迎的 TOP 20 编程语言行列, 尽管还有一些用户会抱怨 Go 缺乏泛型等缺点,他们“虽然大多数情况下不需要泛型。但有时候,特别是在写内部库,尤其是涉及到 slice 时,就会明显感觉到对泛型的需求...... 我们希望少写一点代码,而泛型提供的选项将对此有所帮助。”
Go 团队在今年早些时候已经发布了一项启用通用编程的提案,将允许开发者编写函数和数据结构来指定一些类型,该提案有望在 Go 2021 年底发布。
尽管 Go 比 Python 要更加“冗长”,但 Dangoor 团队的一些工程师依然认为 Go 要优于 Python,尤其是在后期代码的维护,版本迭代方面。
尽管 Python 2.x 寿命早已结束,但在面对 Python 2 系列的遗留项目时,你是选择了新技术栈还是转向 Python 3.x ?欢迎大家与我们聊聊你们是如何选择的。
参考链接:
https://www.zdnet.com/article/programming-languages-from-python-to-500000-lines-of-go-how-one-organization-is-making-a-big-switch/?ftag=CAD-03-10abf6j
https://blog.khanacademy.org/go-services-one-goliath-project/
https://www.zdnet.com/article/programming-languages-from-python-to-500000-lines-of-go-how-one-organization-is-making-a-big-switch/?ftag=CAD-03-10abf6j


