- 1 名前:デフォルトの名無しさん [2023/02/25(土) 09:49:46.74 ID:VRyB88xR.net]
- C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
- 372 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:54:59.09 ID:UJajhYy7.net]
- >>367
出力をcdylibにすれば一般的なCソースのライブラリと同じ形式(soとかdll)で出力されるはず 当然FFI絡みの制約は出てくるしextern指定とかも必要だけど境界部分だけ気を付ければ内部は自由にRustできる wgpuはRustで書かれたグラフィックライブラリだけどその機能をC/C++から呼ぶためのwrapperでwgpu-nativeがあって さらにそのC用のwrapper経由で別言語(Pythonとか)のwrapperが作られてたりする 依存関係がややこしいけど wgpu (Rust製、Rust用Lib出力) ← wgpu-native (Rust製、C用Lib出力) ← wgpu-py (C+Python製、Python用ライブラリ) みたいな構造
- 373 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 01:04:51.03 ID:o5CBT2m0.net]
- >>372
なるほどー
- 374 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 05:58:07.48 ID:HbMAHHRq.net]
- >>359
Rustならマルチスレッドでもマルチタスク(=グリーンスレッド)でも書きやすく さらにデータ競合を完全に防げるRustしか現状の言語では選択肢ないと思うよ 各言語で書き比べてみれば一目瞭然 そのため並行並列を使うプログラムはC++→RustだけでなくJava→Rustの移行も進んでる
- 375 名前:デフォルトの名無しさん [2023/03/17(金) 10:42:47.45 ID:o5CBT2m0.net]
- >>374
>>そのため並行並列を使うプログラムはC++→RustだけでなくJava→Rustの移行も進んでる 全く進んでいないのだが?w 俺の周りではC++やJavaでマルチスレッドで書く奴の方が多い というかそもそもRustを使っている奴は一人もいないw 妄想なのか詐欺師なのか... Linuxでも さもRustの導入が進んでるように言うが実際は>>39だし...
- 376 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 10:55:37.94 ID:FKqwIQQI.net]
- マルチスレッドはまあ普通だけどマルチタスクはめちゃくちゃ書きにくいぞ
単純なWeb Serverくらいならいいがちょっと凝った処理を書こうとするとくっそ面倒くさい tokio依存なのもダメなところ
- 377 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:06:44.98 ID:tBmmskox.net]
- そここそ、OSがRust化するっていうんだから、きれいなAPIが出てきてほしいね
結局、効率を求めたらC API に肉薄することになるし
- 378 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:15:24.56 ID:TZnQdWAf.net]
- Linuxの現状はRustでドライバが書けるようになったってだけだよ
誤解なきよう
- 379 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:17:48.64 ID:RPqYd1dp.net]
- >>376
マルチタスク(並行)で綺麗に書ける言語はRustとGoだけだな GoはPromise(Future)使わないあのスタイルに寄せられるのとGC言語であるため Rustが汎用では筆頭言語になる
- 380 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:33:47.61 ID:Igk62yzo.net]
- >>376
だよな Rustの非同期が簡単だと勘違いしてるやつはチュートリアルレベルしかやったことないやつだと思うわ
- 381 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:43:37.53 ID:RPqYd1dp.net]
- >>380
自分でpollしたりするのも含めて色んなレベルで書いているが簡単だぞ Rustで並行並列が難しいと言うならばとこが難しいのかを具体的に述べよ そしてそのケースでRustの代わりに使える別言語があるならば述べよ
- 382 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:51:53.17 ID:UWSndCzi.net]
- Goと比較したら性能面でも劣ることが多くて同程度の性能を実現したければ手動であれこれやらないといけないからな
- 383 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:19:57.65 ID:CZQwnfV3.net]
- >>381
そうやって自分が分かってない事を無料で聞き出してしまおうとする。ずる賢い。
- 384 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:31:22.55 ID:RPqYd1dp.net]
- >>382
Goが速い遅いと言ってたのは昔の話 今はGoもRust tokioも改善してほぼ同じwork stealing方式になり似たりよったりの速度 C++をあきらめてRustに対抗できるGoを持ち出すしかないほど追い込まれてるのかね >>383 Rustで並行並列が他の言語より難しいことはない 難しいと主張するならば何が難しいのかを述べたまえ もし本当に具体的に困ったことがあるならばアドバイスできる
- 385 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:38:18.49 ID:YQ2F/Sw2.net]
- 追い込まれてるってなんだろうね
楽しそうだね
- 386 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:39:30.67 ID:o5CBT2m0.net]
- この人は妄想癖がある
- 387 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:56:40.90 ID:LTrpjv8n.net]
- >>384
>Rustで並行並列が他の言語より難しいことはない >難しいと主張するならば何が難しいのかを述べたまえ >もし本当に具体的に困ったことがあるならばアドバイスできる 問題意識があること、気付くこと、それが大事。 あなたにはそれがない。
- 388 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 13:03:24.97 ID:Gi38nai6.net]
- >>383
わかり味 こいついつも教えて君だよなぁ 総論しか書けないところみると マニュアルだけ読み込んだペーパープログラマーがそれを隠すためのネタを欲してるようにしか見えない
- 389 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 13:03:47.55 ID:T8dNhcTz.net]
- Goはgoroutine間のデータ競合の発見を実行時のランタイムでやるしかなく
Goはあまりお勧めできないなあ メモリ共有せずチャネルを使う範囲ならGoでもいいけど Rustでもチャネルはもちろん使えるし 共有メモリで安全にデータ競合を起こさず使えるからRustがいいよ
- 390 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 14:28:10.79 ID:ZRpBqjDt.net]
- ほんと嘘ばっかりだな
- 391 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 15:04:18.42 ID:RPqYd1dp.net]
- >>389
Goに限らずデータ競合を実行時にしか検出できない言語ではデータ競合が時々しか起きない場合のデバッグが難しい Rustを使うべき理由はデータ競合を静的に検出できる点にある
- 392 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 15:55:42.60 ID:LTrpjv8n.net]
- >>391
それはマルチスレッドプログラミングのアルゴリズムをRustは強く制限しているから。 だから、その制限から外れるようなアルゴリズムは使えないので柔軟性は欠く。
- 393 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:03:41.59 ID:tBmmskox.net]
- そこが、新規書き起こしのRustのメリットでもあるわけよな
- 394 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:05:57.04 ID:LTrpjv8n.net]
- >>393
そして、独自のアルゴリズムは使えないので、アルゴリズムの研究には向かない。
- 395 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:11:31.46 ID:TZnQdWAf.net]
- 第n次LinkedListおじさんvsGCおじさん戦争
- 396 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:16:19.10 ID:tBmmskox.net]
- 頑張ったら書けるんじゃねーの、それもsafeで
そのへんはC++もおなじ 自分も、ニッチすぎる薄いラッパなら頑張って書くし
- 397 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:20:04.75 ID:KZujdKGk.net]
- >>392
Rustで記述できないマルチスレッドプログラミングのアルゴリズムなんてものは存在しない Rustは柔軟性が非常に高い
- 398 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:32:10.93 ID:LTrpjv8n.net]
- >>397
嘘を書かないで。
- 399 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:41:56.97 ID:T8dNhcTz.net]
- Rustで書けないのがあると主張している人が例を出せばいいんじゃね
Rustにそんな制限はないからすべて書けるよたぶん
- 400 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:52:07.05 ID:4tGjgBNl.net]
- 結局何年か後にはlinux kernelを全部rustで書くつもりなんかな
- 401 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:00:34.34 ID:tBmmskox.net]
- 書けなくはないだろ、書きやすいかどうかだ 実際どうなん
C++は、なんでも書けるが、油断すると複雑すぎる代物ができあがる そんで、「でも例外がくるとー」「でも異常値がくるとー」って
- 402 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:01:41.44 ID:LTrpjv8n.net]
- >>399
マルチスレッドのアルゴリズムは非常に多く存在していて、ある意味では無限に 考えられる。Rustは数個しかサポートしていないから、無理。
- 403 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:26:21.78 ID:T8dNhcTz.net]
- >>402
Rustで書けない例があると主張したいなら例を出せばいいんじゃね Rustに何か制限があるわけじゃないからおそらくなんでも書けるよ
- 404 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:31:51.55 ID:LTrpjv8n.net]
- >>403
unsafeになる。
- 405 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:42:50.37 ID:T8dNhcTz.net]
- >>404
マジ?信じられん もし本当ならそのunsafeを使わざるを得なかった例を具体的に出せばいいんじゃね
- 406 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:43:39.56 ID:tBmmskox.net]
- unsafeをゼロにするよりも、極小なunsafeブロックを組み込んで華麗にキメてほしいね
これはC++も同様
- 407 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:52:35.17 ID:2s/kFNH6.net]
- >>400
そういう枯れた古いものをわざわざ書き直すことに熱意を燃やせる人間は少ない 新世代のデータベースやcrypt/blockchainのように金になる新しい成長分野ではc/c++よりもrustがよく使われてる 技術の自然な世代交代は既存システムの置き換えから始まるものではない
- 408 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:01:30.86 ID:LTrpjv8n.net]
- >>405
次のことが成り立っていれば教えてもらわなくても自然に分かる: ・マルチスレッドの事を理解している。 ・Rustのことを理解している。 ・算数的直観力に優れる。
- 409 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:03:48.04 ID:u99ocdLb.net]
- 複製おじさん vs 100点おじさん
Fight!
- 410 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:24:08.50 ID:NC4w42Nt.net]
- >>401
そのへんの問題もRustだと安全安心なのがいいよなー 特に例外機構を無くしたのは大成功 あとResult放置してると警告もしてくれるしな >>404 そのunsafe使わないと書けなかったコードを出してみ 寄ってたかって添削してやろう
- 411 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:36:02.65 ID:LTrpjv8n.net]
- >>410
俺は天才だから、お前みたいな凡人に無料でヒントをくれてやらない。
- 412 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 19:13:16.48 ID:tBmmskox.net]
- Rustって、削ぎ落したものは復活させません、って宣言とかしてるん?
- 413 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 19:55:25.86 ID:9o1NNcpX.net]
- >>408
Rustをあんまり知らんけど言語間に根本的な差はなくね?
- 414 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 20:02:50.35 ID:kImSYq8C.net]
- >>408はいつものキチガイ
RustもC++もコードを書けたことがない 相手にするだけ無駄
- 415 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 20:19:10.88 ID:TZnQdWAf.net]
- >>414
今さらなに言ってるんだ? ここにはキチガイしかいないぞ? 俺もお前もな
- 416 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 20:29:34.70 ID:Zxg/DnHC.net]
- >>413
ん?だから何?
- 417 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 21:29:42.97 ID:o5CBT2m0.net]
- >>416
アルゴリズムを書ける書けないの差はでない
- 418 名前:デフォルトの名無しさん [2023/03/17(金) 23:44:57.66 ID:Lcw0Ean/.net]
- Rustほとんど知らん俺でも総合的にRustのほうがC++よりはいいだろと思う
C++より後発言語で、で、ライバルになるC++に劣っているようじゃダメだからな で、お前らは、すごいRustで具体的に何を作っているんだ?
- 419 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:11:15.51 ID:6kQD14Ek.net]
- ChatGPT先生に聞いてみた
>>404の言う通り template <typename T> class LockFreeStack { public: void push(const T& value) { Node* new_node = new Node(value); new_node->next = head.load(std::memory_order_relaxed); while (!head.compare_exchange_weak(new_node->next, new_node, std::memory_order_release, std::memory_order_relaxed)); } std::shared_ptr<T> pop() { Node* old_head = head.load(std::memory_order_relaxed); while (old_head && !head.compare_exchange_weak(old_head, old_head->next, std::memory_order_acquire, std::memory_order_relaxed)); return old_head ? std::make_shared<T>(old_head->value) : nullptr; } private: struct Node { T value; Node* next; Node(const T& value) : value(value), next(nullptr) {} }; std::atomic<Node*> head{nullptr}; };
- 420 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:31:48.86 ID:jelBOeFa.net]
- 先生にからかわれとるぞw
- 421 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:53:02.93 ID:rMRLIFsD.net]
- >>419はこれと同じのをRustで書いたらunsafeになる(だろ?)
って言いたいんだろ 偉大なるChatGPT先生が言うんだから間違いないだろな
- 422 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:58:57.68 ID:6kQD14Ek.net]
- >>421
いやChatGPTは信用しない方が良い 俺はRustは良く分からんがChatGPT曰く >Rustには、このようなロックフリーなデータ構造を提供する >クレート(ライブラリ)が存在します。その一つがcrossbeamです。 >このクレートは、スレッドセーフで効率的なデータ構造を提供しており、 >crossbeam内でUnsafeな操作が行われているにもかかわらず、 >APIを通じて安全に使用できます。 だそうな crossbeamってRustで書かれとらんのかな?
- 423 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 01:14:24.86 ID:pMxUNH+f.net]
- >>422
本当は、ライブラリの中だけをunsafeにして、アプリ側はsafeに出来るケースも有れば、 アプリ側も unsafe を消せないケースもありえる。
- 424 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 01:17:39.13 ID:6kQD14Ek.net]
- unsafeってキーワード使えばチェックをオフにできるのね
- 425 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 01:29:02.55 ID:6kQD14Ek.net]
- >>420
Rustで書いてみよう!
- 426 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 04:35:18.48 ID:+IGrKU6n.net]
- ArcとAtomicでほぼそのまま書けるけど
pointer dereferenceのためにunsafeは必須
- 427 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 10:03:55.24 ID:fNuha5Rk.net]
- 言語マウントごっこにしか使われてないrust
- 428 名前:デフォルトの名無しさん [2023/03/18(土) 10:25:46.77 ID:fSPMk7mF.net]
- no chance
- 429 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 11:41:47.24 ID:ux4diyjf.net]
- 平日の昼にID真っ赤なのは仕事か
板違いのスレで必死に毎日お疲れさん
- 430 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 14:02:46.54 ID:d2/CRNVk.net]
- ちょうどオライリーから「Rust Atomics and Locks」という本が出てるよ
基本的な内容を説明してる本なのでC++でatomicsやmemory orderingに慣れ親しんでる人がわざわざ買うほどのものではないかもしれないけど かなりわかりやすくまとまってるのでRustでこの辺りの機能を使ったコードを良く書く人は読んで置いて損はないと思う
- 431 名前:デフォルトの名無しさん [2023/03/18(土) 16:09:57.63 ID:fSPMk7mF.net]
- ほう
https://bokuweb.github.io/undefined/articles/20230205.html
- 432 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 18:42:10.12 ID:kFUsfJhu.net]
- Lock-Freeなデータ構造を自分で作りたい人はこれを見るといい
Porting Java's ConcurrentHashMap to Rust (part 1) https://www.youtube.com/watch?v=yQFWmGaFBjk
- 433 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:22:41.89 ID:LfQxDddq.net]
- > cargo new hoge
> cargo run → 3MB main.rs に use clap::Parser; 追加すると > cargo run → 100MB 超えるんだが どうすれば容量減らせるん?
- 434 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:44:51.20 ID:TIfaDrwo.net]
- とりあえず--releaseつける
- 435 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:32:03.94 ID:fPDrKYk/.net]
- しらんけど
https://igaguri.はてなぶろぐ.com/entry/2020/06/07/133847 https://crates.io/crates/cargo-clean-recursive
- 436 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:35:18.59 ID:fPDrKYk/.net]
- とりあえずは
cargo clean で良いはず 最初から余計なのは造りたくないって言う話ならほんまにしらん
- 437 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 14:03:33.37 ID:4KWNgnTF.net]
- >>436
ありがとうございました
- 438 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 08:59:55.73 ID:8VwEKWf+.net]
- やっぱC++にもボローチェッカ欲しい
なんならCにも欲しい attributeとか併用したら、やってできないことはないんじゃねーの
- 439 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 17:20:17.93 ID:icU0z8mb.net]
- rg3d はなぜ
https://github.com/rg3dengine/rg3d から https://github.com/FyroxEngine/Fyrox に改名したのですか?
- 440 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 17:50:34.39 ID:5MGYYNx+.net]
- rustの読み物公式が面白いのしっかり出してるから
それ読むだけでも大分良い 後発言語らしくイイトコどりしまくってる null無くした代わりになんでもかんでもラップしてるから若干だるいけど すげー面白い
- 441 名前:デフォルトの名無しさん [2023/03/21(火) 19:41:09.03 ID:4irMO5jk.net]
- Unity超えるゲームエンジン作ってから言え
- 442 名前:デフォルトの名無しさん [2023/03/21(火) 19:42:14.14 ID:4irMO5jk.net]
- Blenderとかでもいいよ
- 443 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 21:54:25.24 ID:gItZ+a0F.net]
- cpp2rsみたいのがじきできるから、そしたら一発
ただ、それだと、safeではあるけど、Rustのシンプルさは(メリットとして)失うな
- 444 名前:デフォルトの名無しさん [2023/03/22(水) 07:30:44.03 ID:7nCtmzjD.net]
- >>443
ほんとにできる?
- 445 名前:デフォルトの名無しさん [2023/03/22(水) 09:09:27.85 ID:II3LrhVD.net]
- 文法がRustなだけで
Rustのコードとして使い物にならん ゲテモノが出て来るわ 今のGPTも酷い
- 446 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 09:47:28.48 ID:RLKJ2atP.net]
- ああ、あと全自動とは言わない あっちこっちで、あれなおせーこれなおせーって言われるかと
- 447 名前:デフォルトの名無しさん [2023/03/22(水) 10:40:01.19 ID:Motackg9.net]
- たしかに、C++でメモリ安全性を静的チェックするツールを作るのはなかなか難しいもんかね?
- 448 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 12:19:59.74 ID:jZlOcGNt.net]
- gccだとvargrindとかあるけどね
- 449 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 14:27:48.09 ID:RqRpj7Ax.net]
- valgrindはgcc関係なくないか?
rustでもメモリリークの確認に使う 有用なツールだけど静的チェックと呼べるのかは疑問
- 450 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:31:28.83 ID:vDLoPLCP.net]
- valgrindは実行時チェックだから出現レアケースだと時間内に検出できない
- 451 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:43:05.82 ID:jZlOcGNt.net]
- AddressSanitizerでもValgrindでもmtraceでも好きなの選べ
https://kivantium.hateblo.jp/entry/2018/07/14/233027
- 452 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:46:10.74 ID:vDLoPLCP.net]
- 全て実行時チェックだな
- 453 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:54:30.07 ID:jZlOcGNt.net]
- 静的ツールだとこんなのもあるね
https://cppcheck.sourceforge.io/ スマートポインタ使えばそもそもいらんがね
|

|