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 的编译速度惊人,能够帮忙团队实现更疾速的迭代;
- 与 Gotlin 相比,Go 失去了更宽泛的编辑器的反对;
- Go 和 Kotlin(在 JVM 上)的性能类似,但 Go 应用的内存少得多,这意味着它能够缩减为更小的实例。
那么,在应用 Go 语言后,开发团队接受度如何呢?
工程师喜爱 Go 语言
可汗学院的工程师认为 Go 语言具备「易于读写」等优良个性。此外,Go 语言在错误处理、规范库文档、编译器、工具链、性能、处理速度等多个方面受到好评,甚至其地鼠吉祥物也博得了一片赞美。
不过,可汗学院团队也表白了对泛型的需要。他们认为在编写外部库代码或解决 slice 时尤其须要泛型。不足泛型是人们对 Go 语言的最大埋怨。
目前,可汗学院已实现 50 万余行 Go 代码。Kevin Dangoor 示意,尽管 Go 语言整体上比 Python 简短,但它速度快、工具好用、在生产环境中运行良好。
参考链接:
https://blog.khanacademy.org/…
https://blog.khanacademy.org/…