結局C++とRustってどっちが良いの? 2traits

■ このスレッドは過去ログ倉庫に格納されています
2023/04/02(日) 00:42:57.53ID:W9/nq+tL
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていうスレ。

前スレ: 結局C++とRustってどっちが良いの?
https://mevius.5ch.net/test/read.cgi/tech/1677286186/
405デフォルトの名無しさん
垢版 |
2023/04/22(土) 22:41:58.79ID:DWNDga3I
>>383
>マルチスレッドの主な用途は数値計算なんだけど
へぇーw
406デフォルトの名無しさん
垢版 |
2023/04/22(土) 22:42:49.07ID:Bx6uBAXU
「数学的」な人だったかww
2023/04/22(土) 22:42:53.24ID:/en2DlgL
rustcがソースコードを採点してくれるのに
なぜ採点結果ではなく書いた文字の量を競っているんだ
2023/04/23(日) 00:09:49.30ID:XReMgABv
>>399
>文字列全体(String)とその一部の参照(&str)を同じ構造体に詰めないとか
JavaやC#でそういうことする??
2023/04/23(日) 00:35:50.04ID:s119dOFU
>>408
例えばURL全体を受け取ってパースした結果の部分文字列を保持する場合とか

JavaとC#は全部Stringにするから関係ないけどRustで同じことをしようとしたときに
本体のStringと一緒に部分文字列の&strを持ちたいと考えるかもしれない

あと?を2つ重ねるとなんか頭悪そうに感じるからやめたほうが…
2023/04/23(日) 00:46:01.33ID:XReMgABv
>>409
完全にダメな設計だね
??は皮肉だから
411デフォルトの名無しさん
垢版 |
2023/04/23(日) 00:52:26.01ID:hjyESha+
オブジェクト指向全く関係ないな
2023/04/23(日) 03:53:33.10ID:a38AwUhr
>>397
データ競合は実行タイミングや入力データなどによって発生したりしなかったりすることもある
だから実行してみて不具合が無ければ大丈夫というものではない

>>400
そういうお子様プログラミングしかしたことがないやつに複雑な状況でのコードは理解できないだろう
2023/04/23(日) 08:58:13.51ID:XDoVkNXv
>>380
>ただしRust以外の言語はデータ競合があっても検出できずに競合を起こしたまま動いてしまいバグとなる

Rustで実行時にデッドロックを回避する方法を教えてくれ
2023/04/23(日) 09:05:15.73ID:mbhtlP00
デッドロックはデータ競合ではなく無関係
デッドロックはロック順序を守ることで防ぐ
2023/04/23(日) 09:57:26.70ID:yqsq+eY1
rustコンパイラじゃ防げない
2023/04/23(日) 10:01:44.66ID:bH2G2Xj3
Rust初心者だけど、シングルスレッドでしか動かさない場合にも、
マルチスレッドで起きるデータ競合を気にしてるってことよね
それはめんどくさくない?
2023/04/23(日) 10:07:31.97ID:yqsq+eY1
気にしてるのはコンパイラ
418デフォルトの名無しさん
垢版 |
2023/04/23(日) 10:21:19.31ID:mWycOQ2H
>>416
シングルスレッドでも起こる
データ競合が防げるというのはメモリ安全性の副産物
2023/04/23(日) 10:47:08.19ID:SLeXOLnV
ライブラリがマルチスレッドかもしれんだろ、そういうとこ油断しちゃだめだw
2023/04/23(日) 10:59:51.10ID:yqsq+eY1
>>418
>データ競合が防げるというのはメモリ安全性の副産物
関係ないのでは?
2023/04/23(日) 11:05:41.04ID:5RizofHX
>>391-392
Qi痛のネタ程度の話を論文って言っちゃう人って

>>396
それだ!
2023/04/23(日) 11:26:29.64ID:L76w/S48
フリーソフトで遊んでる場合にも、お金に関する問題を気にしてる奴が一番めんどくさいぞ
2023/04/23(日) 11:41:38.27ID:SLeXOLnV
各社だいたい優秀なんだろうけど、飲酒コーディングするような香具師も混じってるってことだよ
デバフだデバフw
2023/04/23(日) 11:45:11.86ID:s119dOFU
参照のread-writeロックもどきは↓みたいなコードを防いでる

