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 的推文評論區留言。關於該話題的後續發展,本站也將持續關注,如果您對該話題有任何看法,也歡迎在評論區留言互動。