結局C++とRustってどっちが良いの?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/02/25(土) 09:49:46.74ID:VRyB88xR C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
341デフォルトの名無しさん
2023/03/16(木) 14:37:50.95ID:srO8KDRm ボローチェッカだっけ? CとC++で実装できんのかな?
342デフォルトの名無しさん
2023/03/16(木) 14:39:57.56ID:3C3pOHVn ていうか、Rustがもたらそうとしてるのは、プログラミングパラダイムだから、
C++でおんなじように書ければいいんだよ ハズしてたらコンパイルエラーになってくれてだな
Rustは実績を積んだ C++は早くその成果を取り込むべき
ラムダといいコルーチンといい、C++が他に学んだ前例はいくらでもある
>>341
まじそれ
C++でおんなじように書ければいいんだよ ハズしてたらコンパイルエラーになってくれてだな
Rustは実績を積んだ C++は早くその成果を取り込むべき
ラムダといいコルーチンといい、C++が他に学んだ前例はいくらでもある
>>341
まじそれ
343デフォルトの名無しさん
2023/03/16(木) 15:04:51.89ID:bO6zkRLm >>338
それはプログラマーのレベルが少なくとも俺よりは低いから。
それはプログラマーのレベルが少なくとも俺よりは低いから。
344デフォルトの名無しさん
2023/03/16(木) 15:07:17.05ID:3C3pOHVn345デフォルトの名無しさん
2023/03/16(木) 15:14:34.72ID:N2/NSeFa use 描くだけでコンパイル中にダウンロード始まって
何分も待たされたらそりゃ遅いわ!!!ぷんぷんって
怒るアホも出て来るだろうね
何分も待たされたらそりゃ遅いわ!!!ぷんぷんって
怒るアホも出て来るだろうね
346デフォルトの名無しさん
2023/03/16(木) 15:18:25.89ID:N2/NSeFa >>334
Rust(人気)は俺が育てた!(AA略)
Rust(人気)は俺が育てた!(AA略)
347デフォルトの名無しさん
2023/03/16(木) 15:36:54.04ID:07ACJDqQ348デフォルトの名無しさん
2023/03/16(木) 15:38:33.76ID:07ACJDqQ349デフォルトの名無しさん
2023/03/16(木) 15:42:21.06ID:I4Z9PBKv350デフォルトの名無しさん
2023/03/16(木) 15:51:10.02ID:TBYrYTSU351デフォルトの名無しさん
2023/03/16(木) 16:02:01.69ID:PpEtLqb1 >>350
それでも言語が汚いから使いたくない。
それでも言語が汚いから使いたくない。
352デフォルトの名無しさん
2023/03/16(木) 16:24:46.13ID:TBYrYTSU 様々なプログラミング言語と比較してもRustは美しい側に入るとともに
言語機能が強力で可読性が高い
とくにパターンマッチング
これはC++でも導入しようとしているが進んでいないだけでなく
C++で出ている提案では強力でなく可読性もよくないようにみえる
Rustはパターンマッチングが非常に強力で可読性の向上の最大要因となっている
言語機能が強力で可読性が高い
とくにパターンマッチング
これはC++でも導入しようとしているが進んでいないだけでなく
C++で出ている提案では強力でなく可読性もよくないようにみえる
Rustはパターンマッチングが非常に強力で可読性の向上の最大要因となっている
353デフォルトの名無しさん
2023/03/16(木) 16:52:12.01ID:3grScBM3 >>351
Rustかどうかは別として10年後くらいには
今Rustが実現してるやり方が標準的なものになるのは間違いないから
考え方やメリットデメリット、限界をある程度学んでおいた方がいいかもよ
Rust自体はいいところもあれば悪いところも沢山あるので実際に使うかどうかは状況次第
Rustかどうかは別として10年後くらいには
今Rustが実現してるやり方が標準的なものになるのは間違いないから
考え方やメリットデメリット、限界をある程度学んでおいた方がいいかもよ
Rust自体はいいところもあれば悪いところも沢山あるので実際に使うかどうかは状況次第
354デフォルトの名無しさん
2023/03/16(木) 17:04:30.58ID:YeYGULup 結局Rustがもひとつ流行らないのって
①エコシステム
②ライブラリ
なんじゃやいの?
①は流行ってきたら充実するものでニワトリと卵だけど、②はどうなん?
②が中々充実しないのは何かRustのライブラリ書いてやろうと言う人が出てこない理由あるんかな?
①エコシステム
②ライブラリ
なんじゃやいの?
①は流行ってきたら充実するものでニワトリと卵だけど、②はどうなん?
②が中々充実しないのは何かRustのライブラリ書いてやろうと言う人が出てこない理由あるんかな?
355デフォルトの名無しさん
2023/03/16(木) 17:12:09.28ID:3C3pOHVn 採用宣言が大手から出たんだし、そのへんは急ピッチで進むっしょ
>>353
10年後には、いまRustが提示しているものを踏まえた、さらにスマートなものが出ているかもしれない
でも、それを理解するには、ここから10年間、Rustの成果を学び、踏まえるのがいい だから俺はいま学ぶぜ
願わくば、10年後にも、しぶとい感じでC++が現役であってほしいな
>>353
10年後には、いまRustが提示しているものを踏まえた、さらにスマートなものが出ているかもしれない
でも、それを理解するには、ここから10年間、Rustの成果を学び、踏まえるのがいい だから俺はいま学ぶぜ
願わくば、10年後にも、しぶとい感じでC++が現役であってほしいな
356デフォルトの名無しさん
2023/03/16(木) 17:15:50.99ID:QTF1+6wX C++は次々と新たな機能を増やし続けてきたが増築工事だから色んな点で限界が多い
例えば話が出ている広い意味のnull安全はC++がoptionalの導入をとっくに行っているが
・なかなか普及しない
・既存ライブラリの仕様とのチグハグ
・パターンマッチング機能の導入がまだなので使い勝手が悪い
などの問題が山積みであまり使われていない
C++の他の機能導入でも似たような状況が多い
Rustが美しく書きやすく読みやすいのはそれらの多くが最初から解決されているからだと感じる
C++をさっさと棄てるのが現実解であると理解できた
例えば話が出ている広い意味のnull安全はC++がoptionalの導入をとっくに行っているが
・なかなか普及しない
・既存ライブラリの仕様とのチグハグ
・パターンマッチング機能の導入がまだなので使い勝手が悪い
などの問題が山積みであまり使われていない
C++の他の機能導入でも似たような状況が多い
Rustが美しく書きやすく読みやすいのはそれらの多くが最初から解決されているからだと感じる
C++をさっさと棄てるのが現実解であると理解できた
357デフォルトの名無しさん
2023/03/16(木) 17:23:01.97ID:3C3pOHVn C++はなんでも書けるかわりに、いまや考えなしに勝手に組み合わせると めちゃくちゃになるんだよね
Rustには引き算の美学の成果が入ってる
C++も、先頭で縛りを宣言できるようにして、美しく書けるようになるべきだ 絶対に
Rustには引き算の美学の成果が入ってる
C++も、先頭で縛りを宣言できるようにして、美しく書けるようになるべきだ 絶対に
358デフォルトの名無しさん
2023/03/16(木) 17:47:47.57ID:VzH+f4s6 ソースコードのコンパイル・ビルドの時点ですべての問題点をエラーで全部弾いてくれたら理想的だね
大抵はテストツールまで書かないと使えない
大抵はテストツールまで書かないと使えない
359デフォルトの名無しさん
2023/03/16(木) 19:59:01.19ID:srO8KDRm >>350
コンストラクタでlockしてデストラクタでunlockするproxyクラス作って
その一時オブジェクト経由で触れば良いだけなので何を今更という感じ
メモリ安全は別にデバッガですぐ特定できるし
マルチスレッドではRustの利点がない
デッドロックが検出できたらまぁ嬉しいが?
コンストラクタでlockしてデストラクタでunlockするproxyクラス作って
その一時オブジェクト経由で触れば良いだけなので何を今更という感じ
メモリ安全は別にデバッガですぐ特定できるし
マルチスレッドではRustの利点がない
デッドロックが検出できたらまぁ嬉しいが?
360デフォルトの名無しさん
2023/03/16(木) 20:03:11.00ID:u3ZLVO1D クラス笑
361デフォルトの名無しさん
2023/03/16(木) 20:03:55.24ID:srO8KDRm >>354
多くの人に使ってもらおうと思ったらCで書いて
各言語のラッパーを提供するってのが多い
RustにこのCの代わりができれば良いんだけども?
もしRustユーザしかリンクできないライブラリだったら
Rustはそもそもユーザー数が少ないし
Rustで書く動機が減る
多くの人に使ってもらおうと思ったらCで書いて
各言語のラッパーを提供するってのが多い
RustにこのCの代わりができれば良いんだけども?
もしRustユーザしかリンクできないライブラリだったら
Rustはそもそもユーザー数が少ないし
Rustで書く動機が減る
362デフォルトの名無しさん
2023/03/16(木) 20:07:00.05ID:srO8KDRm363デフォルトの名無しさん
2023/03/16(木) 23:56:33.56ID:ufHOK4fg364デフォルトの名無しさん
2023/03/17(金) 00:02:12.50ID:aeVIJ/KU Rustでゲームエンジンやグラフィックソフト作れたら認めてやるよ
365デフォルトの名無しさん
2023/03/17(金) 00:04:03.80ID:aeVIJ/KU DTMに使いそうなDAWソフトとかでもいいぞ
書き方はGitHubにいろんなOSSの見本があるから簡単でしょ?
書き方はGitHubにいろんなOSSの見本があるから簡単でしょ?
366デフォルトの名無しさん
2023/03/17(金) 00:04:27.28ID:aeVIJ/KU Rust使いこなせるくらいなら余裕のはず
367デフォルトの名無しさん
2023/03/17(金) 00:14:30.94ID:o5CBT2m0 SDLのRustバインディングはあるけども
Rustで本体を書いて他の言語のバインディングって出来るの?
他の言語との乖離でRustならではの部分が封じられて
あんまり嬉しくないような気もするのだが?
それともRustでライブラリ書いたらターゲットはRustだけになるのかな?
Rustで本体を書いて他の言語のバインディングって出来るの?
他の言語との乖離でRustならではの部分が封じられて
あんまり嬉しくないような気もするのだが?
それともRustでライブラリ書いたらターゲットはRustだけになるのかな?
368デフォルトの名無しさん
2023/03/17(金) 00:14:49.50ID:6s2Kuhdf369デフォルトの名無しさん
2023/03/17(金) 00:21:48.75ID:6s2Kuhdf これは理解できるし、はっきりそう書けばよい:
・Rustの本を書きました。Rustは良い言語なので本を買ってください。
・Rust用のライブラリを書きました。Rustは良い言語なのでライブラリを買ってください。
これは理解できないし、問題:
・C++は害悪なのでRustをみんなが使って世の中を良くしよう。
・自分がC++を使いこなせないのに、使いこなせる人が許せないから、使いこなせるRustを普及させたい。
・Rustの本を書きました。Rustは良い言語なので本を買ってください。
・Rust用のライブラリを書きました。Rustは良い言語なのでライブラリを買ってください。
これは理解できないし、問題:
・C++は害悪なのでRustをみんなが使って世の中を良くしよう。
・自分がC++を使いこなせないのに、使いこなせる人が許せないから、使いこなせるRustを普及させたい。
370デフォルトの名無しさん
2023/03/17(金) 00:39:18.46ID:2hBAQcCo RustはC++なんかよりずっと簡単! <- これならわかる
371デフォルトの名無しさん
2023/03/17(金) 00:51:57.03ID:6s2Kuhdf >>370
それも意見が分かれそうだ。
それも意見が分かれそうだ。
372デフォルトの名無しさん
2023/03/17(金) 00:54:59.09ID:UJajhYy7 >>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用ライブラリ)
みたいな構造
出力を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デフォルトの名無しさん
2023/03/17(金) 01:04:51.03ID:o5CBT2m0 >>372
なるほどー
なるほどー
374デフォルトの名無しさん
2023/03/17(金) 05:58:07.48ID:HbMAHHRq >>359
Rustならマルチスレッドでもマルチタスク(=グリーンスレッド)でも書きやすく
さらにデータ競合を完全に防げるRustしか現状の言語では選択肢ないと思うよ
各言語で書き比べてみれば一目瞭然
そのため並行並列を使うプログラムはC++→RustだけでなくJava→Rustの移行も進んでる
Rustならマルチスレッドでもマルチタスク(=グリーンスレッド)でも書きやすく
さらにデータ競合を完全に防げるRustしか現状の言語では選択肢ないと思うよ
各言語で書き比べてみれば一目瞭然
そのため並行並列を使うプログラムはC++→RustだけでなくJava→Rustの移行も進んでる
375デフォルトの名無しさん
2023/03/17(金) 10:42:47.45ID:o5CBT2m0376デフォルトの名無しさん
2023/03/17(金) 10:55:37.94ID:FKqwIQQI マルチスレッドはまあ普通だけどマルチタスクはめちゃくちゃ書きにくいぞ
単純なWeb Serverくらいならいいがちょっと凝った処理を書こうとするとくっそ面倒くさい
tokio依存なのもダメなところ
単純なWeb Serverくらいならいいがちょっと凝った処理を書こうとするとくっそ面倒くさい
tokio依存なのもダメなところ
377デフォルトの名無しさん
2023/03/17(金) 11:06:44.98ID:tBmmskox そここそ、OSがRust化するっていうんだから、きれいなAPIが出てきてほしいね
結局、効率を求めたらC API に肉薄することになるし
結局、効率を求めたらC API に肉薄することになるし
378デフォルトの名無しさん
2023/03/17(金) 11:15:24.56ID:TZnQdWAf Linuxの現状はRustでドライバが書けるようになったってだけだよ
誤解なきよう
誤解なきよう
379デフォルトの名無しさん
2023/03/17(金) 11:17:48.64ID:RPqYd1dp >>376
マルチタスク(並行)で綺麗に書ける言語はRustとGoだけだな
GoはPromise(Future)使わないあのスタイルに寄せられるのとGC言語であるため
Rustが汎用では筆頭言語になる
マルチタスク(並行)で綺麗に書ける言語はRustとGoだけだな
GoはPromise(Future)使わないあのスタイルに寄せられるのとGC言語であるため
Rustが汎用では筆頭言語になる
380デフォルトの名無しさん
2023/03/17(金) 11:33:47.61ID:Igk62yzo381デフォルトの名無しさん
2023/03/17(金) 11:43:37.53ID:RPqYd1dp >>380
自分でpollしたりするのも含めて色んなレベルで書いているが簡単だぞ
Rustで並行並列が難しいと言うならばとこが難しいのかを具体的に述べよ
そしてそのケースでRustの代わりに使える別言語があるならば述べよ
自分でpollしたりするのも含めて色んなレベルで書いているが簡単だぞ
Rustで並行並列が難しいと言うならばとこが難しいのかを具体的に述べよ
そしてそのケースでRustの代わりに使える別言語があるならば述べよ
382デフォルトの名無しさん
2023/03/17(金) 11:51:53.17ID:UWSndCzi Goと比較したら性能面でも劣ることが多くて同程度の性能を実現したければ手動であれこれやらないといけないからな
383デフォルトの名無しさん
2023/03/17(金) 12:19:57.65ID:CZQwnfV3 >>381
そうやって自分が分かってない事を無料で聞き出してしまおうとする。ずる賢い。
そうやって自分が分かってない事を無料で聞き出してしまおうとする。ずる賢い。
384デフォルトの名無しさん
2023/03/17(金) 12:31:22.55ID:RPqYd1dp385デフォルトの名無しさん
2023/03/17(金) 12:38:18.49ID:YQ2F/Sw2 追い込まれてるってなんだろうね
楽しそうだね
楽しそうだね
386デフォルトの名無しさん
2023/03/17(金) 12:39:30.67ID:o5CBT2m0 この人は妄想癖がある
387デフォルトの名無しさん
2023/03/17(金) 12:56:40.90ID:LTrpjv8n >>384
>Rustで並行並列が他の言語より難しいことはない
>難しいと主張するならば何が難しいのかを述べたまえ
>もし本当に具体的に困ったことがあるならばアドバイスできる
問題意識があること、気付くこと、それが大事。
あなたにはそれがない。
>Rustで並行並列が他の言語より難しいことはない
>難しいと主張するならば何が難しいのかを述べたまえ
>もし本当に具体的に困ったことがあるならばアドバイスできる
問題意識があること、気付くこと、それが大事。
あなたにはそれがない。
388デフォルトの名無しさん
2023/03/17(金) 13:03:24.97ID:Gi38nai6389デフォルトの名無しさん
2023/03/17(金) 13:03:47.55ID:T8dNhcTz Goはgoroutine間のデータ競合の発見を実行時のランタイムでやるしかなく
Goはあまりお勧めできないなあ
メモリ共有せずチャネルを使う範囲ならGoでもいいけど
Rustでもチャネルはもちろん使えるし
共有メモリで安全にデータ競合を起こさず使えるからRustがいいよ
Goはあまりお勧めできないなあ
メモリ共有せずチャネルを使う範囲ならGoでもいいけど
Rustでもチャネルはもちろん使えるし
共有メモリで安全にデータ競合を起こさず使えるからRustがいいよ
390デフォルトの名無しさん
2023/03/17(金) 14:28:10.79ID:ZRpBqjDt ほんと嘘ばっかりだな
391デフォルトの名無しさん
2023/03/17(金) 15:04:18.42ID:RPqYd1dp392デフォルトの名無しさん
2023/03/17(金) 15:55:42.60ID:LTrpjv8n393デフォルトの名無しさん
2023/03/17(金) 16:03:41.59ID:tBmmskox そこが、新規書き起こしのRustのメリットでもあるわけよな
394デフォルトの名無しさん
2023/03/17(金) 16:05:57.04ID:LTrpjv8n >>393
そして、独自のアルゴリズムは使えないので、アルゴリズムの研究には向かない。
そして、独自のアルゴリズムは使えないので、アルゴリズムの研究には向かない。
395デフォルトの名無しさん
2023/03/17(金) 16:11:31.46ID:TZnQdWAf 第n次LinkedListおじさんvsGCおじさん戦争
396デフォルトの名無しさん
2023/03/17(金) 16:16:19.10ID:tBmmskox 頑張ったら書けるんじゃねーの、それもsafeで
そのへんはC++もおなじ 自分も、ニッチすぎる薄いラッパなら頑張って書くし
そのへんはC++もおなじ 自分も、ニッチすぎる薄いラッパなら頑張って書くし
397デフォルトの名無しさん
2023/03/17(金) 16:20:04.75ID:KZujdKGk398デフォルトの名無しさん
2023/03/17(金) 16:32:10.93ID:LTrpjv8n >>397
嘘を書かないで。
嘘を書かないで。
399デフォルトの名無しさん
2023/03/17(金) 16:41:56.97ID:T8dNhcTz Rustで書けないのがあると主張している人が例を出せばいいんじゃね
Rustにそんな制限はないからすべて書けるよたぶん
Rustにそんな制限はないからすべて書けるよたぶん
400デフォルトの名無しさん
2023/03/17(金) 16:52:07.05ID:4tGjgBNl 結局何年か後にはlinux kernelを全部rustで書くつもりなんかな
401デフォルトの名無しさん
2023/03/17(金) 17:00:34.34ID:tBmmskox 書けなくはないだろ、書きやすいかどうかだ 実際どうなん
C++は、なんでも書けるが、油断すると複雑すぎる代物ができあがる
そんで、「でも例外がくるとー」「でも異常値がくるとー」って
C++は、なんでも書けるが、油断すると複雑すぎる代物ができあがる
そんで、「でも例外がくるとー」「でも異常値がくるとー」って
402デフォルトの名無しさん
2023/03/17(金) 17:01:41.44ID:LTrpjv8n403デフォルトの名無しさん
2023/03/17(金) 17:26:21.78ID:T8dNhcTz404デフォルトの名無しさん
2023/03/17(金) 17:31:51.55ID:LTrpjv8n >>403
unsafeになる。
unsafeになる。
405デフォルトの名無しさん
2023/03/17(金) 17:42:50.37ID:T8dNhcTz406デフォルトの名無しさん
2023/03/17(金) 17:43:39.56ID:tBmmskox unsafeをゼロにするよりも、極小なunsafeブロックを組み込んで華麗にキメてほしいね
これはC++も同様
これはC++も同様
407デフォルトの名無しさん
2023/03/17(金) 17:52:35.17ID:2s/kFNH6 >>400
そういう枯れた古いものをわざわざ書き直すことに熱意を燃やせる人間は少ない
新世代のデータベースやcrypt/blockchainのように金になる新しい成長分野ではc/c++よりもrustがよく使われてる
技術の自然な世代交代は既存システムの置き換えから始まるものではない
そういう枯れた古いものをわざわざ書き直すことに熱意を燃やせる人間は少ない
新世代のデータベースやcrypt/blockchainのように金になる新しい成長分野ではc/c++よりもrustがよく使われてる
技術の自然な世代交代は既存システムの置き換えから始まるものではない
408デフォルトの名無しさん
2023/03/17(金) 18:01:30.86ID:LTrpjv8n409デフォルトの名無しさん
2023/03/17(金) 18:03:48.04ID:u99ocdLb 複製おじさん vs 100点おじさん
Fight!
Fight!
410デフォルトの名無しさん
2023/03/17(金) 18:24:08.50ID:NC4w42Nt411デフォルトの名無しさん
2023/03/17(金) 18:36:02.65ID:LTrpjv8n >>410
俺は天才だから、お前みたいな凡人に無料でヒントをくれてやらない。
俺は天才だから、お前みたいな凡人に無料でヒントをくれてやらない。
412デフォルトの名無しさん
2023/03/17(金) 19:13:16.48ID:tBmmskox Rustって、削ぎ落したものは復活させません、って宣言とかしてるん?
413デフォルトの名無しさん
2023/03/17(金) 19:55:25.86ID:9o1NNcpX >>408
Rustをあんまり知らんけど言語間に根本的な差はなくね?
Rustをあんまり知らんけど言語間に根本的な差はなくね?
414デフォルトの名無しさん
2023/03/17(金) 20:02:50.35ID:kImSYq8C415デフォルトの名無しさん
2023/03/17(金) 20:19:10.88ID:TZnQdWAf416デフォルトの名無しさん
2023/03/17(金) 20:29:34.70ID:Zxg/DnHC >>413
ん?だから何?
ん?だから何?
417デフォルトの名無しさん
2023/03/17(金) 21:29:42.97ID:o5CBT2m0 >>416
アルゴリズムを書ける書けないの差はでない
アルゴリズムを書ける書けないの差はでない
418デフォルトの名無しさん
2023/03/17(金) 23:44:57.66ID:Lcw0Ean/ Rustほとんど知らん俺でも総合的にRustのほうがC++よりはいいだろと思う
C++より後発言語で、で、ライバルになるC++に劣っているようじゃダメだからな
で、お前らは、すごいRustで具体的に何を作っているんだ?
C++より後発言語で、で、ライバルになるC++に劣っているようじゃダメだからな
で、お前らは、すごいRustで具体的に何を作っているんだ?
419デフォルトの名無しさん
2023/03/18(土) 00:11:15.51ID:6kQD14Ek 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};
};
>>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デフォルトの名無しさん
2023/03/18(土) 00:31:48.86ID:jelBOeFa 先生にからかわれとるぞw
421デフォルトの名無しさん
2023/03/18(土) 00:53:02.93ID:rMRLIFsD422デフォルトの名無しさん
2023/03/18(土) 00:58:57.68ID:6kQD14Ek >>421
いやChatGPTは信用しない方が良い
俺はRustは良く分からんがChatGPT曰く
>Rustには、このようなロックフリーなデータ構造を提供する
>クレート(ライブラリ)が存在します。その一つがcrossbeamです。
>このクレートは、スレッドセーフで効率的なデータ構造を提供しており、
>crossbeam内でUnsafeな操作が行われているにもかかわらず、
>APIを通じて安全に使用できます。
だそうな
crossbeamってRustで書かれとらんのかな?
いやChatGPTは信用しない方が良い
俺はRustは良く分からんがChatGPT曰く
>Rustには、このようなロックフリーなデータ構造を提供する
>クレート(ライブラリ)が存在します。その一つがcrossbeamです。
>このクレートは、スレッドセーフで効率的なデータ構造を提供しており、
>crossbeam内でUnsafeな操作が行われているにもかかわらず、
>APIを通じて安全に使用できます。
だそうな
crossbeamってRustで書かれとらんのかな?
423デフォルトの名無しさん
2023/03/18(土) 01:14:24.86ID:pMxUNH+f424デフォルトの名無しさん
2023/03/18(土) 01:17:39.13ID:6kQD14Ek unsafeってキーワード使えばチェックをオフにできるのね
425デフォルトの名無しさん
2023/03/18(土) 01:29:02.55ID:6kQD14Ek >>420
Rustで書いてみよう!
Rustで書いてみよう!
426デフォルトの名無しさん
2023/03/18(土) 04:35:18.48ID:+IGrKU6n ArcとAtomicでほぼそのまま書けるけど
pointer dereferenceのためにunsafeは必須
pointer dereferenceのためにunsafeは必須
427デフォルトの名無しさん
2023/03/18(土) 10:03:55.24ID:fNuha5Rk 言語マウントごっこにしか使われてないrust
428デフォルトの名無しさん
2023/03/18(土) 10:25:46.77ID:fSPMk7mF no chance
429デフォルトの名無しさん
2023/03/18(土) 11:41:47.24ID:ux4diyjf 平日の昼にID真っ赤なのは仕事か
板違いのスレで必死に毎日お疲れさん
板違いのスレで必死に毎日お疲れさん
430デフォルトの名無しさん
2023/03/18(土) 14:02:46.54ID:d2/CRNVk ちょうどオライリーから「Rust Atomics and Locks」という本が出てるよ
基本的な内容を説明してる本なのでC++でatomicsやmemory orderingに慣れ親しんでる人がわざわざ買うほどのものではないかもしれないけど
かなりわかりやすくまとまってるのでRustでこの辺りの機能を使ったコードを良く書く人は読んで置いて損はないと思う
基本的な内容を説明してる本なのでC++でatomicsやmemory orderingに慣れ親しんでる人がわざわざ買うほどのものではないかもしれないけど
かなりわかりやすくまとまってるのでRustでこの辺りの機能を使ったコードを良く書く人は読んで置いて損はないと思う
431デフォルトの名無しさん
2023/03/18(土) 16:09:57.63ID:fSPMk7mF432デフォルトの名無しさん
2023/03/18(土) 18:42:10.12ID:kFUsfJhu Lock-Freeなデータ構造を自分で作りたい人はこれを見るといい
Porting Java's ConcurrentHashMap to Rust (part 1)
https://www.youtube.com/watch?v=yQFWmGaFBjk
Porting Java's ConcurrentHashMap to Rust (part 1)
https://www.youtube.com/watch?v=yQFWmGaFBjk
433デフォルトの名無しさん
2023/03/19(日) 12:22:41.89ID:LfQxDddq > cargo new hoge
> cargo run
→ 3MB
main.rs に
use clap::Parser;
追加すると
> cargo run
→ 100MB 超えるんだが
どうすれば容量減らせるん?
> cargo run
→ 3MB
main.rs に
use clap::Parser;
追加すると
> cargo run
→ 100MB 超えるんだが
どうすれば容量減らせるん?
434デフォルトの名無しさん
2023/03/19(日) 12:44:51.20ID:TIfaDrwo とりあえず--releaseつける
435デフォルトの名無しさん
2023/03/19(日) 13:32:03.94ID:fPDrKYk/ しらんけど
https://igaguri.はてなぶろぐ.com/entry/2020/06/07/133847
https://crates.io/crates/cargo-clean-recursive
https://igaguri.はてなぶろぐ.com/entry/2020/06/07/133847
https://crates.io/crates/cargo-clean-recursive
436デフォルトの名無しさん
2023/03/19(日) 13:35:18.59ID:fPDrKYk/ とりあえずは
cargo clean
で良いはず
最初から余計なのは造りたくないって言う話ならほんまにしらん
cargo clean
で良いはず
最初から余計なのは造りたくないって言う話ならほんまにしらん
437デフォルトの名無しさん
2023/03/19(日) 14:03:33.37ID:4KWNgnTF >>436
ありがとうございました
ありがとうございました
438デフォルトの名無しさん
2023/03/20(月) 08:59:55.73ID:8VwEKWf+ やっぱC++にもボローチェッカ欲しい
なんならCにも欲しい
attributeとか併用したら、やってできないことはないんじゃねーの
なんならCにも欲しい
attributeとか併用したら、やってできないことはないんじゃねーの
439デフォルトの名無しさん
2023/03/21(火) 17:20:17.93ID:icU0z8mb440デフォルトの名無しさん
2023/03/21(火) 17:50:34.39ID:5MGYYNx+ rustの読み物公式が面白いのしっかり出してるから
それ読むだけでも大分良い
後発言語らしくイイトコどりしまくってる
null無くした代わりになんでもかんでもラップしてるから若干だるいけど
すげー面白い
それ読むだけでも大分良い
後発言語らしくイイトコどりしまくってる
null無くした代わりになんでもかんでもラップしてるから若干だるいけど
すげー面白い
■ このスレッドは過去ログ倉庫に格納されています