fn main() {
let mut a = vec![42];
let r = &a[0];
println!("{r}"); // 42
a.clear();
println!("{r}"); // もういないよ
}
2023/04/23(日) 13:20:52.91ID:L76w/S48
a[0]をコピーまたはcloneできる場合にも&a[0]を使うのはめんどくさい
Tをコピーまたはcloneできる場合にもRefCell<T>を使うのはめんどくさい
2023/04/23(日) 13:21:04.29ID:XDoVkNXv
>>409-410
Rust の hoge()? って頭悪そうだよな
2023/04/23(日) 13:43:48.93ID:s119dOFU
C#は
int? hoge = null;
int fuga = hoge ?? -1;
まで進歩してるからhoge()?くらいなら余裕
2023/04/23(日) 18:41:22.14ID:y593Lq73
C/C++ で安全なコードを描ける人からすれば Rust なんてホント苦行でしかない
全然生産性上がらないぞω
2023/04/23(日) 19:13:33.85ID:1wjDCw27
>>428
逆だな
C++で安全なコードを書ける人にとってRustは楽勝
430デフォルトの名無しさん
垢版 |
2023/04/23(日) 20:15:54.20ID:njNVQguc
C/C++で安全なコードを描けると思ってるやつはもはやレガシープログラマー
2023/04/23(日) 20:20:12.47ID:Rh211EN3
つまり結局のところRustは苦しいと
そう思わないやつはC++で安全なコードを書けると思い込んでいる人であると
それか大したプログラムを書いたことがないか
2023/04/23(日) 20:38:12.61ID:SLeXOLnV
酷い目に遭ったことがないんだろう
慣れるまでに、自分が踏み抜いたり、他人が踏み抜いたとばっちりを食ったりするんだけどね

ごりごり汗が書けるやつは、たしかにレガシ コーダだな
ちゃんと書けるなら、レガシにしてレジェンド
2023/04/23(日) 20:42:24.61ID:L76w/S48
Cは複雑なGUIを作らず、スクリプトのインタプリタを作るから結構安全だ
外見重視でインタプリタ言語嫌いなOOPが危ない
2023/04/23(日) 22:43:02.30ID:9nArI2JN
>>425
コピーできる型でコピーが望ましいならそうすればいいだけだぞ
シーケンシャルにポインタを進めていく方が望ましい時はコピー可能か否かに関係なく参照のイテレータを使えばいい
コピーできる型で内部可変性が欲しいならばRefCellではなくCellを使え
2023/04/23(日) 22:48:39.88ID:9nArI2JN
>>428
コンパイル時点でメモリ問題やデータ競合の無いことが保証されるRustはもちろん開発効率がよい
時間と手間の大きな節約になる
2023/04/23(日) 23:07:42.53ID:yqsq+eY1
「C/C++ で安全なコードを描ける」=「メモリ問題やデータ競合の無」く書ける
なのでは?
経験を積むと書けるようになるよ
2023/04/23(日) 23:31:52.59ID:/tirlZFd
>>436
その根拠のない自信とミスが多くのバグとセキュリティホールを生んできた
一方で経験を積んだ者ならばC++でもRustでもどちらのコードも書けることも事実その通りだ
ならば客観的に各種問題のないことが保証されているRustのコードの方が選ばれる
2023/04/23(日) 23:38:05.13ID:s119dOFU
経験を積むと安全なコードを書けると言ってる人は過去に書かれたコードのメンテとかも経験してるんだろうか
当然前後のコードを全て確認したうえで安全なコードを書いてきたんだろうけど
確認作業の範囲を少しでも減らしたいとか考えたことないのかな
2023/04/23(日) 23:54:04.28ID:FpD4OybJ
俺がRustへ移った理由もそれ
開発でも保守や更新でも言語システムが自動的に確認作業をやってくれる
こちらはビジネスロジックのテストだけに専念できて非常に効率がいい
2023/04/23(日) 23:55:54.84ID:yqsq+eY1
>>437
根拠は自分の経験だよ
お前のことは知らんよ
2023/04/23(日) 23:56:47.54ID:yqsq+eY1
>>438,439
他人のコードについての見解は一理あると思う
2023/04/23(日) 23:57:54.34ID:yqsq+eY1
翻って>>382だな
2023/04/24(月) 00:16:29.06ID:TbIWWoB3
経験深いC++プログラマーにとって、Rustは難しいものでもなく特にウザいものでもないよなあ。
部分的に各片方が書きやすい面もあるが、フィフティフィフティでどちらにも分はある。
結局Rustコンパイラが色々と保証してくれる信頼性と効率性だけが決定的な差異で、Rustへ進む流れだろな。
2023/04/24(月) 00:17:39.52ID:5FvgLQUn
完璧なC++のコードを書けるやつならまぁそうすればいいけど、同僚も完璧に書けるかな?って話だよな
同僚も完璧なのが書ける? でも同僚もお前のことを「完璧に書ける奴」と認識してるとは限らない

