[討論] Rust與C++

作者: icetofux   2023-06-26 21:33:42
最近看到一則windows以Rust改寫部分程式的新聞,仔細一查發現Linux似乎也打算將Rust作為內核開發的第二語言,讓我對Rust這個語言產生很大的興趣。
我最先學會的語言是C,後來在學習物件導向的時候開始接觸到C++,對於C++提供的語言特性及STL印象深刻。雖然不能說寫的非常好,但感覺C++強化了很多C在記憶體管理上容易出現問題的地方。目前如果環境許可,C++往往是我會優先選擇的語言之一。
快速搜尋了一下Rust及C++的比較,大部分都是著重在將兩個語言的優缺點條列比較,比如Rust在記憶體管理跟編譯訊息上更為突出,而C++則是保持對C的相容跟編譯速度更為出色,編譯出來的執行效率兩者似乎在伯仲之間,都非常的優秀。
但是看了幾項比較資料後,卻沒有發現兩大作業系統選擇了較為年輕的Rust而非長時間發展的C++的關鍵原因。請問有對Rust較為熟悉的先進可以幫忙解惑嗎?
謝謝。
作者: ck574b027 (荒圍!定厝!賊!妹!)   2023-06-26 21:39:00
沒發現c++的優點根本沒差嗎,編譯速度到了大專案還不是得去泡咖啡上廁所
作者: flarehunter (Range)   2023-06-26 21:43:00
因為C++的記憶體漏洞太難防了 Rust直接從語言上解決https://www.ithome.com.tw/news/154539
作者: lycantrope (阿寬)   2023-06-26 21:57:00
Rust在compile時就會抓你記憶體漏洞
作者: ck574b027 (荒圍!定厝!賊!妹!)   2023-06-26 22:34:00
寫得出來跟檢查得出來是兩回事
作者: CoNsTaR ((const *))   2023-06-26 23:00:00
建議去讀 linear types 或 quantitative types,Rust 用的是 affine types,它和 linear types 的差別在它不強制所有值一定都要被 consume對比 C++ 你想要怎麼惡搞都一樣給你 type check,反正 runtime 再 crash 給你看,超不負責任
作者: jheli (我是企鵝)   2023-06-27 00:23:00
compile階段就抓到漏洞總比出事後再debug好
作者: F04E (Fujitsu)   2023-06-27 01:11:00
說超不負責的也很奇怪 啊不就是給你方便你當隨便...
作者: CoNsTaR ((const *))   2023-06-27 02:45:00
樓上,方便在哪?給了什麼方便?
作者: oToToT (屁孩)   2023-06-27 02:52:00
個人覺得rust有一定的時間是花在說服編譯器我的code跑起來沒問題,C++就沒那麼多規矩
作者: flarehunter (Range)   2023-06-27 08:10:00
https://shorturl.at/qvzGO 舉例來說 當我要傳一個unique_ptr<T>的物件到函式但沒有要給函式ownership照chromium guide是傳一個raw pointer呼叫函式的人要"手動"保證物件的lifetime夠久如果沒弄好就會有use-after-free的問題
作者: F04E (Fujitsu)   2023-06-27 11:16:00
連哪裡方便都不知道了還是別用了XD
作者: CoNsTaR ((const *))   2023-06-27 11:27:00
所以我說和 Rust 比起來方便在哪啊?你說給方便當隨便,那到底方便在哪講出來啊?
作者: oToToT (屁孩)   2023-06-27 17:14:00
to樓上,我覺得我不需要標lifetime說服編譯器我是對的就很方便,但當然Rust要標lifetime的情況不是非常常見
作者: chaos1993 (棧前小二)   2023-06-27 22:50:00
想請問即使用smart pointer,要怎麼惡搞才可以type check過然後runtime crash?
作者: tinlans ( )   2023-06-28 02:05:00
get 它的 raw pointer 出來存到別的物件去,再很不小心地由它的解構子 delete 之類的吧2 人以上維護的時候有時會出現類似蠢事
作者: Lhmstu (lhmstu)   2023-06-28 08:48:00
c++沒有從根本上改善c的缺陷
作者: MasterChang (我愛ASM)   2023-06-30 09:58:00
不是程式語言不行,是你不行。
作者: firejox (Tangent)   2023-06-30 15:16:00
我只希望有一天 Rust 能給我有用的錯誤訊息
作者: wulouise (在線上!=在電腦前)   2023-06-30 21:42:00
rust compile time要求你的lifetime正常,有時候會很卡

Links booklink

Contact Us: admin [ a t ] ucptt.com