【超高速】C/C++に代わる低級言語を開発したい 8at TECH
【超高速】C/C++に代わる低級言語を開発したい 8 - 暇つぶし2ch347:デフォルトの名無しさん
25/03/27 11:46:57.39 HDQeQZ5r.net
Copyトレイトは無闇に付けたくないな

348:デフォルトの名無しさん
25/03/27 11:59:13.89 JG6/gkrB.net
Trait爆発ですね判ります

349:デフォルトの名無しさん
25/03/27 12:14:45.69 UV4Rce1I.net
>>345
Addでは不変参照しか使わないから& mutは不要
& mutが必要となるのはAddAssignだがこれは& mut selfになる

350:デフォルトの名無しさん
25/03/28 09:26:28.67 VPiwRdmL.net
Rust使ってても暗黙のCopyとかに無関心だと【超高速】名乗れなくない?

351:デフォルトの名無しさん
25/04/05 10:41:53.71 wy4OM/NR.net
包丁も食材も上手く使えないと料理は不味い

352:デフォルトの名無しさん
25/04/06 07:52:19.40 IvdHyMZx.net
料理が上手なヤツはRustは使わない

353:デフォルトの名無しさん
25/04/06 23:21:04.80 p+WNSwb1.net
>>350
暗黙のコピーが発生しまくる諸言語とは異なり
RustではCopyトレイト実装型のみ暗黙のコピーが行われるので最もRustが好ましい

具体的にCopyトレイト実装型とは整数値やポインタおよび不変参照であり
それらを用いた複合型は明示的にCopyトレイト実装することもできる

ちなみに整数値などがなぜ暗黙のコピーが起きても構わないかというと
CPUにとってそれらをポインタ経由で間接的に扱う方が遅くなるからであり値をコピーして用いたほうが速いため

354:デフォルトの名無しさん
25/04/07 10:58:45.39 fwcAlCQF.net
はあ…

355:デフォルトの名無しさん
25/04/07 12:23:44.19 yN1PvO54.net
>>352
マにだって料理が得意な奴はいるだろ

356:デフォルトの名無しさん
25/04/07 14:31:02.06 w0rhHNCz.net
>>353
お前レベル低過ぎ
黙ってろ

357:デフォルトの名無しさん
25/04/07 14:50:26.71 k98JYePi.net
>>353で合ってるでしょ
コストの係るものは明示的に.clone()しないとコピーできないし
コストの係らないものはCopyトレイトのおかげで.clone()しなくてもコピーされるよ

358:デフォルトの名無しさん
25/05/02 09:39:27.39 k5bGwZZ0.net
Rustの最大の教訓は、どんな言語でも有名になればバカ(必ずしも頭が悪いわけではなく、本来その言語が想定しない用途に使おうとする奴も含む)が使うってことだろう
Rustの仕様はそれほど効率が重要でない分野でテキトーに使おうとすると無駄なコピーが増えたりしてかえって非効率になりがちな面がある

359:デフォルトの名無しさん
25/05/02 18:23:29.41 kIVCyVUc.net
>>358
Rustは明示的にclone()を呼んだりCopy実装しないとコピーされないから大丈夫だよ
暗黙にコピーされないから無駄なことをしていればコード見るとすぐバレちゃう
まともなコードは必要な極一部を除いてほとんど参照で渡されるね
ちなみに数値や不変参照(ポインタ)はCopy実装されてるため暗黙にコピーされるけどそれが一番速いから問題なし

360:デフォルトの名無しさん
25/05/03 12:05:28.26 ekVKJoF2.net
最適化されることを主張するなら証拠を示すべきなのは当然だが、
コピーの最適化を前提にするのなら例えば安易にCopy実装したりcloneしたりすんな、
みたいな意識高い言説は多くの場合無意味になっちゃうわけだけど、Rustおじはそれでいいのだろうか

361:デフォルトの名無しさん
25/05/03 13:36:23.13 BbjMJMxS.net
>>360
頭悪いから違いを理解できないのか?
まずCPUのMOVE命令は全てコピーだ
だから数値や参照(アドレス)がCopy実装されていても何のペナルティも存在しない
むしろ数値や参照を参照で扱う方が間接となり遅い
次にCPUのMOVE命令は全てコピーだがコピー元が使われてなければ純粋なムーブと見なすことができる
そのため最適化が可能で例えば2回のムーブは1回に減らすことができる
これはスタック上の変数を扱う場合も同様でレジスタへMOVEした後にレジスタ間の演算で終わるならスタック上の領域は不要で最適化できる

362:デフォルトの名無しさん
25/05/03 13:38:21.80 BbjMJMxS.net
RustやC++のムーブも同じで一次的にはコピーをして元を使わないため最適化できる場合が多い
一方でプログラマがコピーやクローンを明示的にした場合は元が生きていて全く異なる
そもそも元も後で使いたいからコピーしているわけだ
だからムーブとは異なり最適化でコピーが消えることはない
もちろん後で使いたい場合はコピーして渡すのではなく参照を渡すのが正解だ

363:デフォルトの名無しさん
25/05/03 13:39:26.21 BbjMJMxS.net
したがってプログラマはコピーを可能な限り避けるべきである
暗黙のコピーが行われるプログラミング言語では意識せずコピーしてしまう
プログラムを見ただけですぐにコピーしてあることがわかる方が望ましい
RustではCopyトレイト実装した型のみ暗黙のコピーが起きる
前述のように数値などはその方が有利なので最初からCopy実装されている
ヒープを用いない型ならばプログラマは自由にCopy実装できるがコード上でそれが明示され読む側は気付ける
サイズが大きく参照で扱った方がよい型をCopy実装していればおかしいことがわかる
一方でヒープを用いていればCopy実装はできないがClone実装はできる
これはコード上でfoo.clone()とコピーすることを明示的に記述する必要がある
したがって参照を使えばよいのに無駄なコピーをしていればすぐにわかる

364:デフォルトの名無しさん
25/05/04 11:58:45.22 RkNPiBO2.net
区別できないバカなのか?
ムーブの時などを含めて実態がコピーになるといってもコピー元は二度と使われないのだから最適化できる

一方でclone()などはコピー元をその後も使うためにコピーしている
コピー元を二度と使わないならclone()の必要がない
そしてコピー元をその後も使うから最適化の前提さえ成立しない

365:デフォルトの名無しさん
25/05/05 10:09:59.16 20YqVkB+.net
RustはC++より描き易いけどC++からの置き換えには不適
RustはCより面倒だけどCからの置き換えには最適

366:デフォルトの名無しさん
25/05/06 06:06:18.29 JTtajrxW.net
低レベル言語の開発だよね?
皆さんの会話が高級すぎて戸惑いを隠せない。
OS記述も十分に低レベルだけど、ハードウエア操作はもっと低レベルじゃないかな?

367:デフォルトの名無しさん
25/05/06 10:06:47.77 K1Pjz07i.net
Rustで低レベルするとunsafeだらけになる
(悪いとは言ってない面倒臭いとは思う)


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