そんで慢心の発生は自分自身を完璧と信じてるかと関係なく起こるわけで
2023/04/24(月) 00:25:06.29ID:6UK4+7Cd
普通にGC付きの言語を使えばそんなウジウジしなくていいのに
システムプログラマ以外にはrustもC++も縁遠い
2023/04/24(月) 00:29:33.47ID:6UK4+7Cd
速度を抜きにしてc++の利点は生ポインタを使って直感的にコードを書けたりするところにもあったと思う
それが今は捨てられたのでまあ他の言語でもいいじゃんと思う
2023/04/24(月) 00:40:24.53ID:/2/+f4dj
>>445
従来の非GC言語と比べて
Rustは以下の点でGC言語に近くなっていて書きやすいわー
・メモリや競合など色んなことをRustは安全だと保証してくれる
・メモリ解放も常に何もしなくてよくてRustは完全に自動でやってくれる
・各GC言語のモダンな機能がRustも取り入れていて便利に使える
という感じ
対象言語やコードによっては数倍Rustが速くて
エコでリソースコストも少なくて金銭的コストも数分の1になるのが魅力的
2023/04/24(月) 00:40:47.69ID:47nwKPG1
C++にあってRustにない特徴はCを包含していること
Rust派は欠点と考えているだろうが
この特徴がなければ普及しなかっただろうね
ハゲの慧眼だよ
2023/04/24(月) 01:05:01.61ID:GFnVwc83
>>445
そのへんC++はGC言語と比べて余分なコードレビューコストやメモリ関連のデバッグコストなどもかかっていたけど
Rustはコンパイラがやってくれるから困っていない
2023/04/24(月) 04:53:42.06ID:7IjMEuJY
個人的には、Rustは、メモリ安全であると言う以外に魅力は無いと思ってる。
しかも、Java、C#、JS、Ruby、PHP、Perl、Python、Kotlin、Go
は全てメモリー安全。
2023/04/24(月) 04:56:59.60ID:7IjMEuJY
それに、C++やCでずっとプログラミングしているが、メモリー関連バグが
生じる頻度は非常に低い。大部分はロジックのバグで、少しずつテストを
するのでその段階で取れることが多い。
メモリー関連バグが起きる場合でも、VisualStudioでは容易に原因箇所が
発見できることが多い。
特にC++では、デストラクタの中に ポインタ型のメンバ変数の delete 文を
書いておけば、メモリー関連バグはまず起きない。
その意味では、C++は、それで賄えない特殊な場合を除いては、メモリー解放が
自動化されていると言える。
2023/04/24(月) 05:04:26.63ID:7IjMEuJY
メモリー関連バグは、VisualStudioではコンパイル段階での静的な発見は一般的
には出来ないが、動的には、デバッガを使うことでかなり高い確率でメモリー
関連バグの原因箇所が分かる様になっている。
昔、C言語を使っていて、メモリー関連バグで困るのは、全く原因が分からないような
ことがありえることであったが、C++では、classのデストラクタの中にdelete文を
閉じ込めることによって、メモリー解放が自動化される。
だから、メモリー関連バグが起きるのは、それでまかなえない場合に限る。
同じ関数の上の方とnew文と下の方でdelete文を単純に対応させて書けば
「どう見ても安全」のような書き方ができる。
また、それで書けない場合でも、delete文を、EndXxx()のような「終了関数」
の中だけに書く様にすれば、滅多なことでメモリー関連バグは入らない。

