Go 语言核心设计开发团队成员 Russ Cox 在推特上针对 AWS 前几天发布的 可持续性 Rust 的相关文章提出了批评。
以下是机翻 Russ Cox 十几条推特中的观点,一句话总结就是:“ AWS 的报告对 Go 语言这几年的改进有点失真,那个多语言能耗统计表格是2017年的,故意忽视 Go 语言这么多年的改进是不负责任的”。总得来说,Russ 的观点是很客观的。他也承认 Rust 是一门优秀语言,他更关心的是,如何让 Rust 和 Go 语言如何相互补充并能很好合作的方式。
1. 首先,“几年前真正有趣的研究”存在明显的问题。首先,它于 2017 年 10 月在 Intel i5-4460 CPU(2014 年第二季度)上使用 Go 1.6(2016 年 2 月)发布。那是永远的过去了。
2. 除此之外,"非常有趣的研究 "假设计算机语言基准游戏是可比程序的来源,如果你知道那个网站的话,这根本就不是真的。
3. 如果你的研究报告声称C++比C多用34%的能量,多用56%的时间,多用14%的内存,那么是时候重新审视你的假设了。大约每一个C程序都是一个有效的C++程序,所以C++不可能输,尤其是不可能输得那么惨!
4. 所有这些都是在说,"真正有趣的研究 "其实并不有趣。事实上,显然应该以一种健康的怀疑态度来看待它。
5. Discord帖子中关于从Go切换到Rust的总结是令人难以置信的误导。
6. 最初的Discord帖子显示了一个单一的图表,绘制了Go服务器和同等的Rust服务器。Rust线的性能更可预测,避免了Go线的延迟峰值,但这两条线大致相当。
7. 相反,AWS的帖子将Go图显示在Rust服务器经过重大改写以使用新的数据结构和更多的内存后的图旁边,圈出了 "ms "与 "μs "的时间尺度。这要么是对Discord帖子的完全误解,要么是公然的不诚实。
8. 作为一个旁观者,我自己以前也用过这种比例变化来说明问题(https://swtch.com/~rsc/regexp/regexp1.html)。当你展示一个诚实的、公平的比较时,这是一个很好的方法来说明问题。但是AWS的帖子并不是这样。
9. 说白了,Discord的帖子是公平的。它展示了Go服务器和同等的Rust服务器的“苹果对苹果“的比较。在帖子的后面,它又把Rust服务器的数据结构和额外的内存改写后,单独进行了图表。AWS的帖子对此进行了歪曲。
10. 也就是说,Discord的帖子也描述了Go 1.10,而Go 1.18也即将发布。这八个版本有很多改进,减少了有非常大的堆或非常多的goroutines的程序中的GC暂停(而Discord服务器两者都有)
11. 所以,使用最近的Go,Discord的延迟峰值会大大减少,我们也有计划进一步减少它们。但是,对于该服务器来说,Rust仍然是一种很好的语言,团队做出了一个合理的决定。(等待Go的改进也是可以的。)
12. AWS的帖子确实对Rust提出了一些诚实、公正的观点,这使得他们把这些关于Go的误导性陈述包括在内更加令人遗憾。他们没有必要这么做。Rust足够好,可以独立存在。
13. 就个人而言,与其阅读那些假装Go与Rust是某种零和游戏的博文,我更愿意关注Go和Rust相互补充并能很好合作的方式。比如这个帖子。https://thenewstack.io/rust-vs-go-why-theyre-better-together/
以下是机翻 Russ Cox 十几条推特中的观点,一句话总结就是:“ AWS 的报告对 Go 语言这几年的改进有点失真,那个多语言能耗统计表格是2017年的,故意忽视 Go 语言这么多年的改进是不负责任的”。总得来说,Russ 的观点是很客观的。他也承认 Rust 是一门优秀语言,他更关心的是,如何让 Rust 和 Go 语言如何相互补充并能很好合作的方式。
1. 首先,“几年前真正有趣的研究”存在明显的问题。首先,它于 2017 年 10 月在 Intel i5-4460 CPU(2014 年第二季度)上使用 Go 1.6(2016 年 2 月)发布。那是永远的过去了。
2. 除此之外,"非常有趣的研究 "假设计算机语言基准游戏是可比程序的来源,如果你知道那个网站的话,这根本就不是真的。
3. 如果你的研究报告声称C++比C多用34%的能量,多用56%的时间,多用14%的内存,那么是时候重新审视你的假设了。大约每一个C程序都是一个有效的C++程序,所以C++不可能输,尤其是不可能输得那么惨!
4. 所有这些都是在说,"真正有趣的研究 "其实并不有趣。事实上,显然应该以一种健康的怀疑态度来看待它。
5. Discord帖子中关于从Go切换到Rust的总结是令人难以置信的误导。
6. 最初的Discord帖子显示了一个单一的图表,绘制了Go服务器和同等的Rust服务器。Rust线的性能更可预测,避免了Go线的延迟峰值,但这两条线大致相当。
7. 相反,AWS的帖子将Go图显示在Rust服务器经过重大改写以使用新的数据结构和更多的内存后的图旁边,圈出了 "ms "与 "μs "的时间尺度。这要么是对Discord帖子的完全误解,要么是公然的不诚实。
8. 作为一个旁观者,我自己以前也用过这种比例变化来说明问题(https://swtch.com/~rsc/regexp/regexp1.html)。当你展示一个诚实的、公平的比较时,这是一个很好的方法来说明问题。但是AWS的帖子并不是这样。
9. 说白了,Discord的帖子是公平的。它展示了Go服务器和同等的Rust服务器的“苹果对苹果“的比较。在帖子的后面,它又把Rust服务器的数据结构和额外的内存改写后,单独进行了图表。AWS的帖子对此进行了歪曲。
10. 也就是说,Discord的帖子也描述了Go 1.10,而Go 1.18也即将发布。这八个版本有很多改进,减少了有非常大的堆或非常多的goroutines的程序中的GC暂停(而Discord服务器两者都有)
11. 所以,使用最近的Go,Discord的延迟峰值会大大减少,我们也有计划进一步减少它们。但是,对于该服务器来说,Rust仍然是一种很好的语言,团队做出了一个合理的决定。(等待Go的改进也是可以的。)
12. AWS的帖子确实对Rust提出了一些诚实、公正的观点,这使得他们把这些关于Go的误导性陈述包括在内更加令人遗憾。他们没有必要这么做。Rust足够好,可以独立存在。
13. 就个人而言,与其阅读那些假装Go与Rust是某种零和游戏的博文,我更愿意关注Go和Rust相互补充并能很好合作的方式。比如这个帖子。https://thenewstack.io/rust-vs-go-why-theyre-better-together/