編譯丨諾亞
出品 | 51CTO技術棧(微信號:blog51cto)
谷歌的工程總監Lars Bergstrom在倫敦的Rust Nation UK大會上分享了谷歌將Go或C++編寫的項目遷移到Rust語言的經驗。
他表示,使用Rust的開發團隊相比于使用C++的團隊,在工作效率上大約高出兩倍。
早在2016年Dropbox和2018年Figma就已經開始嘗試用Rust重寫代碼以確保內存安全,但當時業界對于Rust在生產力和語言可靠性方面的疑慮并未完全消除。
然而隨著時間推移,尤其是在軟件安全性日益成為國家基礎設施關鍵問題的大背景下,非內存安全語言帶來的挑戰引起了更廣泛的認識轉變。美國和其他國家政府機構也強調了軟件中內存安全的重要性。
微軟Azure首席技術官Mark Russinovich在2022年9月提出,原本可能選擇C/C++進行開發的軟件項目應考慮改用Rust,這一建議不僅適用于新項目,還擴展到對舊的、非內存安全語言編寫的代碼進行重構的需求。
今年早些時候,微軟甚至發出了求助呼吁,希望開發者協助將自家的C#代碼移植至Rust,并且互聯網安全研究組(ISRG)的Prossimo項目正在將一些核心開源組件,如NTP、DNS、TLS等重要庫重寫為Rust版本,旨在提高內存安全性。
盡管C++之父Bjarne Stroustrup以及其他人士對此有所抵觸,Stroustrup在回應2022年11月NSA關于內存安全的備忘錄時指出,通過合適的工具,C++也能在較低成本下達到與Rust相當的內存安全保證。
然而,像谷歌這樣的Rust實踐者提供的反例則顯示,堅持使用現有C++基礎設施的成本優勢可能并不成立。
谷歌內部將Go代碼轉換為Rust的過程中,發現重構后的項目開發所需的時間和人力并沒有增加,反而顯示出諸多優點。
Bergstrom提到,將Go代碼重寫為Rust時,同等規模的團隊可以在相同時間內完成工作,這意味著從Go轉向Rust并不會導致生產力下降;相反,他們觀察到了Rust代碼帶來的好處,比如服務內存使用量減少以及隨著時間推移,用Rust重寫的服務缺陷率逐漸降低,從而提高了程序正確性。
更重要的是,相較于C++代碼轉為Rust的情況,Rust開發者的生產效率優勢更為明顯。
此外,各方觀點也指出,雖然內存安全性是軟件安全的重要組成部分,但并非所有安全問題都能歸結于內存安全。
卡內基梅隆大學軟件工程研究所等機構強調,所有編程語言都有其權衡之處,選擇何種語言應取決于它是否適合特定應用場景。
某些情況下,強調內存安全的語言可能會犧牲性能和時間要求,而且無論選用哪種語言,開發者都必須掌握正確的語法、語義、結構、習慣用法及工具,否則可能會出現其他類型的漏洞或缺陷。
盡管如此,Rust通過避免內存相關的安全隱患,在許多場景下被視為提升軟件安全性的有效手段之一。
參考鏈接:https://www.theregister.com/2024/03/31/rust_google_c/
想了解更多AIGC的內容,請訪問:
51CTO AI.x社區
https://www.51cto.com/aigc/
本文鏈接:http://www.tebozhan.com/showinfo-26-82188-0.html倍殺!谷歌表示:Rust團隊的開發效率是C++團隊的兩倍
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 十個超級實用的Java代碼片段