これでも原因不明なメモリー関連バグが起きた場合でも、VisualStudioの
場合はあの手この手で、メモリー関連バグの原因を動的検査で特定し易くなっている。
2023/04/24(月) 05:06:00.35ID:7IjMEuJY
CやC++でメモリー関連バグに悩まされている人は、gccなどのフリーのコンパイラ
を使っている人ではないかと思う。
Visual StudioのIDEとデバッガを使えば、メモリー関連バグで悩むことは滅多に
なくなる。
それと、C++の場合は、正しい流儀で書けば、そもそもメモリー関連バグが
入り込む可能性が劇的に減る。
2023/04/24(月) 05:12:08.93ID:7IjMEuJY
gccとVisual Studioのメモリー安全性に関する違いは、ヒープメモリに対しての
さまざまな工夫に有る。プログラマが明示的に初期化して無い部分には 0xcccccccc
のようなデータで初期化するコードをコンパイラが書きこむ。
それに、ヒープメモリーのリンクチェーンにも何らかの工夫がされている。
「デバッグビルド」では、そういった構造を、適切なタイミングでチェックする
コードが自動的に付加されるので、「おかしなことをやった直後に近いタイミングで」
IDEが「異常」を報告してくれる。
また、MFCの場合は、さまざまな場所にASSERT() 文で検査コードを入れてあるので、
メモリー関連バグも気付き易い。なんらかの異常は、早い段階で発覚するので、
原因がどこにあるかが特定し易くなっている。
このおかげで、多くの場合は、異常が発見された直前の処理を疑えばよくなっている。
2023/04/24(月) 05:45:34.11ID:7IjMEuJY
SNSで、「オブジェクト指向は意味が無く、むしろ駄目」というような話題が
出ることがあるが、C++のclassのデストラクタは、メモリー安全性に大きく
寄与しており、Cよりもメモリー安全になっている。
逆にclassがなければ、メモリー管理にバグが入りやすかったことであろう。
それだけでも、「オブジェクト指向」の意味がある。
456デフォルトの名無しさん
垢版 |
2023/04/24(月) 07:52:58.48ID:HpPlDS3N
気をつければ大丈夫というのはプログラマーの考え方ではない
少なくとも向いてない
2023/04/24(月) 08:08:18.28ID:y0BYTv6v
c++erにとってRustはウザいけど、他人にライフタイム管理を強制できるというメリットが大きい。
基本的にRustは他人にやらせるための言語。
2023/04/24(月) 08:23:30.04ID:5e4ZDdTw
ツールやコンパイラがいろいろやってくれる優位性を語っておいて
Rustの利点に目をむけないって意味わからんなあ
2023/04/24(月) 08:50:49.89ID:r05pWbWI
セキュアコーディングについて、誰かがキメてくれるというのがデカい
Rustはそれをやったんだ

欲しいのはunsafeのやり方であって、それができるんならC++でもいいんだよ
そうと決まれば、処理系も実装者もどんどん追従する

