IT之家 4 月 1 日消息,過(guò)去兩年,Rust 編程語(yǔ)言風(fēng)頭正勁,而 C / C++ 則略顯疲態(tài)。谷歌近日分享了他們將項(xiàng)目從 Go 和 C++ 代碼遷移至 Rust 的經(jīng)驗(yàn),結(jié)果令人驚訝:Rust 開(kāi)發(fā)者的效率竟然可以達(dá)到 C++ 團(tuán)隊(duì)的兩倍。
谷歌安卓平臺(tái)工具和庫(kù)的工程總監(jiān) Lars Bergstrom 在倫敦舉行的 Rust Nation 英國(guó)峰會(huì)上分享了這一消息。過(guò)去幾年,業(yè)界對(duì)于 Rust 的安全性和可靠性一直存在疑慮。Bergstrom 指出,由于擔(dān)心“unsafe”關(guān)鍵字的存在,許多人認(rèn)為使用 C++ 更為穩(wěn)妥。然而,隨著人們逐漸意識(shí)到非內(nèi)存安全語(yǔ)言帶來(lái)的挑戰(zhàn),以及美國(guó)等國(guó)家政府將目光投向軟件在關(guān)鍵基礎(chǔ)設(shè)施扮演的角色,這種觀念正悄然發(fā)生改變。
Bergstrom 強(qiáng)調(diào),如今美國(guó)等國(guó)家政府都愈發(fā)重視軟件在關(guān)鍵基礎(chǔ)設(shè)施中的作用,而絕大多數(shù)大型代碼庫(kù)的安全漏洞都源于內(nèi)存安全問(wèn)題。由于 Rust 代碼在恰當(dāng)?shù)氖褂孟履苡行П苊獯祟悊?wèn)題,內(nèi)存安全儼然成為了國(guó)家安全議題之一。
IT之家注意到,微軟 Azure 首席技術(shù)官 Mark Russinovich 早在 2022 年 9 月就建議新項(xiàng)目使用 Rust 取代 C / C++。如今,這種趨勢(shì)正從全新項(xiàng)目擴(kuò)展到老舊代碼的重寫。今年早些時(shí)候,微軟號(hào)召開(kāi)發(fā)人員協(xié)助將 C# 代碼移植至 Rust。網(wǎng)絡(luò)安全研究小組 (ISRG) 的 Prossimo 項(xiàng)目也正致力于用 Rust 重寫關(guān)鍵庫(kù)的核心開(kāi)源部分 (例如 NTP、DNS、TLS),以提升內(nèi)存安全性。
當(dāng)然,并非所有人都認(rèn)同這一趨勢(shì)。C++ 創(chuàng)始人 Bjarne Stroustrup 認(rèn)為,通過(guò)適當(dāng)?shù)墓ぞ撸珻++ 也可以實(shí)現(xiàn)與 Rust 等內(nèi)存安全語(yǔ)言相同的保障,且成本更低。美國(guó)國(guó)家網(wǎng)絡(luò)總監(jiān)辦公室發(fā)布的軟件安全報(bào)告也引來(lái)了一些評(píng)論,指出內(nèi)存安全只是軟件安全挑戰(zhàn)的一部分,不應(yīng)該被過(guò)分夸大??▋?nèi)基梅隆大學(xué)軟件工程研究所強(qiáng)調(diào),每種編程語(yǔ)言都各有優(yōu)劣,選擇應(yīng)以適合項(xiàng)目為原則。
然而,谷歌等 Rust 擁護(hù)者的實(shí)踐案例則反駁了 Stroustrup 關(guān)于成本優(yōu)勢(shì)的說(shuō)法。Bergstrom 表示,將 Go 代碼 (被認(rèn)為是內(nèi)存安全但性能較低) 轉(zhuǎn)寫成 Rust 的過(guò)程中,谷歌取得了顯著的成效,“遷移過(guò)程所需團(tuán)隊(duì)規(guī)模和時(shí)間幾乎與 Go 開(kāi)發(fā)相當(dāng),并沒(méi)有降低效率。更重要的是,內(nèi)存使用率降低了,漏洞率也隨之減少,代碼正確性得到提升?!?/p>
更令人驚訝的是,將 C++ 代碼遷移至 Rust 的效率提升更加明顯?!霸谒邪咐?,用 Rust 構(gòu)建和維護(hù)服務(wù)的所需工作量都減少了一倍以上,” Bergstrom 指出,“這對(duì)我們來(lái)說(shuō)意義重大,因?yàn)?C++ 代碼的維護(hù)成本很高,需要龐大的團(tuán)隊(duì)投入大量精力,并且存在諸多風(fēng)險(xiǎn)?!?/p>
Bergstrom 還提到,谷歌正進(jìn)行類似的 Java 到 Kotlin 的遷移項(xiàng)目。根據(jù)內(nèi)部匿名調(diào)查,兩種情況下開(kāi)發(fā)者掌握新語(yǔ)言并達(dá)到原有開(kāi)發(fā)效率所需的時(shí)間大致相同。大約三分之一的開(kāi)發(fā)者在兩個(gè)月后,以及一半的開(kāi)發(fā)者在四個(gè)月后表示他們?cè)谛抡Z(yǔ)言中的工作效率與舊語(yǔ)言相當(dāng)。
此外,超過(guò)一半的開(kāi)發(fā)者認(rèn)為 Rust 代碼更容易審查。Bergstrom 分享了一個(gè)調(diào)查中最令團(tuán)隊(duì)驚訝的問(wèn)題:“人們對(duì)自己團(tuán)隊(duì)的 Rust 代碼的正確性有多么自信?” 調(diào)查結(jié)果顯示,有 85% 的開(kāi)發(fā)者給出了肯定的答復(fù)。Bergstrom 表示,這是一個(gè)非常高的數(shù)字。
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。