※ 本文轉寄自 ptt.cc, 文章原始頁面
看板C_and_CPP
作者icetofux
標題

[討論] Rust與C++

時間
最新2023-06-30 21:42:00
留言35則留言,13人參與討論
推噓6 ( 8225 )
最近看到一則windows以Rust改寫部分程式的新聞,仔細一查發現Linux似乎也打算將Rust作為內核開發的第二語言,讓我對Rust這個語言產生很大的興趣。 我最先學會的語言是C,後來在學習物件導向的時候開始接觸到C++,對於C++提供的語言特性及STL印象深刻。雖然不能說寫的非常好,但感覺C++強化了很多C在記憶體管理上容易出現問題的地方。目前如果環境許可,C++往往是我會優先選擇的語言之一。 快速搜尋了一下Rust及C++的比較,大部分都是著重在將兩個語言的優缺點條列比較,比如Rust在記憶體管理跟編譯訊息上更為突出,而C++則是保持對C的相容跟編譯速度更為出色,編譯出來的執行效率兩者似乎在伯仲之間,都非常的優秀。 但是看了幾項比較資料後,卻沒有發現兩大作業系統選擇了較為年輕的Rust而非長時間發展的C++的關鍵原因。請問有對Rust較為熟悉的先進可以幫忙解惑嗎? 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.206.52 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1687786427.A.59E.html

35 則留言

ck574b027, 1F
沒發現c++的優點根本沒差嗎,編譯速度到了大專案還不是

ck574b027, 2F
得去泡咖啡上廁所

flarehunter, 3F
因為C++的記憶體漏洞太難防了 Rust直接從語言上解決
請問C++即便是使用vector這類的安全資料結構,善用智慧指標等各種新特性,依然很難寫出記憶體安全的程式嗎?

flarehunter, 4F
※ 編輯: icetofux (111.240.206.52 臺灣), 06/26/2023 21:49:33

lycantrope, 5F
Rust在compile時就會抓你記憶體漏洞

ck574b027, 6F
寫得出來跟檢查得出來是兩回事

CoNsTaR, 7F
建議去讀 linear types 或 quantitative types,Rust 用

CoNsTaR, 8F
的是 affine types,它和 linear types 的差別在它不強

CoNsTaR, 9F
制所有值一定都要被 consume

CoNsTaR, 10F
對比 C++ 你想要怎麼惡搞都一樣給你 type check,反正 ru

CoNsTaR, 11F
ntime 再 crash 給你看,超不負責任

jheli, 12F
compile階段就抓到漏洞總比出事後再debug好

F04E, 13F
說超不負責的也很奇怪 啊不就是給你方便你當隨便...

CoNsTaR, 14F
樓上,方便在哪?給了什麼方便?

oToToT, 15F
個人覺得rust有一定的時間是花在說服編譯器我的code跑起來

oToToT, 16F
沒問題,C++就沒那麼多規矩

flarehunter, 17F
https://shorturl.at/qvzGO 舉例來說 當我要傳一個

flarehunter, 18F
unique_ptr<T>的物件到函式但沒有要給函式ownership

flarehunter, 19F
照chromium guide是傳一個raw pointer

flarehunter, 20F
呼叫函式的人要"手動"保證物件的lifetime夠久

flarehunter, 21F
如果沒弄好就會有use-after-free的問題

F04E, 22F
連哪裡方便都不知道了還是別用了XD

CoNsTaR, 23F
所以我說和 Rust 比起來方便在哪啊?

CoNsTaR, 24F
你說給方便當隨便,那到底方便在哪講出來啊?

oToToT, 25F
to樓上,我覺得我不需要標lifetime說服編譯器我是對的就很

oToToT, 26F
方便,但當然Rust要標lifetime的情況不是非常常見

chaos1993, 27F
想請問即使用smart pointer,要怎麼惡搞才可以type ch

chaos1993, 28F
eck過然後runtime crash?

tinlans, 29F
get 它的 raw pointer 出來存到別的物件去,

tinlans, 30F
再很不小心地由它的解構子 delete 之類的吧

tinlans, 31F
2 人以上維護的時候有時會出現類似蠢事

Lhmstu, 32F
c++沒有從根本上改善c的缺陷

MasterChang, 33F
不是程式語言不行,是你不行。

firejox, 34F
我只希望有一天 Rust 能給我有用的錯誤訊息

wulouise, 35F
rust compile time要求你的lifetime正常,有時候會很卡