PTT推薦

[討論] Google開發工具工程總監:Rust 開發者的

看板Soft_Job標題[討論] Google開發工具工程總監:Rust 開發者的作者
Lushen
(pttlushen)
時間推噓31 推:39 噓:8 →:96

Google開發工具工程總監:Rust 開發者的生產力是 C++ 的兩倍

https://bit.ly/3JASfNe

過去兩年,Rust 程式語言風頭正勁,而 C / C++ 則略顯疲態。Google近日分享了他們將專案從 Go 和 C++ 程式碼遷移至 Rust 的經驗,結果令人驚訝:Rust 開發者的效率竟然可以達到 C++ 團隊的兩倍。

Google Android平台工具的工程總監 Lars Bergstrom 在倫敦舉行的 Rust Nation 英國峰會上分享了這一消息。

過去幾年,業界對於 Rust 的安全性和可靠性一直存在疑慮。Bergstrom 指出,由於擔心「unsafe」這個關鍵字,許多人認為使用 C++ 更為穩妥。然而,隨著人們逐漸意識到非記憶體安全語言帶來的挑戰,以及美國等國家政府將目光投向軟體在關鍵基礎設施扮演的角色,這種觀念正悄然發生改變。

Bergstrom 強調,如今美國等國家政府都愈發重視軟體在關鍵基礎設施中的作用,而絕大多數大型程式碼庫的安全漏洞都源於記憶體安全問題。由於 Rust 程式碼在恰當的使用下能有效避免此類問題,記憶體安全儼然成為了國家安全議題之一。

微軟:建議新專案使用 Rust 取代 C / C++

微軟 Azure 首席技術長 Mark Russinovich 早在 2022 年 9 月就建議新專案使用 Rust取代 C / C++。如今,這種趨勢正從全新項目擴展到老舊程式碼的重寫。今年早些時候,微軟號召開發人員協助將 C# 程式碼移植至 Rust。網路安全研究小組 (ISRG) 的
Prossimo 項目也正致力於用 Rust 重寫關鍵庫的核心開源部分 (例如 NTP、DNS、TLS),以提升記憶體安全性。

當然,並非所有人都認同這一趨勢。C++ 創始人 Bjarne Stroustrup 認為,通過適當的工具,C++ 也可以實現與 Rust 等記憶體安全語言相同的保障,且成本更低。美國國家網路總監辦公室發佈的軟體安全報告也引來了一些評論,指出記憶體安全只是軟體安全挑戰的一部分,不應該被過分誇大。卡內基梅隆大學軟體工程研究所強調,每種程式語言都各有優劣,選擇應以適合項目為原則。

然而,Google等 Rust 擁護者的實踐案例則反駁了 Stroustrup 關於成本優勢的說法。
Bergstrom 表示,將 Go 程式碼 (被認為是記憶體安全但性能較低) 轉寫成 Rust 的過程中,Google取得了顯著的成效,「遷移過程所需團隊規模和時間幾乎與 Go 開發相當,並沒有降低效率。更重要的是,記憶體使用率降低了,漏洞率也隨之減少,程式碼正確性得到提升。」

C++ 程式碼遷移至 Rust 的效率提升明顯

更令人驚訝的是,將 C++ 程式碼遷移至 Rust 的效率提升更加明顯。

「在所有案例中,用 Rust 建構和維護服務的所需工作量都減少了一倍以上,」
Bergstrom 指出,「這對我們來說意義重大,因為 C++ 程式碼的維護成本很高,需要龐大的團隊投入大量精力,並且存在諸多風險。」

Bergstrom 還提到,Google正進行類似的 Java 到 Kotlin 的遷移項目。根據內部匿名調查,兩種情況下開發者掌握新語言並達到原有開發效率所需的時間大致相同。大約三分之一的開發者在兩個月後,以及一半的開發者在四個月後表示他們在新語言中的工作效率與舊語言相當。

此外,超過一半的開發者認為 Rust 程式碼更容易審查。Bergstrom 分享了一個調查中最令團隊驚訝的問題:“人們對自己團隊的 Rust 程式碼的正確性有多麼自信?” 調查結
果顯示,有 85% 的開發者給出了肯定的答覆。Bergstrom 表示,這是一個非常高的數字。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.37.204 (臺灣)
PTT 網址

