結局C++とRustってどっちが良いの? 3traitsat TECH
結局C++とRustってどっちが良いの? 3traits - 暇つぶし2ch448:デフォルトの名無しさん
23/05/16 04:35:10.15 4S8kS8o+.net
何か未知で不確実だとしてもただの道具ならその目的は既知だったりするでしょ
デストラクタの後で参照しないとか
デストラクタの後でデストラクタを呼ばないとか

だがメモリリークをあまり問題視しない件などは目的自体が変化してしまうから
ただの道具ではない

449:デフォルトの名無しさん
23/05/16 05:49:36.67 LhFniP55.net
>>447
Rust勢が言っているのは、Rustで書いたものは安全といって納品できる、ということなので、
ガイドライン チェッカとかじゃなく、言語にちゃんとunsafe{ } があるというのはモダン

何をもってsafeとするかには議論があったが、Rustがデファクトスタンダードになるなら、それを取り込めばいい
ひとつの夜明けは近い

450:デフォルトの名無しさん
23/05/16 10:02:16.98 dncY24o+.net
>成長が止まりやすく老害化しやすい
道具云々は↑これが図星で悔しかったんだろ
その後のレス見れば成長止まって老害化してる人だとよくわかる

451:デフォルトの名無しさん
23/05/16 10:57:49.38 4S8kS8o+.net
当たり前だけど、攻撃力がレーゾンデートルになるよりは回避力か防御力のほうが
ダメージやストレスが少ない

452:デフォルトの名無しさん
23/05/16 11:13:49.28 afLAkRaY.net
レーゾンデートルwww

453:デフォルトの名無しさん
23/05/16 12:35:37.97 ALDBkD8o.net
>>449
shared XOR mutableはちょっと面倒くさい。
せっかくスタックフレームベースなんだから、それ前提にもっと手軽にできないかなぁ。

454:デフォルトの名無しさん
23/05/16 13:33:35.88 d+qszQ7T.net
インテリだなぁwおい

455:デフォルトの名無しさん
23/05/16 13:41:37.03 spgQVWRA.net
>>453
値を変更する時にそれが他から参照されてるかはRust以外でも多少は意識してるはずだし
変更可能な状態で共有することに意味があるならRefCellとかCellに入れて共有すればいい
面倒といっても安全のための規約レベルでしょ
(違反するとコンパイラに殴られるからある意味手間が省ける)

456:デフォルトの名無しさん
23/05/16 15:40:22.92 HCiu7CXC.net
>>453
正確にはshared NAND mutable

457:デフォルトの名無しさん
23/05/16 18:00:25.19 4S8kS8o+.net
所有と参照を区別しない場合は
参照が一つもない値の存在は許されない (循環参照が許されないとは言ってない) ので
むしろxorが正確である場合もあるかも

458:デフォルトの名無しさん
23/05/16 22:00:57.33 LSAD/UZx.net
>>457
それじゃ値について述べてるのか参照について述べてるのかそれとも型について述べてるのか曖昧すぎてルールとしては使い物にならない
主語と目的語を明確に意識してないと所有権複製の二の舞だよ

459:デフォルトの名無しさん
23/05/16 23:06:18.96 4S8kS8o+.net
ああ、C++では値と参照を区別するとかしないとか言うね
でも動詞を使いたくなったら「参照する」は正しいが「値する」はおかしい
だから値を所有する、値を参照するというのが良い

460:デフォルトの名無しさん
23/05/17 06:30:13.75 u+07gdJ+.net
C/C++の値に所有なんてあるのか
参照なら実体側の所有が誰か問題になるかも知れんが

461:デフォルトの名無しさん
23/05/17 11:15:53.89 qIPYqCzM.net
>>460
無い。
特に「所有」の一般的な概念に含まれる(他から制限を受けないという意味での)排他性・専有性は無い。

462:デフォルトの名無しさん
23/05/17 12:05:12.66 jyReDlhf.net
C++の参照がダングリングを引き起こす根本的原因は、
値の所有とその生存期間を参照に対してはっきりさせていないため?

463:デフォルトの名無しさん
23/05/17 12:13:29.10 BpkuThno.net
use Hoge; と
extern crate Hoge; の違いが判ったわ
新しいとか古いとか言ってる人が以前居たけど嘘だったω

464:デフォルトの名無しさん
23/05/17 12:13:39.98 F24a8wLt.net
待て待て
そもそもC++でダングリングを起こしたことがない

Rustは言語仕様上関数でヒープまで消しちゃうから
仕組みがないとダングリングを起こしやすい

ダングリングはRust固有の持病

465:デフォルトの名無しさん
23/05/17 12:57:26.72 gejLyGRv.net
>>464
逆だよな
ダングリングポインタが生じるのはC++

466:デフォルトの名無しさん
23/05/17 13:13:25.46 BC7Hht5L.net
>>464
関数でヒープを自動解放する仕組みすなわち自動的にデストラクタが呼ばれる仕組みはC++とRustで同じ

467:デフォルトの名無しさん
23/05/17 13:36:00.32 bmOF/eVQ.net
デバッグビルドでよければ、結構重厚にチェックしてくれるんだけどね
リリースビルドでも一定程度チェックが残ってくれるようになれば、まだましになるか

468:デフォルトの名無しさん
23/05/17 13:56:37.30 ICP0Cmin.net
>>462
C++でも値に対する所有とライフタイムを明確にして参照のライフタイムがそれ以内に収まる枠組みにすればダングリングを防げるようになる


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch