[過去ログ]
Rust part24 (1002レス)
Rust part24 http://mevius.5ch.net/test/read.cgi/tech/1716759686/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
392: デフォルトの名無しさん [sage] 2024/06/27(木) 09:08:39.14 ID:AKJ8/1zo C++ でも変更なしのときに const を付けるんじゃなくて変更ありのときに指定するほうがよかったという声は結構あるよな。 まあいまさら変更できんが。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/392
398: デフォルトの名無しさん [sage] 2024/06/27(木) 11:05:58.76 ID:AKJ8/1zo >>395 キャッシュに乗りやすいというのはアクセスに局所性があるということ。 関数自体が小さくてすぐ終わるなら普通はスタックのほうが以前と近い場所にアクセスすることになる。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/398
407: デフォルトの名無しさん [sage] 2024/06/27(木) 13:49:01.55 ID:AKJ8/1zo 低レイヤで起こってることは C と変わらん。 寿命の矛盾がないか静的な検査がクソ強いってだけだ。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/407
408: デフォルトの名無しさん [sage] 2024/06/27(木) 15:56:45.17 ID:AKJ8/1zo スタックを伸ばすだの縮めるだのいうのはメモリのとある番地に実際のメモリを割り当てたり切り離したりすること。 スタックが足りなくなってきたら連続するアドレスのところに実メモリを割り当てるのがスタックを伸ばすってこと。 普通の使い方をしていたらスタック領域を縮めることはあんまりない。 スタックがあるところまで伸びたということはもう一度そこまで伸びる可能性が高いので回収してまた割り当ててをするよりは割り当てっぱなしにしたほうが良いという設計思想になってるので全体のメモリが足りている限りスタックが浅いところまで戻ってきても実メモリを回収しないという のが現代的な OS。 逆に言えば全体のメモリが足りなくなってきたら回収することもあるんだけど。 素人感覚だとメモリをなるべく空くようにするのが「メモリの無駄を防ぐ」という意識の人がいるんだけど、存在するメモリが使われないままになってるほうがもったいないんだ。 それとたとえば Linux だとスタックの大きさは 8MB が上限というのがデフォ。 これは OS 側の設定なのでアプリケーション側では (OS の設定をいじる権限がない限りは) どうにもできない。 8MB ってめちゃくちゃ少ないように感じるかもしれないけどだいたいこんなもんで足りちゃうんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/408
411: デフォルトの名無しさん [sage] 2024/06/27(木) 17:59:42.80 ID:AKJ8/1zo 低レイヤのメモリの取り扱いモデルが確立している高級言語が C/C++ くらいしかなくて、 LLVM も汎用的なフレームワークのふりして思ったほど自由ではないので Rust の言語仕様が LLVM の都合に、 C/C++ の都合に引っ張られているところはまあまあある。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/411
416: デフォルトの名無しさん [sage] 2024/06/27(木) 20:08:52.27 ID:AKJ8/1zo >>412 まあ機械語レベルの低レイヤまでいけば参照もポインタも同じっちゃおなじだけど、構文糖だという認識は明確に誤りだ。 参照がポインタの構文糖なんて書いてあるデタラメ本で C++ を学んだのなら C++ の理解も全然できてないと思う。 または書いてないことを脳内で作り出すタイプのやつは誤った方向に邁進してどうにもならなくなったところで質問したりするから言ってることが意味不明になりやすい。 仮に(あくまでも仮にだが!)言ってる理屈自体が正しかったとしてもちゃんとした用語でいってくれないと伝わらないし、ちゃんとした用語は(一次資料に基づいた)ちゃんとした資料で学ばないと身に付かん。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/416
421: デフォルトの名無しさん [sage] 2024/06/27(木) 23:34:16.52 ID:AKJ8/1zo C/C++ だと抽象機械という概念を挟む形で仕様化されてる。 言語の挙動を抽象的な (架空の) 機械の動作として記述していて、それを実際の機械とどう対応させるかは知らんけど見かけ上の動作が仕様通りなら良しとする規定。 だから最適化を豪快にやっても結果が同じなら言語仕様に反しない。 で、抽象機械っていうのはある程度は現実のコンピュータを想定はしているけど細かいところは意図的にうやむやにして選択の余地を残してる。 C/C++ には言語仕様としてはスタックもヒープも存在せず書いてあるのは寿命についてのルールだけで、それをどういう形で実現するかは自由…… なんだけど現実にはスタックとヒープを使い分けるとちょうどいいような仕組みになってる。 C/C++ の言語仕様に低レイヤのメモリアクセスのことも確かに書いてあるんだ。 でもそれは抽象的な機械のことであって本物の機械のことじゃない。 でもある程度は対応しているという絶妙なバランスで成り立ってる。 Rust では言語の高レイヤの話と低レイヤの話の間を取り持つ理屈がまだ十分に整理されてないと思う。 言語の性質上、やっぱり低レイヤを全く意識しないで上手く使えるようなものでもないし、低レイヤのことを考えるのもそれなりには必要だと思う。 必要なんだけど意識的にレイヤを分けて考えられないなら混乱するのも確かなので、 (少なくとも最初は) 低レイヤのことは忘れろというのは理に適った助言だと思う。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/421
423: デフォルトの名無しさん [] 2024/06/27(木) 23:46:01.41 ID:AKJ8/1zo 未定義動作の話をしてはいないよ。 低レイヤとの間をどう取り持つかの話をしてる。 http://mevius.5ch.net/test/read.cgi/tech/1716759686/423
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s