doranako04/27 15:30rust好像很威,請問c++值得轉到rust嗎

hermes01804/27 16:25有時間跟有興趣學的話當然好

hermes01804/27 16:26但先看看現在職缺的數量差異,可能就要再想想

shortoneal04/27 17:16以WASM來說,RUST的開發體驗跟GO比不知道如何

shortoneal04/27 17:17WASI起得來的話,應用場景應該可以更多

JhouHank04/27 17:32前陣子有聽到製造業前輩想把專案從PHP重構成NodeJS

qwe7897104/27 17:43目前來看主流還是c Java 換語言先不論學習成本 舊有的

qwe7897104/27 17:43系統多得是不能放棄的 新創可以轉rust試試而已

ohmylove34704/27 17:43台灣rust有缺嗎?求職網搜了下感覺有10個就不錯

qwe7897104/27 17:45看了一下 rust才1%左右 感覺像公關文了==

WWIII04/27 17:55++就是垃圾

Apache04/27 18:23主要是原生開發的比例本來就比較少 不要說Rust C++也少

Apache04/27 18:24在C++裡面又有很大比例是靠框架開發 嵌入式這種

Apache04/27 18:25所以能不能換過去就要看上游框架遷移的進度

ab4daa04/27 19:08perl才是地表最強

MoonCode04/27 19:09

hermithsieh04/27 19:11台灣資方:Rust薪資也給30K以上面議,反正有AI輔助

ssccg04/27 19:25有錢的公司就能一直換最新技術造輪子,一般公司還不是要等

ssccg04/27 19:25所有供應商換了才有得換

HaHadog04/27 19:28比較有名的那幾個語言任何一個以開發效率而言都能把c/c++

HaHadog04/27 19:28按在地上摩擦吧 c/c++一直都是以犧牲開發效率換取程式執

HaHadog04/27 19:28行效能的啊

qwe7897104/27 19:29有錢公司誰跟你狂造輪子== 拿LLM來說也是誰有能力直接

qwe7897104/27 19:29整個挖過來 你現在GITHUB能放個有潛力的作品 也是把人

qwe7897104/27 19:29整個挖過去 後續代碼更新 維護也有保障

qwe7897104/27 19:32開源聽起來好像沒錢賺 公司看到就兩條路 一是直接拿去

qwe7897104/27 19:32營利 二是把人挖過來 後續更新維護 持續營利 規模極大

qwe7897104/27 19:32的可以免費更新 靠其它方式營利 即便是擴大使用者族群

qwe7897104/27 19:32也可以 只有目光短淺才選一

testPtt04/27 19:49微軟不推個Rust.NET嗎 寫應用層的還是比較多吧

IhateOGC04/27 20:10賣害人了

IhateOGC04/27 20:11除非你都一輩子寫高階語言

refusekkk04/27 20:15就會吹

a73197704/27 21:02RUST真的比較安全,至少記憶體上面是這樣

Lhmstu04/27 21:07台灣別想了吧,根本沒什麼職缺

alan310004/27 21:18一般公司爛code寫下去就遺害5年以上 才沒閒人力說換就換

viper970904/27 21:51原來台灣職缺這麼少喔...

pig201404/27 22:15然後C++的效能是rust的一百倍

wei11504/27 22:22感恩Rust 讚嘆Rust Rust是拯救世界的光 R門

Kasima04/27 22:24嘻嘻想看c++如何快100倍,樓上可以寫個程式來展示一下嗎

wulouise04/27 22:37rust跟c++在同樣情境下效能差不多吧...

wulouise04/27 22:38只是你要重寫整個c++不容易,不然google會重寫chromium

etbear04/27 22:41當然不可能重寫 所以Google推的語言轉換都有一定相容性

etbear04/27 22:42不過Google對C++有意見一陣子了 之前還在試Carbon

fantasystar04/27 22:52有點意外google內部有團隊特必把go專案改寫成rust

KyuubiKulama04/27 23:29我猜是內部流動率太高,留下來的文件不夠完整加上

KyuubiKulama04/27 23:29收進來的人沒寫過C++導致維護成本大幅提高

Apache04/28 00:19其實很多人寫過 但C++的可維護性就是那麼差

