Go 核心团队 Russ Cox "驳斥"AWS 博文作者 :对 Go 存在严重误导!

简介: Go 核心团队 Russ Cox "驳斥"AWS 博文作者 :对 Go 存在严重误导!

2 月 23 日,Go 语言核心开发团队 Russ Cox (rsc) 在社交媒体上连发多条推文,“斥责” AWS 官方于前几日发布的一篇博文对 Go 存在着严重的误导。

image.png

据悉,AWS 官方博客于 2月 11日 发布了一篇题为《Sustainability with Rust》的文章,该博文作者为 AWS 的 Rust 倡导者兼软件工程师 Shane Miller 和 AWS 首席工程师 Carl Lerche。他们在文中对 Rust 语言在 AWS 内部发展历程以及基于 Rust 推出的一系列 AWS 产品做了回顾,并对该语言的亮点优势进行了分析和评价。

image.png

这篇博文本身分析的思路并没什么问题,但作者 Shane Miller 在文中作比较时,为了突出 Rust 的高效安全,称 Go 语言“是一种垃圾回收(GC)语言,在创建和释放对象时,垃圾收集器需要停止程序的执行并运行垃圾收集过程。”。

听到这样的评价,作为 Go 语言开发团队的 Leader, Russ Cox 自然有些坐不住了,因此要出来对该“误导”言论进行驳斥。

在 AWS 这篇博文中,作者称 Rust 是一种能将 C 等系统编程语言的性能和资源效率与 Java 等语言的内存安全结合起来的一种语言,是一种“专为开源项目而生”的语言。并透露“ Rust 将很快成为 AWS 大规模建设基础设施发展的关键”,且 AWS 正在投资 Rust 的可持续性,或将使用这种语言来构建可持续和安全的解决方案。

image.png

文中,作者还引用了此前一项用 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 来实现。

image.png

此时, 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 日连发多篇推文来进行驳斥这件事的原因。

image.png

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 足以自立。”

image.png

正如上面 Russ Cox 附上的那篇《Rust vs. Go: Why They’re Better Together》文章的观点,他强调称“就我个人而言,与其读那些假装 Go vs Rust 是某种零和游戏的博客文章,我更愿意关注 Go 和 Rust 相辅相成、可以很好地协同工作的方式。

目前,外网关于该话题的讨论也在持续上升,不少网友及开发者都已经涌入了 Russ Cox 的推文评论区留言。关于该话题的后续发展,本站也将持续关注,如果您对该话题有任何看法,也欢迎在评论区留言互动。

go

相关文章
|
Linux 数据处理 开发者
Linux命令ld.bfd:二进制文件的强大链接器
`ld.bfd`是GNU链接器的变体,利用BFD库处理多种目标文件格式(如ELF, COFF)。它收集文件,解析符号,执行重定位,生成可执行文件。特点包括多格式支持,高效符号管理和诊断信息。常用命令如`ld.bfd -o output file1.o file2.o -lc`。注意文件路径、链接顺序,利用诊断信息和文档,保持工具更新以优化使用。
|
Kubernetes 安全 API
Cilium 系列 -3-Cilium 的基本组件和重要概念
Cilium 系列 -3-Cilium 的基本组件和重要概念
|
Go
Go语言浮点数完全手册 float32和float64一文掌握!
Go语言浮点数完全手册 float32和float64一文掌握!
4656 0
|
JavaScript 前端开发 Serverless
前端全栈之路Deno篇:Deno2.0与Bun对比,谁更胜一筹?可能Deno目前更适合serverless业务
在前端全栈开发中,Deno 2.0 和 Bun 作为新兴的 JavaScript 运行时,各自展现了不同的优势。Deno 2.0 重视安全性和多平台兼容性,尤其是对 Windows 的良好支持和原生 TypeScript 支持;而 Bun 则以卓越的性能和简便的开发体验著称,适合快速迭代的小型项目。两者在不同场景下各具特色,Deno 更适合企业级应用和serverless,Bun 则适用于追求速度的项目。
2551 2
|
安全 网络安全 数据安全/隐私保护
windows ssh 如何修改密码
【5月更文挑战第21天】windows ssh 如何修改密码
2970 2
|
存储 算法 数据库
细数各大唯一id生成算法
一、序言几乎所有的业务系统,都有生成一个唯一id的需求,例如: 1.订单号2.活动id3.消息id这个记录标识往往就是数据库中的唯一主键,也可以作为唯一索引。这个记录标识上的查询,往往又有分页或者排序的业务需求,例如: (1)拉取最新的一页的聊天记录:select * by message_id/ order by gmt_create/ limit 100 (2)拉取最近的一百条流水:selec
1016 0
细数各大唯一id生成算法
|
JSON 编解码 缓存
探究|Go JSON 三方包哪家强?
本文作者从评判标准、功能评测、性能评测等多方面剖析三方库哪些家强,并给出了比较务实的建议。
探究|Go JSON 三方包哪家强?
|
关系型数据库 Docker 容器
回顾容器标准之争:Docker赢了,而CoreOS未必就输了
本文讲的是回顾容器标准之争:Docker赢了,而CoreOS未必就输了,【编者的话】本文讲述了Docker和CoreOS容器标准之争的历史,现在这两家公司决定一起合作OCP(开放容器项目),无疑,这对于广大Docker爱好者来说都是一个好消息。
1972 0
|
测试技术 C++
C++单元测试之一--利用gcov做代码覆盖率检查
    单元测试(unit test)是一种白盒测试,它是开发人员对自己编写的代码所做的测试。所谓白盒测试,就是浏览并测试代码的各个部分和分支。一般它需要开发人员自己写一些测试代码,来调用被测代码的接口,并通过测试结果来判断被测代码是否正确工作。
1585 0