2 月 23 日,Go 语言核心开发团队 Russ Cox (rsc) 在社交媒体上连发多条推文,“斥责” AWS 官方于前几日发布的一篇博文对 Go 存在着严重的误导。
据悉,AWS 官方博客于 2月 11日 发布了一篇题为《Sustainability with Rust》的文章,该博文作者为 AWS 的 Rust 倡导者兼软件工程师 Shane Miller 和 AWS 首席工程师 Carl Lerche。他们在文中对 Rust 语言在 AWS 内部发展历程以及基于 Rust 推出的一系列 AWS 产品做了回顾,并对该语言的亮点优势进行了分析和评价。
这篇博文本身分析的思路并没什么问题,但作者 Shane Miller 在文中作比较时,为了突出 Rust 的高效安全,称 Go 语言“是一种垃圾回收(GC)语言,在创建和释放对象时,垃圾收集器需要停止程序的执行并运行垃圾收集过程。”。
听到这样的评价,作为 Go 语言开发团队的 Leader, Russ Cox 自然有些坐不住了,因此要出来对该“误导”言论进行驳斥。
在 AWS 这篇博文中,作者称 Rust 是一种能将 C 等系统编程语言的性能和资源效率与 Java 等语言的内存安全结合起来的一种语言,是一种“专为开源项目而生”的语言。并透露“ Rust 将很快成为 AWS 大规模建设基础设施发展的关键”,且 AWS 正在投资 Rust 的可持续性,或将使用这种语言来构建可持续和安全的解决方案。
文中,作者还引用了此前一项用 27 种不同的编程语言实现 10 个基准问题的研究,来验证各种语言在执行时间、能耗和峰值内存使用方面的情况。
在拿其他语言如 C 、谷歌的 Go ,以及 Lua、Python、Ruby 和老版的 Fortran 等语言来与 Rust 做对比后,最终的得出的结论是:“C 和 Rust 比其他语言的效率更高,其差异的程度令人震惊” —— 比 Java 高 50%,比 Python 高 98%。
随后,Miller 强调称“Rust 不仅关乎内存安全和减少安全缺陷 —— 它是一种比 Python 和 Java 更环保的语言”。他表示,Rust 可在不存在未定义行为的风险情况下提供 C 的能源效率,即可在不损失内存安全好处的情况下将能源消耗减半。
为了证明这一点,Miller 例举了网络安全公司 Tenable 的一款应用程序的性能 —— 该应用程序以前是用 JavaScript 编写的,但现在则是用 Rust 来编写,“Rust应用程序在 CPU 性能方面对 JavaScript 造成了冲击,延迟减少了一半,CPU 使用率减少了 75%,内存使用率减少了 95%”。
此外,还有如受欢迎的信息应用 Discord 最初也是基于 Python、谷歌的 Go 和Elixir 来构建的,不过后来都开始换成用 Rust 来实现。
此时, Shane Miller 突然话锋一转,拿 Go 语言“开刀”,称其为“垃圾回收(GC)语言”的那句评价,也因此引发了开篇的“误解”:
“因为Go是一种垃圾收集(GC)语言,当对象被创建和释放时,垃圾收集器经常需要停止程序的执行并运行垃圾收集过程。当 GC 运行时,进程无法响应请求,并且在运行时可以看到CPU上的峰值和响应时间图。”
对此,Go 语言开发团队 Russ Cox 批评称:“AWS 在这里的比较,是对 Go 的一种严重的误导”。
Russ Cox 认为,AWS 的文章将两者进行对比时,将 Go 版本的数据与在使用新的数据结构和更多内存后的 Rust 版本数据放在了一起,还特意圈出“ms”和“µs”时间刻度。因此,rsc 表示,这要么是 AWS 对 Discord 的原贴存在误解,要么就是公然地说谎。
随后,由于 外媒 ZDNet 也转发了上面 AWS 这篇《Sustainability with Rust》博文,所以这也让 Russ Cox 更有必要出面来澄清事实。
这也就回到了开篇 Russ Cox 突然在 23 日连发多篇推文来进行驳斥这件事的原因。
23 日,Russ Cox 发推文转载了一篇题为《Rust vs. Go: Why They’re Better Together》的文章称:
“I wasn’t going to say anything, but since ZDNet has republished the AWS “Sustainability with Rust” blog post, a short thread about why that post is misleading (at best) about Go. ”
他表示,本来自己什么都不想说,但既然 ZDNet 已经转发了 AWS 这篇《Sustainability with Rust》的帖子,那么就有这篇(《Rust vs. Go: Why They’re Better Together》)简短的帖子来解释为什么 AWS 的文章(充其量)是对 Go 的一种误导。
他还表示,“AWS 的帖子确实对 Rust 做了一些诚实、公正的评论,这使得他们包含这些关于 Go 的误导性声明更加令人遗憾。“他们本不需要那样做,因为 Rust 足以自立。”
正如上面 Russ Cox 附上的那篇《Rust vs. Go: Why They’re Better Together》文章的观点,他强调称“就我个人而言,与其读那些假装 Go vs Rust 是某种零和游戏的博客文章,我更愿意关注 Go 和 Rust 相辅相成、可以很好地协同工作的方式。
目前,外网关于该话题的讨论也在持续上升,不少网友及开发者都已经涌入了 Russ Cox 的推文评论区留言。关于该话题的后续发展,本站也将持续关注,如果您对该话题有任何看法,也欢迎在评论区留言互动。