だから、採用すると言い切ったんだから、APIもとっととRust化してほしい
そうしたら速攻で、unsafeがC++にも来る
460デフォルトの名無しさん
垢版 |
2023/04/24(月) 09:49:02.72ID:47nwKPG1
>>459
>セキュアコーディングについて、誰かがキメてくれるというのがデカい
>Rustはそれをやったんだ
まぁある方がマシだけどもrustcが検出してくれるのは一部で
>>451に指摘されてるように頻度が少ないので有用性は俺も疑問に思ってる
(率直に言ってあんまり嬉しくない)
2023/04/24(月) 10:03:11.22ID:Tyw8xG0A
Rustを難しいとかウザいとか言ってる人は単にまだ慣れていなかったり知識が足りていないだけだ
C++できちんとコーディングできていた人にとってRustは難しくなく慣れと知識を獲得した後はC++よりも全体効率がアップする
したがってRustを難しいとかウザいとか言ってる人の発言は全て無視してよい
2023/04/24(月) 10:18:34.43ID:47nwKPG1
>>461
覚えるの面倒くさいねん
将来性もまだちょっと...
だけど面白いので取り入れられるところはC++に取り入れてるよ
Arcパクらせて頂いた
2023/04/24(月) 10:33:40.77ID:r05pWbWI
>>1 のとおり、職務とかでやれといわれたらやるんだけど、
Rust勢がいうとおり、デファクトスタンダードになりそうなら、C++にもほぼ間違いなく「来る」だろうしねえ
それなら、安全になったC++でいいや、Rustに限らず、新言語とかたりぃな、とかは思う
新言語覚えるかわりに、安全になったC++勉強しなきゃだし、と言ってもいい
2023/04/24(月) 10:39:05.54ID:6eJhjjay
C++とRustの比較は簡単

両方使いこなせるプログラマーはどちらを選んでいるか?
・多くのことをコンパイラに任せられて開発保守効率の良いRust
・その逆でそれらの開発保守効率に劣るC++

企業はどちらを選んでいくか?
・客観的に各種の安全性が保証されるRustで書かれたコード
・その逆で各プログラマーの腕により保証されるC++で書かれたコード

プログラマーと企業どちらの視点に立っても
RustもC++も選べる環境状況にあるならば
新規のプロジェクト(案件)でC++を採用する動機は完全に無くなった
465デフォルトの名無しさん
垢版 |
2023/04/24(月) 10:47:20.17ID:47nwKPG1
>>464
企業の視点に立つとRustはプログラマが確保できんだろw
466デフォルトの名無しさん
垢版 |
2023/04/24(月) 10:56:55.08ID:ffYEYeml
dropboxは2,3年前にRust一部導入でオジにもてはやされたけど、直近はGoなんだよね
https://dropbox.tech/frontend/edison-webserver-a-faster-more-powerful-dropbox-on-the-web
2023/04/24(月) 11:02:11.39ID:STeINRL5
急速に解決していってるからあとわずかな時間の問題かな
C++しかできない人が既存C++コード保守に群がる構図になっていくんだろうね
2023/04/24(月) 11:19:03.31ID:r05pWbWI
あと、C++一本でだいたいなんでも回してる俺のようなアマ
(安全になってくれたら)C++でいいやもう的な
2023/04/24(月) 11:28:23.43ID:FCtgfage
>>466
Dropboxの中核部分の分散同期ファイルシステムがRustで書かれていて
表層部分は別部門でTypeScriptとGoを使っている話だろ
GoはC/C++/Rustの代替になれない
470デフォルトの名無しさん
垢版 |
2023/04/24(月) 11:32:07.93ID:aN7Wz4JN
VSでメモリ安全性に関わるバグを見つけるのが簡単なら
毎月毎月クリティカルなパッチが出る訳がないわな

MSスタックで満足してるうちは井の中の蛙なんだよね
初級者でもビジュアルに分かりやすくデバッグできるように作ってるのがVSなんだから
2023/04/24(月) 11:35:12.19ID:47nwKPG1
>>469
Dropboxの分散同期ファイルシステムってGoで書けないの? 何で?
カーネルモードで動かしてる?
472デフォルトの名無しさん
垢版 |
2023/04/24(月) 11:38:34.52ID:6AbaMjz7
流行り廃りの激しい表層部分がUXの中核だからな

2,3年前のRust分散同期ファイルシステム
→若気の至り、もう弄らない、保守だけ

