[討論] Rust與C++

看板C_and_CPP (C/C++)作者時間1年前 (2023/06/26 21:33), 1年前編輯推噓4(6218)
留言26則, 7人參與, 1年前最新討論串1/3 (看更多)
最近看到一則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

06/26 21:39, 1年前 , 1F
沒發現c++的優點根本沒差嗎,編譯速度到了大專案還不是
06/26 21:39, 1F

06/26 21:39, 1年前 , 2F
得去泡咖啡上廁所
06/26 21:39, 2F

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

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

06/26 21:57, 1年前 , 5F
Rust在compile時就會抓你記憶體漏洞
06/26 21:57, 5F

06/26 22:34, 1年前 , 6F
寫得出來跟檢查得出來是兩回事
06/26 22:34, 6F

06/26 23:00, 1年前 , 7F
建議去讀 linear types 或 quantitative types,Rust 用
06/26 23:00, 7F

06/26 23:00, 1年前 , 8F
的是 affine types,它和 linear types 的差別在它不強
06/26 23:00, 8F

06/26 23:00, 1年前 , 9F
制所有值一定都要被 consume
06/26 23:00, 9F

06/26 23:00, 1年前 , 10F
對比 C++ 你想要怎麼惡搞都一樣給你 type check,反正 ru
06/26 23:00, 10F

06/26 23:00, 1年前 , 11F
ntime 再 crash 給你看,超不負責任
06/26 23:00, 11F

06/27 00:23, 1年前 , 12F
compile階段就抓到漏洞總比出事後再debug好
06/27 00:23, 12F

06/27 01:11, 1年前 , 13F
說超不負責的也很奇怪 啊不就是給你方便你當隨便...
06/27 01:11, 13F

06/27 02:45, 1年前 , 14F
樓上,方便在哪?給了什麼方便?
06/27 02:45, 14F

06/27 02:52, 1年前 , 15F
個人覺得rust有一定的時間是花在說服編譯器我的code跑起來
06/27 02:52, 15F

06/27 02:52, 1年前 , 16F
沒問題,C++就沒那麼多規矩
06/27 02:52, 16F

06/27 08:10, 1年前 , 17F
https://shorturl.at/qvzGO 舉例來說 當我要傳一個
06/27 08:10, 17F

06/27 08:10, 1年前 , 18F
unique_ptr<T>的物件到函式但沒有要給函式ownership
06/27 08:10, 18F

06/27 08:11, 1年前 , 19F
照chromium guide是傳一個raw pointer
06/27 08:11, 19F

06/27 08:12, 1年前 , 20F
呼叫函式的人要"手動"保證物件的lifetime夠久
06/27 08:12, 20F

06/27 08:13, 1年前 , 21F
如果沒弄好就會有use-after-free的問題
06/27 08:13, 21F

06/27 11:16, 1年前 , 22F
連哪裡方便都不知道了還是別用了XD
06/27 11:16, 22F

06/27 11:27, 1年前 , 23F
所以我說和 Rust 比起來方便在哪啊?
06/27 11:27, 23F

06/27 11:30, 1年前 , 24F
你說給方便當隨便,那到底方便在哪講出來啊?
06/27 11:30, 24F

06/27 17:14, 1年前 , 25F
to樓上,我覺得我不需要標lifetime說服編譯器我是對的就很
06/27 17:14, 25F

06/27 17:15, 1年前 , 26F
方便,但當然Rust要標lifetime的情況不是非常常見
06/27 17:15, 26F
文章代碼(AID): #1acPExMU (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 3 篇):
4
26
6
10
文章代碼(AID): #1acPExMU (C_and_CPP)