Arbin04/28 04:20C++只有編譯效能快吧 Rust編譯前做一堆檢查會拖到編譯速度

Arbin04/28 04:20效能大同小異R

Arbin04/28 04:21*程式執行效能

superpandal04/28 06:11個人沒什麼動力用 特愛體量小(不論編譯器本身還是生

superpandal04/28 06:12成的執行檔) 編譯速度快 效能也很好的東西

superpandal04/28 06:13編譯速度當然很重要 你一個套件都要編譯半天 更別說

superpandal04/28 06:16全系統等級的 現在軟體越來越肥 編譯又很久 換了不就

superpandal04/28 06:19更久... 如果入linux核心簡直不可想像

superpandal04/28 06:21編譯全系統需時十幾二十分鐘的簡直是夢幻逸品 不過絕

superpandal04/28 06:21跡了

gino071704/28 09:57所以go要完了嗎

ketrobo04/28 10:13長期來看rust比較好,至少語言層級就有內建機制管理資源

achaos04/28 10:50文章內編譯速度怎麼一點都沒有提,真的太慢了.

zxzx805904/28 11:24yacto跑一次一個半小時,換rust不敢想

pig201404/28 11:49rust在template上就是做不到cpp這麼屌,所以兩個根本是

pig201404/28 11:49懶叫比雞腿

SkankHunt4204/28 12:17豬快讓我笑死了 Rust的metaprogramming功能超強

SkankHunt4204/28 12:18連個皮毛都不懂就出來在那邊B0988698088

Litfal04/28 13:09id變成形容詞我快笑死

wuyiulin04/28 14:13B0988698088 xDDD

Bencrie04/28 14:53太直接了吧 XDDD

kurtsgm04/28 16:23說到C++ vs others 我記得大概20年前就看過一篇文章 內容

kurtsgm04/28 16:23大致是說「多少年來各種XX語言揚言要幹掉C++ 如今C++仍然

kurtsgm04/28 16:24屹立不搖」 一轉眼20年過去了..... ha

kurtsgm04/28 16:252024年C++還是各種新舊語言的假想敵 哈

pig201404/28 16:59少在那邊瞎裝逼,rust metaprogramming跟cpp比多虛弱早

pig201404/28 16:59就一堆討論。他媽的你在那邊吹rust拿template來吹是三小

pig201404/28 16:59?半瓶水響叮噹?有真的把cpp的metaprogramming看進骨子

pig201404/28 16:59裡?還是他媽又是個非EECS半路出家的

pig201404/28 17:00https://bit.ly/3WjBKwt

pig201404/28 17:02CRTP、SFINAE、偏特化、移動語意兼完美轉發

pig201404/28 17:07現在軟體業就是一堆邪魔歪的,人人都會寫程式,每個智商

pig201404/28 17:07都有對應適合的語言,然後掌握了就以為自己神功護體,渾

pig201404/28 17:07然忘記為何以前真強者都要經過cpp的淬煉

pig201404/28 17:09現在這個時代css html都能混口飯吃,沒問題。但是學完自

pig201404/28 17:09己喜歡的語言,老二翹上天以為自己程式神人才他媽的可悲

SkankHunt4204/28 17:09你講的那些有誰不懂? 現在懂這種基礎就能出來吹阿XD

SkankHunt4204/28 17:10SNIFE、偏特化 我看你吹這些連metaprogramming都還沒

SkankHunt4204/28 17:10摸到

SkankHunt4204/28 17:11好啦 GGer乖乖幫我公司代工晶片啦

gino071704/28 17:13南無阿彌陀佛

SkankHunt4204/28 17:13現在還有人在戰語言 多學一門有很難嗎 可能對低智商

SkankHunt4204/28 17:13而言多學一門是真的很難 只好暴跳如雷

Apache04/28 17:47反串的蠻不錯的

wulouise04/28 18:14snife我真的沒聽過,跟SFINAE有關嗎?

shooter55504/28 18:16兩倍不知道怎麼估的

Firstshadow04/28 19:11各位冷靜==

WTS2accuracy04/28 19:13戰語言真的無聊 等RUST缺多了不學的自然被達爾文

Csongs04/28 20:08翻譯:c++工程師太貴

pig201404/28 20:24媽的就你不懂啊,rust缺東缺西結果你他媽的說自己懂在那

