「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
前スレ: 結局C++とRustってどっちが良いの? 2traits
https://mevius.5ch.net/test/read.cgi/tech/1680363777/
関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
探検
結局C++とRustってどっちが良いの? 3traits
■ このスレッドは過去ログ倉庫に格納されています
2023/05/04(木) 07:49:56.33ID:z+qB+AKQ
461デフォルトの名無しさん
2023/05/17(水) 11:15:53.89ID:qIPYqCzM462デフォルトの名無しさん
2023/05/17(水) 12:05:12.66ID:jyReDlhf C++の参照がダングリングを引き起こす根本的原因は、
値の所有とその生存期間を参照に対してはっきりさせていないため?
値の所有とその生存期間を参照に対してはっきりさせていないため?
463デフォルトの名無しさん
2023/05/17(水) 12:13:29.10ID:BpkuThno use Hoge; と
extern crate Hoge; の違いが判ったわ
新しいとか古いとか言ってる人が以前居たけど嘘だったω
extern crate Hoge; の違いが判ったわ
新しいとか古いとか言ってる人が以前居たけど嘘だったω
464デフォルトの名無しさん
2023/05/17(水) 12:13:39.98ID:F24a8wLt 待て待て
そもそもC++でダングリングを起こしたことがない
Rustは言語仕様上関数でヒープまで消しちゃうから
仕組みがないとダングリングを起こしやすい
ダングリングはRust固有の持病
そもそもC++でダングリングを起こしたことがない
Rustは言語仕様上関数でヒープまで消しちゃうから
仕組みがないとダングリングを起こしやすい
ダングリングはRust固有の持病
465デフォルトの名無しさん
2023/05/17(水) 12:57:26.72ID:gejLyGRv466デフォルトの名無しさん
2023/05/17(水) 13:13:25.46ID:BC7Hht5L >>464
関数でヒープを自動解放する仕組みすなわち自動的にデストラクタが呼ばれる仕組みはC++とRustで同じ
関数でヒープを自動解放する仕組みすなわち自動的にデストラクタが呼ばれる仕組みはC++とRustで同じ
467デフォルトの名無しさん
2023/05/17(水) 13:36:00.32ID:bmOF/eVQ デバッグビルドでよければ、結構重厚にチェックしてくれるんだけどね
リリースビルドでも一定程度チェックが残ってくれるようになれば、まだましになるか
リリースビルドでも一定程度チェックが残ってくれるようになれば、まだましになるか
468デフォルトの名無しさん
2023/05/17(水) 13:56:37.30ID:ICP0Cmin >>462
C++でも値に対する所有とライフタイムを明確にして参照のライフタイムがそれ以内に収まる枠組みにすればダングリングを防げるようになる
C++でも値に対する所有とライフタイムを明確にして参照のライフタイムがそれ以内に収まる枠組みにすればダングリングを防げるようになる
469デフォルトの名無しさん
2023/05/17(水) 16:33:36.81ID:vdNzRO2S それスマートポインタでええやん
470デフォルトの名無しさん
2023/05/17(水) 16:47:08.88ID:xh2FOm6Y Rustの知名度の上昇は、WasmのWASIのサンプルがCではなくRustで書かれている
ことにも起因するらしい。だから、Wasmで検索するとRustが出てきてしまう。
しかし、このことは、WASIの普及の足を引っ張るかも知れない。
なぜなら、C言語が基本だから。
ことにも起因するらしい。だから、Wasmで検索するとRustが出てきてしまう。
しかし、このことは、WASIの普及の足を引っ張るかも知れない。
なぜなら、C言語が基本だから。
471デフォルトの名無しさん
2023/05/17(水) 16:58:32.53ID:v5yVc+NM472デフォルトの名無しさん
2023/05/17(水) 18:52:30.65ID:ZQB5ONnn なぜなら、の後が願望100%やん
473デフォルトの名無しさん
2023/05/17(水) 20:08:10.12ID:Yuvp7VZi 願望だから嘘だとか万能だから嘘だとかいう雑な説明は蛇足だな
説明しない自由があるべき
嘘でもいいから何か説明した方がマシというのは大嘘だ
説明しない自由があるべき
嘘でもいいから何か説明した方がマシというのは大嘘だ
474デフォルトの名無しさん
2023/05/17(水) 22:54:42.20ID:tJ3Yi1Tz C++君はコンパイルでチェック出来るようになってから出直してきなさい
475デフォルトの名無しさん
2023/05/18(木) 23:15:13.15ID:xashkNA5 5ch見ない間に変なスレ立ってんじゃん
どっちが優勢なのこれ
どっちが優勢なのこれ
476デフォルトの名無しさん
2023/05/19(金) 00:20:59.53ID:wvc715Cq477デフォルトの名無しさん
2023/05/19(金) 00:48:25.47ID:6a3TmOY7 PowerShellの下w
478デフォルトの名無しさん
2023/05/19(金) 04:15:06.52ID:31iAC5HD C++ってasync/awaitもまだstableではないんだな
大変だね
大変だね
479デフォルトの名無しさん
2023/05/19(金) 05:21:55.09ID:iSJAQTOS GitHubとStack Overflowか
まあお世話になってるけどそれでランキング付けされてもなあ
5chのム板を集計してみてよ外人
まあお世話になってるけどそれでランキング付けされてもなあ
5chのム板を集計してみてよ外人
480デフォルトの名無しさん
2023/05/19(金) 10:02:47.03ID:clAdGtGh Rust では || {} が
closure になるものとばかり思っていたが
関数ポインタとして扱われるケースもあるんだな
区別されてるということを学習した
closure になるものとばかり思っていたが
関数ポインタとして扱われるケースもあるんだな
区別されてるということを学習した
481デフォルトの名無しさん
2023/05/19(金) 10:21:21.01ID:+C2lMNEC FnOnce⊃FnMut⊃Fn⊃fn なだけだろ
482デフォルトの名無しさん
2023/05/19(金) 10:47:38.97ID:Jo96EeDW 山括弧の入れ子を許した者だけが||を使いなさい
483デフォルトの名無しさん
2023/05/19(金) 11:24:52.99ID:d+z8brnF >>480
クロージャが関数ポインタに自動的にcoerceされてるだけでは?
クロージャが関数ポインタに自動的にcoerceされてるだけでは?
484デフォルトの名無しさん
2023/05/19(金) 13:42:22.37ID:Jo96EeDW pythonさんが無名関数を雑に実装したおかげで
雑な名前をつけるより無名のほうがいいという価値観がもうない
雑な名前をつけるより無名のほうがいいという価値観がもうない
485デフォルトの名無しさん
2023/05/19(金) 14:23:39.94ID:BgwAo11V lambda式を変数fに入れていくスタイル
486デフォルトの名無しさん
2023/05/19(金) 15:00:56.18ID:clAdGtGh fn は短くて好き
lambda は長い
lambda は長い
487デフォルトの名無しさん
2023/05/19(金) 20:24:24.62ID:UN4uxJmD 一文字変数って、感覚的に、レジスタだよね
488デフォルトの名無しさん
2023/05/19(金) 23:42:01.79ID:HdJFwdmr >>487
FORTRANの話が始まるからよせ!
FORTRANの話が始まるからよせ!
489デフォルトの名無しさん
2023/05/20(土) 13:19:21.76ID:QfLlK72x map とかで
let e = hogemap.entry(hogeid).or_insert_with(|| Hoge::new());
は確かに便利なのですが
id が重複しないことはどうやって保証するの?
同じ id なら既存のに上書きは判らなくはないけど
それも禁止して上書き前に阻止したいときどう書く?
let e = hogemap.entry(hogeid).or_insert_with(|| Hoge::new());
は確かに便利なのですが
id が重複しないことはどうやって保証するの?
同じ id なら既存のに上書きは判らなくはないけど
それも禁止して上書き前に阻止したいときどう書く?
490デフォルトの名無しさん
2023/05/20(土) 13:22:01.56ID:PfZyfbnf 本スレで聞けや
491デフォルトの名無しさん
2023/05/20(土) 13:43:24.13ID:t3XWqp3Q entryの時点でハッシュ計算と衝突時含めたエントリ探索済
つまりエントリが空か既存かの状態を持つのがentry
あとはその状態により既存のを返すか空ならinsertしてそれを返すのがor_insert_withなどのメソッド
つまりエントリが空か既存かの状態を持つのがentry
あとはその状態により既存のを返すか空ならinsertしてそれを返すのがor_insert_withなどのメソッド
492デフォルトの名無しさん
2023/05/20(土) 14:17:02.46ID:sVUWQwSt >>489
そのコードで上書きは阻止できてるよ
そのコードで上書きは阻止できてるよ
493デフォルトの名無しさん
2023/05/20(土) 15:36:02.57ID:QfLlK72x 紛らわしくてごめん
上書きというか
重複してたらシレっと既存のデータ魅せるんじゃなくて
let e = hogemap.entry(hogeid).or_insert_with(|| Hoge::new());
新規の場合しか登録出来ない?みたいな動きを期待しています
上書きというか
重複してたらシレっと既存のデータ魅せるんじゃなくて
let e = hogemap.entry(hogeid).or_insert_with(|| Hoge::new());
新規の場合しか登録出来ない?みたいな動きを期待しています
494デフォルトの名無しさん
2023/05/20(土) 15:40:45.30ID:zdJ3jUBa それ新規の場合しか登録してないんだよ・・・
すでに同じキーがあった場合にどうしたいのか
もう少し望んでる仕様を日本語で明確にしてくれ
すでに同じキーがあった場合にどうしたいのか
もう少し望んでる仕様を日本語で明確にしてくれ
495デフォルトの名無しさん
2023/05/20(土) 15:42:10.43ID:zdJ3jUBa Entryの結果で分岐させたいってことなら
そうすればいいと思うんだが
そうすればいいと思うんだが
496デフォルトの名無しさん
2023/05/20(土) 15:53:16.36ID:3F2fq7k1 こんな感じでいいのかな
Entryはmapの型に合わせて別途useする必要があるけど
use std::collections::hash_map::Entry; // HashMapの場合
match hogemap.entry(hogeid) {
Entry::Occupied(_) => {
// エラー返す?
}
Entry::Vacant(e) => {
e.insert(Hoge::new());
}
}
Entryはmapの型に合わせて別途useする必要があるけど
use std::collections::hash_map::Entry; // HashMapの場合
match hogemap.entry(hogeid) {
Entry::Occupied(_) => {
// エラー返す?
}
Entry::Vacant(e) => {
e.insert(Hoge::new());
}
}
497デフォルトの名無しさん
2023/05/20(土) 19:48:56.10ID:tSqlJ0Tg >>476
この表ではCとC++を分けて書いてあるので、10位と7位になっているが、
「合算」して、C/C++ と捉えると、遥かに順位が上がって、
tiobeや日経では一位になっていた。但し、日経は「プロのプログラマ」限定
のランキング。
この表ではCとC++を分けて書いてあるので、10位と7位になっているが、
「合算」して、C/C++ と捉えると、遥かに順位が上がって、
tiobeや日経では一位になっていた。但し、日経は「プロのプログラマ」限定
のランキング。
498デフォルトの名無しさん
2023/05/20(土) 19:50:20.05ID:tSqlJ0Tg499デフォルトの名無しさん
2023/05/20(土) 22:11:15.78ID:5krDMoEC500デフォルトの名無しさん
2023/05/20(土) 23:03:14.13ID:am3G09Kz 何で?
501デフォルトの名無しさん
2023/05/20(土) 23:12:38.83ID:mmZhl8HV 混ぜたものh単にC++だし純粋なCを使ってる人はC++と区別してるだろ。
502デフォルトの名無しさん
2023/05/20(土) 23:17:27.29ID:9lPnbAJe この板ですらC/C++とかいう表記好むやつおって頭痛いわ
CのこともC++のこともおそらく両方とも聞きかじり程度なんだろう
CのこともC++のこともおそらく両方とも聞きかじり程度なんだろう
503デフォルトの名無しさん
2023/05/21(日) 00:05:23.22ID:vCRjs+cu C/C++ってのはCやC++という意味なので
グループ化して扱いたい文脈ならともかく
言語のランキングで異なる言語をまぜちゃダメでしょ
グループ化して扱いたい文脈ならともかく
言語のランキングで異なる言語をまぜちゃダメでしょ
504デフォルトの名無しさん
2023/05/21(日) 00:25:26.02ID:iv7vg6yo 世界ランク1位のAIや世界ランク1位の法人は何人分なのかしら
505デフォルトの名無しさん
2023/05/21(日) 02:34:22.95ID:hDRagkvp C++ってCを内包してるので異なる言語なのかっていうと
それはちょっと違う
それはちょっと違う
506デフォルトの名無しさん
2023/05/21(日) 03:10:59.62ID:pD4P5aW+ だからC使いをC++使いに含めましょうって?
507デフォルトの名無しさん
2023/05/21(日) 03:28:43.95ID:hDRagkvp C使いをRust使いに含めるのはないけどね
508デフォルトの名無しさん
2023/05/21(日) 03:51:32.22ID:DupwiM5R K&R CとC++98使えるから両方名乗ってもいいよね
509476
2023/05/21(日) 09:07:29.95ID:IEzEoKXI CとC++は人気シェア被ってるだろうから、単純に加算じゃいかんだろうなw
ちな、最強は…ってのの意味は、C++かRustかとかって言ってる間に、
世界最強はJavaScriptじゃねーか、まあ確かにww ってつもりだったよ
Rust流のメモリ管理がJavaScriptに流れ込んだら、どうなるかね
ちな、最強は…ってのの意味は、C++かRustかとかって言ってる間に、
世界最強はJavaScriptじゃねーか、まあ確かにww ってつもりだったよ
Rust流のメモリ管理がJavaScriptに流れ込んだら、どうなるかね
>>502,503
二つは一緒でしょう?
私はね C++ コンパイラを通らない C は書く気がしなくなりました、いまや C コードを C++ コンパイラでコンパイルが通るか試すのが日課ですね
そりゃCでかくときはCの書き方で、C++ で書くときはC++の書き方で書きますが、C++ はCの上位互換であるように気をつけていますね
二つは一緒でしょう?
私はね C++ コンパイラを通らない C は書く気がしなくなりました、いまや C コードを C++ コンパイラでコンパイルが通るか試すのが日課ですね
そりゃCでかくときはCの書き方で、C++ で書くときはC++の書き方で書きますが、C++ はCの上位互換であるように気をつけていますね
512デフォルトの名無しさん
2023/05/21(日) 09:13:04.25ID:4DUZ8lJ6 C/C++にダングリングは存在しない
C/C++は実体の無いものを参照出来る
もちろんポインタに代入して良い
アクセスさえしなければ問題は発生しない
問題を起こすのは馬鹿プログラマの責任
頭の良いプログラマは承知の上で使ってる
C/C++は実体の無いものを参照出来る
もちろんポインタに代入して良い
アクセスさえしなければ問題は発生しない
問題を起こすのは馬鹿プログラマの責任
頭の良いプログラマは承知の上で使ってる
513デフォルトの名無しさん
2023/05/21(日) 09:16:06.07ID:IEzEoKXI C/C++って書くとき、どっちも生ポ世代の、息の長い人気言語、って意味かなあ
そこを踏まえてRustが生まれた
なによりCにunsafe{ } 追加待ったなしだと思う Cに来れば、C++に来るのも早いだろう
そんな流れを想像するに、またC/C++って書いたりする
そこを踏まえてRustが生まれた
なによりCにunsafe{ } 追加待ったなしだと思う Cに来れば、C++に来るのも早いだろう
そんな流れを想像するに、またC/C++って書いたりする
514デフォルトの名無しさん
2023/05/21(日) 09:17:42.54ID:M77oEyAg515デフォルトの名無しさん
2023/05/21(日) 09:20:34.24ID:jjoN8NeX >>512
Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理不備が原因。問題の起きないRustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理不備が原因。問題の起きないRustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
516デフォルトの名無しさん
2023/05/21(日) 09:21:35.31ID:IEzEoKXI 想像以上に、ダメ人間がC/C++系に動員されてたって証左だね 俺を含むw
517デフォルトの名無しさん
2023/05/21(日) 09:23:48.78ID:YrT86H6X 片方の小手先の文法にばかり文句つけて反対側の長所は言えない
サンプルコードレベルしか理解できず書けないからそんなことしかできない
だからクソスレになるんだよここ
サンプルコードレベルしか理解できず書けないからそんなことしかできない
だからクソスレになるんだよここ
518デフォルトの名無しさん
2023/05/21(日) 09:26:46.33ID:IEzEoKXI519デフォルトの名無しさん
2023/05/21(日) 09:50:40.36ID:klr5Cg8y 手続き型言語は基本的にはどれも大差はなく文法や言語仕様は慣れの問題しかないもんな
スクリプト的な使い方をするだけならどの言語でも良いと思う
ただし本格的にプログラミングするなら速さや省メモリが効いてくる
とはいえC++の仕様では静的解析に実行時解析デバッグでも>>515が残りうる
スクリプト的な使い方をするだけならどの言語でも良いと思う
ただし本格的にプログラミングするなら速さや省メモリが効いてくる
とはいえC++の仕様では静的解析に実行時解析デバッグでも>>515が残りうる
520デフォルトの名無しさん
2023/05/21(日) 09:55:14.09ID:l5rpTDAP 小手先の文法っていうと、「hoge/fuga/b.rs」モジュールを「hoge/a.rs」から触りたい時に
なんでいちいち「hoge/fuga.rs」作って、人間が「pub mod b」みたいなこと書かなきゃならないんだろ
b.rsの先頭にでもpubって書いとけば、単にa.rsで「mod fuga::b」とか書くだけで認識できるようにするんじゃあかんのか
なんでいちいち「hoge/fuga.rs」作って、人間が「pub mod b」みたいなこと書かなきゃならないんだろ
b.rsの先頭にでもpubって書いとけば、単にa.rsで「mod fuga::b」とか書くだけで認識できるようにするんじゃあかんのか
521デフォルトの名無しさん
2023/05/21(日) 10:20:50.76ID:vO/Srrhk >>520
どの言語でもモジュールの目的は隠蔽にある
つまり必要となる最低限のものだけを外部に公開して他は内部構造として隠蔽するのがプログラミングの基礎
言語によって基本状態が何でも公開と何でも隠蔽があって後者は公開必要のあるものだけにpub等を付ける
そのモジュールfugaのサブモジュールbも同様で無指定ならばfugaの内部構造として隠蔽してくれる
公開したいならばRustではpubあるいは公開範囲を指示してpub (xxx)を付ける
例えばそのクレート内部だけに公開したいならばpub (crate)を付ける
どの言語でもモジュールの目的は隠蔽にある
つまり必要となる最低限のものだけを外部に公開して他は内部構造として隠蔽するのがプログラミングの基礎
言語によって基本状態が何でも公開と何でも隠蔽があって後者は公開必要のあるものだけにpub等を付ける
そのモジュールfugaのサブモジュールbも同様で無指定ならばfugaの内部構造として隠蔽してくれる
公開したいならばRustではpubあるいは公開範囲を指示してpub (xxx)を付ける
例えばそのクレート内部だけに公開したいならばpub (crate)を付ける
522デフォルトの名無しさん
2023/05/21(日) 11:01:39.93ID:cATdTts1 まともなプログラミングをしたことない人は隠蔽の重要性をなかなか理解しづらいかも
Rustのようにデフォルトがあらゆる隠蔽の言語の方が保守性の良いコードに導きやすいね
Rustのようにデフォルトがあらゆる隠蔽の言語の方が保守性の良いコードに導きやすいね
523デフォルトの名無しさん
2023/05/21(日) 12:03:09.15ID:D6AeXkVR 複オジ演やめろ
524デフォルトの名無しさん
2023/05/21(日) 13:05:49.48ID://2zHKa/525デフォルトの名無しさん
2023/05/21(日) 13:31:45.59ID:66WA2Ur9 デフォで不可視なのとか、パスとモジュール階層が対応してるのは文句なくて
パスと対応してるのに、いちいちpub modが並んでるだけのフォルダ名と同名ファイル「hoge/fuga.rs」作らないと
サブフォルダに切ったサブモジュールさわれないらしいのがウザいなあって思ったんだけど、今「hoge/a.rs」で
mod fuga {
pub mod b;
}
って書いたら普通にhoge/fuga/bを触れたんで、そもそもフォルダ分けてもfuga.rsなんて作る必要なかったんか?
パスと対応してるのに、いちいちpub modが並んでるだけのフォルダ名と同名ファイル「hoge/fuga.rs」作らないと
サブフォルダに切ったサブモジュールさわれないらしいのがウザいなあって思ったんだけど、今「hoge/a.rs」で
mod fuga {
pub mod b;
}
って書いたら普通にhoge/fuga/bを触れたんで、そもそもフォルダ分けてもfuga.rsなんて作る必要なかったんか?
526デフォルトの名無しさん
2023/05/21(日) 13:36:22.22ID:Zk8rlvra 他のファイルからfuga.rs触らないならまあそうなのか
普通はやらないけど
普通はやらないけど
527デフォルトの名無しさん
2023/05/21(日) 13:36:56.71ID:Zk8rlvra528デフォルトの名無しさん
2023/05/21(日) 14:43:05.00ID:0PJMtftZ 他のファイルからはa::fuga::bとかでアクセスできるやろ
依存性や役割のまとまりに応じてモジュール階層を切ればいい
依存性や役割のまとまりに応じてモジュール階層を切ればいい
529デフォルトの名無しさん
2023/05/21(日) 15:41:33.08ID:XMzvIQEw530デフォルトの名無しさん
2023/05/21(日) 16:12:13.12ID:ypADRCwd ついにC#の時代がきた
AzureでChatGPTが動かせるサンプルが来たぞ
なんとjupyterでC#を動かしている
(python以外の言語も使えたのかよ)
そさてサンプルの豊富さと美しさよ
ここまできても無視してる奴らは本当に技術力が低いと思う
https://github.com/Azure-Samples/openai-dotnet-samples/blob/main/tweet-classifier.ipynb
AzureでChatGPTが動かせるサンプルが来たぞ
なんとjupyterでC#を動かしている
(python以外の言語も使えたのかよ)
そさてサンプルの豊富さと美しさよ
ここまできても無視してる奴らは本当に技術力が低いと思う
https://github.com/Azure-Samples/openai-dotnet-samples/blob/main/tweet-classifier.ipynb
531デフォルトの名無しさん
2023/05/21(日) 16:39:30.76ID:Zk8rlvra jupyterってjuliaとpythonとrの略なんですよMAUI君
532デフォルトの名無しさん
2023/05/21(日) 16:49:36.80ID:IOpBRqCc533デフォルトの名無しさん
2023/05/21(日) 18:21:13.72ID:+umr+h+D534デフォルトの名無しさん
2023/05/21(日) 18:22:09.48ID:gNV32dti jupyterって確か前からC#は使えてただろ
535デフォルトの名無しさん
2023/05/21(日) 18:29:15.16ID:FVg8qfB9536デフォルトの名無しさん
2023/05/21(日) 19:14:19.33ID:gJ8vYfGl537デフォルトの名無しさん
2023/05/22(月) 09:51:12.40ID:Omf9ofNg538デフォルトの名無しさん
2023/05/23(火) 20:23:45.68ID:6llIPdc3 C++でnewはヒープ領域にメモリを確保するけど
Rustのnewは可変サイズでなければスタック領域にメモリを確保しちゃうんだな
Rustのnewは可変サイズでなければスタック領域にメモリを確保しちゃうんだな
539デフォルトの名無しさん
2023/05/23(火) 20:51:13.22ID:QaZRkUju おじ~ん
540デフォルトの名無しさん
2023/05/23(火) 22:24:35.02ID:QWj3a5zv541デフォルトの名無しさん
2023/05/23(火) 22:50:52.99ID:mDaJGwa6 関数名がnewかどうかは自由だが
Selfを返すことになるのでそれは必ずスタック上に置かれる
Selfの中のフィールドなどがVecなどであれば間接的にヒープも使うことになるが
あくまでも間接利用であり直接のSelfの実体はスタック上となる
Selfをヒープ上に置きたいならば明示的にBoxで包めばよい
常にヒープ上に置く使い方のみをするならば
newという関数がSelfを返すのではなくBox<Self>を返す仕様にすることも可能
Selfを返すことになるのでそれは必ずスタック上に置かれる
Selfの中のフィールドなどがVecなどであれば間接的にヒープも使うことになるが
あくまでも間接利用であり直接のSelfの実体はスタック上となる
Selfをヒープ上に置きたいならば明示的にBoxで包めばよい
常にヒープ上に置く使い方のみをするならば
newという関数がSelfを返すのではなくBox<Self>を返す仕様にすることも可能
542デフォルトの名無しさん
2023/05/23(火) 22:54:27.65ID:gzRXTWAF 分数 みたいな 論理演算は昔からあったのに
Rustになって それが強化されたみたいに感じるのは
ただ単に ハードウェアの性能が上がったからじゃないの
Rustになって それが強化されたみたいに感じるのは
ただ単に ハードウェアの性能が上がったからじゃないの
543デフォルトの名無しさん
2023/05/23(火) 23:36:32.18ID:O4W+gg5k Rustは後でスタックにもヒープにも移動できるから
最初にどこに確保しようが関係ない
C/C++は合算の対価として、値の移動ができないCの仕様を守る
対価を支払ったのだから合算していい
最初にどこに確保しようが関係ない
C/C++は合算の対価として、値の移動ができないCの仕様を守る
対価を支払ったのだから合算していい
544デフォルトの名無しさん
2023/05/24(水) 00:05:18.37ID:Q/1yUZsH545デフォルトの名無しさん
2023/05/24(水) 00:10:06.89ID:mXMvlRMp546デフォルトの名無しさん
2023/05/24(水) 00:33:20.12ID:paMEGXlZ >>545
それを言うなら「C++だとnew使わない限りスタックに置かれる」だろ
それを言うなら「C++だとnew使わない限りスタックに置かれる」だろ
547デフォルトの名無しさん
2023/05/24(水) 00:42:05.36ID:m0EnFP5f >Selfを返すことになるのでそれは必ずスタック上に置かれる
C++のnewは「ポインタを返すことになるのでそれは必ずスタック上に置かれる」と言ってるのと同じ
以降の文もだけどポイントがズレてるってことわかんないかな
C++のnewは「ポインタを返すことになるのでそれは必ずスタック上に置かれる」と言ってるのと同じ
以降の文もだけどポイントがズレてるってことわかんないかな
548デフォルトの名無しさん
2023/05/24(水) 00:54:21.12ID:E9tRPF6k RustのBox = C++のnew
どちらもインスタンスをヒープで作ってそれを指すポインタを返す
どちらもインスタンスをヒープで作ってそれを指すポインタを返す
549デフォルトの名無しさん
2023/05/24(水) 00:57:06.07ID:E9tRPF6k550デフォルトの名無しさん
2023/05/24(水) 03:23:05.87ID:3Tyqstx6551デフォルトの名無しさん
2023/05/24(水) 04:29:36.35ID:dbRRSEYx552デフォルトの名無しさん
2023/05/24(水) 06:21:18.27ID:DmEFL3XT553デフォルトの名無しさん
2023/05/24(水) 20:33:36.47ID:p10CeLN4 move等が無かった時代に書かれた仕様を現代の価値観で解釈するのは誤読と言われそうだが
C/C++は常習的にそれをやっていた
CのstructにはOOPの機能が無い・・・のではなく省略できることを書かなかっただけ
と解釈される
C/C++は常習的にそれをやっていた
CのstructにはOOPの機能が無い・・・のではなく省略できることを書かなかっただけ
と解釈される
554デフォルトの名無しさん
2023/05/24(水) 23:36:30.94ID:zNkTHn8w どこかのタイミングで c++ → c+++ 辺りに解明白
555デフォルトの名無しさん
2023/05/25(木) 00:10:13.85ID:0dEV4qNs int i {0};
cout << ++i++ << ' ' << i << '\n';
何と表示?
cout << ++i++ << ' ' << i << '\n';
何と表示?
556デフォルトの名無しさん
2023/05/25(木) 01:15:55.63ID:mUl8ilNM >>551
C++のmoveは機能が非常に小さく限られてるのね
C++のmoveは機能が非常に小さく限られてるのね
557デフォルトの名無しさん
2023/05/26(金) 10:16:10.06ID:r1ZsxdoB 今からやるならrust
558デフォルトの名無しさん
2023/05/26(金) 10:32:38.85ID:DUo6rxtT でもRustって使いどころがないんだよなあ
559デフォルトの名無しさん
2023/05/26(金) 11:54:59.67ID:ESB2ogqi .NET普通に使えるRust#欲しいかな
要らんな
要らんな
560デフォルトの名無しさん
2023/05/26(金) 14:07:09.39ID:xXTbrqoh■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国国営メディア「沖縄は日本ではない」…★7 [BFU★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 高市早苗、岸田政権(当時)に「台湾有事は日本の有事か」という質問をしていた [175344491]
- 【悲報】ゼレンスキー「高市早苗は生命を守り、国際的なルールに基づく秩序を擁護し、国家間の相互尊重を促している」 [616817505]
- 青椒肉絲、牛肉ではなく豚肉を使うのが本物だった
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- んなっしょい🍬禁止🈲のお🏡