これから10年
>How Dropbox re-wrote its core web serving stack for the next decade
→Rustは不採用、Goで決定
2023/04/24(月) 12:02:37.33ID:r/rb76Fw
>>472
その表層部分はPythonで書かれていたものをGo+TypeScriptに移行しただけでRustはもともと関係ない
サービスを支えている基盤部分がRust製に移行した
2023/04/24(月) 12:10:50.29ID:BH9ZYQVS
GoのWebフレームワークのコミュニティは標準ライブラリでかけ勢がおおくて、こいつらについて行くの不安になったからRust勉強する
Rustは頑張ってフレームワーク作る気がありそう
無能に優しくしない言語は伸びないよ
475デフォルトの名無しさん
垢版 |
2023/04/24(月) 12:14:12.33ID:EfxyAoTl
Rust信者の期待に反して、現実はこんな感じでしょう

2,3年前、インフラのごく一部でRustでも問題ない適用事例があった→今は技術的負債
当然、他の分野(webで言えばfront/back両方)ではRustは不採用
wasmとか勘違いしてごめんなさい
Pythonの置き換えはRustには無理
2023/04/24(月) 12:26:21.82ID:e/3EEseX
C++とRustの比較スレで
新インフラ(分散同期ファイルシステ厶)構築にC++ではなくRustが採用されたDropboxの話をRustアンチが持ち出してる時点で
C++とRustの勝敗はついてしまってるなw
477デフォルトの名無しさん
垢版 |
2023/04/24(月) 12:28:56.90ID:sBa8SLwy
ディフェンスラインが後退したな
2023/04/24(月) 12:41:41.74ID:pPYkUROK
このスレ眺めていてもC++のメリットが一つも出てこないもんね
『他の言語を覚えるのは面倒、C++を使ってきたからC++だ』という理由ばかり
2023/04/24(月) 12:45:26.61ID:LQT8UQ2a
C++製の既存ライブラリが100%使える
2023/04/24(月) 12:48:27.02ID:47nwKPG1
C++はCを包含している
C++を習得すればCを別に習得する必要はない
Rustを取得してもCを別に習得する必要がある
2023/04/24(月) 13:24:51.24ID:oJZi7e8k
Rustってインラインアセンブラは使えないの?
2023/04/24(月) 13:28:00.07ID:7/BbosrR
>>479
C製とC++製の既存ライブラリはRustでも当然使える
そして既存の枯れた安全なものを中心に実際に使われている
機能追加や更新をきっかけにライブラリの設計が変わる機会にライブラリもRust製にするエコ方式も多い

>>480
もはやCで新たに何かを書き始めることはないから枝葉は不要だがCの基幹部分は基礎知識として重要
とはいえ生ポインタとヒープ確保解放を学ぶだけで十分だから学習はすくに終わる
C++は今さら覚えても意味のあるメリットはないからこれからの人は学ぶ必要ない

>>481
RustもインラインアセンブリをRust変数を使ってRustコードの中に書ける
483デフォルトの名無しさん
垢版 |
2023/04/24(月) 13:29:40.61ID:efl+P1hN
gccのimplicit-constexpr凄すぎ
>no leaks, no UB
https://www.reddit.com/r/cpp/comments/12hdj3x/c20safety_static_assert_is_all_you_need_no_leaks/
https://godbolt.org/z/Ydc886bjq
最初のバージョンの実装ミスもコンパイルエラー
>didn't compile with 3 push_backs

3年ごとの進化が半端ない
>>459
逆にsafeexpr/safefuncが出来て、しかもimplicit-(un)safeでコンパイル時に自動推論してくれそう
2023/04/24(月) 13:30:26.73ID:47nwKPG1
>>482
>C製とC++製の既存ライブラリはRustでも当然使える
C++で例外投げるやつどうするの?
485デフォルトの名無しさん
垢版 |
2023/04/24(月) 13:34:04.01ID:TWsTM1y7
>>446
unsafe 大好き💛
2023/04/24(月) 13:35:31.02ID:TWsTM1y7
>>448
>Cを包含