pig201404/28 20:24邊吹rust metaprogramming行?媽的明明就是在超模版公認

pig201404/28 20:24缺乏的東西硬要說行?上面少把這件事移花接木成「戰語言

pig201404/28 20:24」。整件事是有個瞎逼在那邊吹rust無所不能連metaprogra

pig201404/28 20:24mming也能與cpp平起平坐。我從來沒說rust沒存在意義,我

pig201404/28 20:24說的是rust比cpp就他媽的懶叫比雞腿,rust模板編程弱雞

pig201404/28 20:24,結果Skank自己瞎逼跳出來說rust也有metaprogramming不

pig201404/28 20:24輸cpp,公三小?

kurtsgm04/28 21:26有一件事是肯定的啦 10~15年後RUST發展的怎樣我不敢說

kurtsgm04/28 21:27但八成又可以看到某新興語言又標榜自己哪裡哪裡勝過C++

lturtsamuel04/28 21:45c++在哪個情境下會比rs快一百倍?跟java比都不見得快

lturtsamuel04/28 21:45那麼多了

lturtsamuel04/28 21:47c++模板元編程有幾個人懂?懂的人有幾個在用?用的人

lturtsamuel04/28 21:47寫出來的東西有多少可以好好維護?90%的人需要的元編

lturtsamuel04/28 21:47程功能用trait就能搞定,剩下的9.9%用 procedural ma

lturtsamuel04/28 21:47cro也能搞定

lturtsamuel04/28 21:48c++元編程這麼屌的話,怎麼還沒看到像 rust sqlx 這

lturtsamuel04/28 21:48種可以從資料庫推斷出型別的函式庫

lturtsamuel04/28 21:52如果c++ 模板元編程這麼屌,c++20幹嘛還搞個concept

lturtsamuel04/28 21:52,像過去那樣動輒噴出十幾頁的模板編譯錯誤不好嗎?

lturtsamuel04/28 21:58連c++那種可笑的移動語意也能吹捧 它的移動語意這麼

lturtsamuel04/28 21:58屌 幹嘛還需要 linter 來抓 use after move 錯誤?這

lturtsamuel04/28 21:58裡誰沒寫過幾個有bug的移動建構子?為什麼各種建構子

lturtsamuel04/28 21:58和operator=之間的一致性還要由程序設計師來負責?

roccqqck04/28 22:46go寫的大型工具 取代java大型工具一陣子了 應該不太可能

roccqqck04/28 22:46死掉

Lhmstu04/28 22:52go 強項在 cloud-native 吧,很難死掉

leolarrel04/29 10:49佩吉:"宣導一下go好嗎,薪水拿假的?"

leolarrel04/29 10:51我個人站在lturtsamuel這邊

dream112404/29 11:26個人看法啦...Go嫌vm肥,但要丟卻也丟不乾淨,而且在

dream112404/29 11:27容器的世界跟別人一樣也只是個原生程序,因此除非那些

dream112404/29 11:27工具開發者特別利用Go獨有的功能開一條方便整合的路

dream112404/29 11:29給Go專用,否則它或許可以欺負沒有編成原生的vm語言,

dream112404/29 11:29但是跟同為原生的程式相比未必討得到太多便宜。

shooter55504/29 15:07戰語言的時候 C是不是都躲在旁邊偷笑

cathychg04/29 15:18Google 台灣 新進員工 大部分基本行情是到那

cathychg04/29 15:19古歌 台灣 基本行情 軟工的基本計價 亞虎 李建復 ㄜ

cathychg04/29 15:20台灣 雅虎 軟工的基本計價呢 ㄜㄜㄜ

cathychg04/29 15:20https://i.imgur.com/tP9T6bV.jpeg

圖 Google開發工具工程總監:Rust 開發者的

cathychg04/29 15:21日本 雅虎呢

cathychg04/29 15:21How about Japan yahoo software salary Ummmmmm

Lordaeron04/29 16:42文無第一?改成武鬥如何?找相同的題目來比。

Lordaeron04/29 16:42真的不要去管C,反正pointer 來pointer 去就好。

viper970904/29 23:25語言武鬥傳(誤)

sp06343905/01 02:21戰語言比刷題串好看多惹