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 一些,因为它速度快、工具好用、并且在生产中运行良好。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
xarray —— 在 NumPy 多维数组中加入变量名和坐标索引
xarray 是一个开源 Python 包,它可以使处理多维数组更加简单、高效并有趣。xarray 在原始类 NumPy 多维数组中引入了标签化的变量名称和坐标索引,实现了更直观、更简洁和更加不容易出错的能力。该软件包包括一个庞大且不断增长的域无关功能库,用于使用这些数据结构进行高级分析和可视化。xarray 灵感来自同为解决数据分析任务而诞生的pandas。 多维数组(张量)是计算科学的重要组成部分,它们涉及广泛的领域,包括物理学、天文学、地球科学、生物信息学、工程学、金融学和深度学习。在 Python 中,NumPy 提供了用于处理原始多维数组的基本数据结构和 API,但是,真实世界的数据集通常不仅仅是原始数据,它们有标签,用于编码有关数组值如何映射到空间、时间等位置的信息。所以有有了 xarray 这个项目,它在原始类 NumPy 多维数组中引入了标签化的变量名称和坐标索引,实现了更直观、更简洁和更加不容易出错的能力。 特性: 通过变量名操作多维数组,比如:x.sum('time') 通过标签而不是位置选中值:x.loc['2014-01-01'] 或 x.sel(time='2...
- 下一篇
Mozilla 开始向所有版本的 Firefox 推送站点隔离功能
Mozilla 日前开始向所有版本的Firefox 推送站点隔离这一保护用户安全的功能,让用户免受恶意网站发起的攻击。 此前,站点隔离功能只能在 Firefox Nightly 版本中启用,NIghtly 是 Mozilla 用来测试新功能的发布渠道,其中的功能通常都处于尚未准备好更广泛推广的阶段。自 2018 年 4 月以来,站点隔离功能一直处于开发状态中,其代号为 Project Fission,Mozilla 于 2019 年 2 月首次宣布计划将其添加到 Firefox 浏览器中。 反观 Firefox 的竞争对手,Google Chrome 浏览器中也有类似的站点隔离功能,Google 早在 2017 年 12 月就将该功能作为 Chrome 63 的实验性功能发布,随后在 2018 年 5 月底发布的 Chrome 67 中成为浏览器的正式功能。 站点隔离如何工作 新的站点隔离安全架构作为网站之间的一个额外的安全边界,它通过完全分离用户的网络内容,并在独立的进程中加载所有网站而发挥作用。 因此,它可以防止恶意网站读取从其他网站加载的私人数据(包括密码、信用卡号码或其他敏感信...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8编译安装MySQL8.0.19