完全に部分集合ではないけどなー
487デフォルトの名無しさん
垢版 |
2023/04/24(月) 13:38:41.99ID:Ny7AY3un
>>482 C++製の既存ライブラリはRustでも当然使える
こんな嘘つく時点でry

>>486
今はC側がC++に寄せてきてる
2023/04/24(月) 13:39:21.83ID:47nwKPG1
>>486
そんなことは分かってるよ
C++を習得すればCを別に習得する必要がないことを述べるのが主旨
些末な差異は問題ない
2023/04/24(月) 13:41:37.19ID:47nwKPG1
ちょっと聞いてみるか
Rustではある程度書けるけどC言語では書けない人っている?
2023/04/24(月) 13:41:45.01ID:TWsTM1y7
>>457
ほんそれ
2023/04/24(月) 13:42:39.88ID:TWsTM1y7
>>458
白目はむいてる
2023/04/24(月) 13:44:58.25ID:TWsTM1y7
>>461
Rustは楽勝だ
だれも難しいとは言っていない
面倒臭いと言ってる人は多い
493デフォルトの名無しさん
垢版 |
2023/04/24(月) 13:46:10.70ID:fzC19LDc
>>483
C++版geigerが出来てsafeに修正していく未来案件が見えて来たw
2023/04/24(月) 14:08:38.59ID:fomPRld0
>>487
FFIラッパーの半自動化によりCライブラリとC++ライブラリはRustで使えるし多数使われているよ

>>484
例外を出すライブラリだけはC++側ラッパーでcatchする形で変換
各言語で例外やエラーハンドリングの仕方が異なるからこれはどの言語でも避けられない
2023/04/24(月) 14:13:20.49ID:LQT8UQ2a
テンプレートは変換のしようもなく全滅ですが
2023/04/24(月) 14:19:07.70ID:47nwKPG1
>>495
それは例外を遥かに越えて痛いね
2023/04/24(月) 14:20:27.48ID:r05pWbWI
>>478
C++を踏まえてできたのがRustなんだろ、優位性を争う気はあんまりないな
C++で十分だって言ってる 改良されればだけどね
498デフォルトの名無しさん
垢版 |
2023/04/24(月) 14:34:55.91ID:F/4o+lBw
>>494
Rustは例外処理がネックだよな(Rustに限らないけど)
現実には xor rax,rax ですら例外が発生し得るから
async exception handlerをSEHでzero overheadで
実行ファイルに記述する仕組みを(64bit-)OSが提供しているのに
2023/04/24(月) 14:44:47.56ID:8iJzzYCL
C++とRustのコード相互呼び出しはこんな風に自動化されてる
https://cxx.rs/
https://i.imgur.com/ffKzJ3n.png
2023/04/24(月) 14:53:54.93ID:ndm5HuNo
Rustは余り普及しないのでは。
2023/04/24(月) 14:59:09.48ID:RJ/B3o+B
>>498
おまえバカだろ
CPUの例外とC++の例外からして仕組みもレイヤも全く異なる
502デフォルトの名無しさん
垢版 |
2023/04/24(月) 15:09:12.38ID:OTXlubpx
おいおい馬鹿はお前w

レイヤが異なろうがどんなに泥臭かろうがシステム言語の宿命
Rustはシステムプログラミングの何たるかを言語設計の初期段階で考慮していない
CPU例外(≒非同期例外)を構造的にキャッチ出来ない出来損ないシステム言語w
2023/04/24(月) 15:28:07.95ID:N3ScgGCG
>>502
RustはCPU例外も割り込みも扱えます
Rustは組み込み用途やOS作成などシステムプログラミングにも使えるように設計されています
Rust(やGoなどの言語)がエラーハンドリングの例外機構を非効率なものとして排除していることとは全く無関係です
504デフォルトの名無しさん
垢版 |
2023/04/24(月) 15:31:17.42ID:RVkZAaib
Rustは設計段階ではシステム言語のつもりじゃなかったのでは?
言語構文で非同期例外を扱えないのは野暮ったいし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。