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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2023/06/06(火) 19:13:06.15ID:ZuKzBsFa
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

前スレ: 結局C++とRustってどっちが良いの? 3traits
https://mevius.5ch.net/test/read.cgi/tech/1683154196/

関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/06/28(水) 22:29:27.34ID:0DoHaNjN
>>877
全然違う
Rustの基本くらいは理解しようぜ
881デフォルトの名無しさん
垢版 |
2023/06/28(水) 22:35:35.18ID:V4K/UYVM
>>879
自演じゃねーよ
2023/06/28(水) 22:38:47.23ID:ZkV1DUYZ
>>881
うん、どう見てもアレの人が出てきたからお前は違うな
すまん
2023/06/28(水) 23:04:17.25ID:CwhYIy1e
rustを使ってみた感想としては安全性が高いのはいいんだけど、ちょっとしたコードでもタイプ量が多くなるところがマイナス
結局c言語ぐらい気軽にかける文法が望ましいがc言語ではメモリリークを出さない開発が至難の業である
よってrustは文法をc言語に寄せるべきだ
俺はメモリ安全なc言語を使いたいんだ
2023/06/28(水) 23:39:12.71ID:yWt9fj7b
pythonだと高速のライブラリは有用だけれど
rustだと遅いとか文句言われそう
885デフォルトの名無しさん
垢版 |
2023/06/29(木) 00:18:55.84ID:KWlnjQqd
rayonと組み合わせて使うならtokioよりもasync-stdの方が良さそうだな。このように組み合わせると非同期かつ行動に並列化の最適化の恩恵を受けれる。
886デフォルトの名無しさん
垢版 |
2023/06/29(木) 00:19:39.93ID:KWlnjQqd
>>885
行動じゃなくて高度ね。
2023/06/29(木) 01:18:16.64ID:G4iUS2a2
>>880
違うん?
RustでもC++のスマートポインタでも“所有権”とか“ライフタイム”とか言う概念出てくるし、「ポインタの中ではデータの所有権を持つものが設定される」「所有権を持つポインタがスコープを離れ全て無効になったときデータは自動的に(プログラマがメモリ解放の手続きを行わなくとも)自動適に消去される」とあって少なくとも細かい違いはあっても「プログラマがメモリの解放をしなくても自動的にコンパイラが解放のコードを挿入する」と言う根幹の部分は同じじゃないの?
どっか違うの?
2023/06/29(木) 07:41:38.95ID:+YpLQq9u
仮に、質問は有料で独断は無料だとしても、お金を払いそうな人はいっぱいいる
有償サポートは儲かる
2023/06/29(木) 08:48:31.42ID:QpjtYgcG
rustだけで全てやりたい
2023/06/29(木) 08:50:06.09ID:E/0OCxk0
できるっちゃできるだろ
布教うっせえC++でたくさんだ、って言ってる人がいるだけで
891デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:02:46.71ID:8oHTvHG4
>>887
とりあえず公式チュートリアルThe Bookの4章まで読みましょう
そうすれば自ずと答えは出てくる
https://doc.rust-lang.org/book/
892デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:25:42.33ID:df8BmqTV
>>872
大規模な共同幻想だよな
893デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:29:54.32ID:df8BmqTV
>>857
これは良い視点
もっと拡散追及して良い話
894デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:32:10.55ID:df8BmqTV
>>864
>最近、英国が酷い国である、という噂がたっている。

これは最近じゃなくて昔からだな
もちろん酷い國は英國だけじゃないし英國が一番酷い國だとは思わない
2023/06/29(木) 09:32:52.11ID:K/NE5Ydr
>>891
読んだ上で言ってる
ないです
896デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:35:54.22ID:df8BmqTV
>>875
web向けならRustじゃなくても良いのになω
897デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:38:52.71ID:df8BmqTV
>>877>>887
Rustの前にC/C++を勉強するべき
898デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:40:03.94ID:df8BmqTV
>>888
だから感染警告サポート詐欺が流行るんだよな
899デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:41:51.11ID:df8BmqTV
>>883
>c言語ではメモリリークを出さない開発が至難の業である

doubt
シレっと嘘を描くな
900デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:43:54.38ID:wlk15V3I
>>895
そうすると変数が何かも分かってない残念な子ってことになるからもう一度読んだ方がいいんじゃね

あとスマートポインタも復習した方がいいかもね
2023/06/29(木) 09:54:35.89ID:+YpLQq9u
スマポはライブラリ
代わりがいくらでもあるライブラリは
唯一無二の言語に隷属するというのがオーソドックスな見方
逆に、同一の概念が複数の言語に現れるという見方は共感されにくい
902デフォルトの名無しさん
垢版 |
2023/06/29(木) 09:58:22.77ID:df8BmqTV
↑901
また変なこと言い始めた
バカの上塗り
2023/06/29(木) 10:00:02.58ID:bws8h/9h
>>887で正しいやろ
細部は違うとしてもRustに導入された変数の振る舞いは
C++のスマートポインタから拝借されたかどうかは知らんが
共有している
904デフォルトの名無しさん
垢版 |
2023/06/29(木) 10:06:10.18ID:4kXFSc8E
このRust CookBookってサイトはRustについて色々まとめられてて日本語も分かりやすいな。
https://uma0317.github.io/rust-cookbook-ja/about.html
905デフォルトの名無しさん
垢版 |
2023/06/29(木) 10:11:51.81ID:4kXFSc8E
>>904
まあ、このサイトはRustの文法云々の説明が丁寧に書いてあるというよりはRustの色々な付加的な機能の使い方が丁寧に書いてあるサイトなので、今話題のスマポとは関係ないけどな。
2023/06/29(木) 12:55:26.21ID:R9FyhrNj
C爺さんはなぜRustに嫉妬してしまうのか
2023/06/29(木) 13:02:33.44ID:K/NE5Ydr
実はRust vs C++ ではなくてスマポ以上使える人 vs スマポまでは使えない人の構図なんだよな
2023/06/29(木) 13:54:58.03ID:8Rym6q2q
元の変数が使えなくなるという部分は影響を受けたとは思うけど
概念としては別
2023/06/29(木) 14:16:12.67ID:KPc+Jj1F
>>908
Rust初めて見たときはstd::auto_ptrがよぎったな
2023/06/29(木) 14:22:14.53ID:E/0OCxk0
その手合いの批判を目にして考えたんだ
俺いままで、スマポを適切に使えるか自信なくて、スマポなんかなくても間違わないように設計してたなって
ちなプロじゃない(業務で書いてない)ので、こんなもんで済んでたってのはある

Rustがスマポを当たり前にしちまった 俺も使えるようになるんだろうな
2023/06/29(木) 14:44:03.11ID:bws8h/9h
>>910
>スマポを適切に使えるか自信なくて
どんな奴やwww
標準ライブラリの中で最も簡単な部類やろ
2023/06/29(木) 15:05:21.03ID:+lhSLNnL
>>877
そこはC++とRustで大きく異なる
とりあえず所有権とスマートポインタ(スマポ)の根本的な違い

C++: 所有権はヒープ領域に対してのみ存在する
Rust: 所有権はヒープ/スタック領域かの区別なく存在する

C++: スマポが指す領域はヒープ領域のみ
Rust: スマポが指す領域は一般的にヒープ/スタック領域の区別がない、ただしヒープ領域のみを指すスマポ(ex. Box)もある

C++: スマポはヒープ領域とその所有権を管理するために使われる
Rust: スマポは汎用的で任意の領域を指しRAIIに基づき動作する様々なものがスマポ

これらの差異によるRustの様々な効果は多く書ききれないが
C++は機能が非常に弱いとともに複雑となっている
Rustはコストの軽いスタック領域のシンプルで安全な活用が進んでいる等
2023/06/29(木) 15:19:00.73ID:bws8h/9h
>>912
それは枝葉末節な話
プログラミング言語にこれまでになかった所有権なるものが発明され導入された
その発想はどこから来たのか? という大きな話では>>877は正しい
>>877の最後の行は言い過ぎだけども
2023/06/29(木) 15:25:24.94ID:+lhSLNnL
>>913
C++とRustでは>>912に書いたように本質的に異なる
この本質的な差異を理解できないとRustを会得できない
なぜC++は不十分なのかも理解できない
915デフォルトの名無しさん
垢版 |
2023/06/29(木) 15:34:01.40ID:ZfPI/MnN
>>913
めちゃくちゃ話変わっとるやんw
本人以外でここまでのエクストリーム擁護するやつおらんわな

しかも所有権はスマポ以前からある概念だからそのエクストリーム擁護も当然の如く間違いなんだが
2023/06/29(木) 15:40:53.58ID:K/NE5Ydr
もちろんRustはスタックにデータを保持するような変数に対しても、すなわち全変数について所有権、ライフタイムを定義してその求めるところのルールに従わなければならないと言うのはC++との違いではある
しかしそれはこの話の本質ではないやろ
そんな話してないやん?
2023/06/29(木) 15:45:55.45ID:KPc+Jj1F
>>914
スタックに置くかヒープに置くかは明らかに末論やろ?
そんなものを意識する極々などこで書いてるの?
2023/06/29(木) 15:46:32.29ID:KPc+Jj1F
>>917
訂正
極々なとこで書いてるの?
2023/06/29(木) 15:47:13.92ID:KPc+Jj1F
>>915
所有権の起源について詳しく!
2023/06/29(木) 15:48:25.62ID:E/0OCxk0
所有権か、それを越える何かが、はやくC++に来ないとダメだ
何と言われようがかまわん、話はそれからだ
2023/06/29(木) 15:52:41.94ID:8Rym6q2q
>>913
どこからきたか?という点に関してはその通りだな
元々はメモリの解放漏れとダングリングポインタを防ぐための概念だが
2023/06/29(木) 15:56:10.95ID:+lhSLNnL
>>916
そこはC++で上手くいかなかった一因でもあるから本質的な差
さらに>>912に書いたようにスマポの概念も大きく異なる

>>917
ここはスレタイからC++とRustの比較スレ
両者の本質的な違いに言及できずに同じ扱いをしている書き込みは存在意義すらない
2023/06/29(木) 16:29:32.18ID:K/NE5Ydr
違う、そんな話してないでしょと言ってんの?
わからん?
そんな話ではなく、Rustの変数の扱いがむずかしい難しい、学習コストが異様に高いと言ってるけど、そんな事言い出したら実質同じなC++のスマポだって使えないでしょと言ってる
Rustはその学習コストの高い概念を“全変数”に課しているためものすごく簡単なプログラムでもその難しい概念の理解を強要されるから難しさが際立つけど、C++でもC++11以降はポインタについてはスマポ推奨で、事実上ポインタ使わないプログラムなんて書けないんだから学習コストの高さはC++もRustも同じようなもんじゃないのと言ってる
ともかくオレが上げてる“テーゼ”すら読み取れてない
2023/06/29(木) 16:29:33.37ID:E/0OCxk0
本質的な違いなどないのではないか! という議論はあってもいいぞ 雑スレだし

まあ俺にはわからん
2023/06/29(木) 16:33:43.86ID:z5vuUvDJ
俺は馬鹿だから難しい話はわかんねけけどよ、流れ自体は良いんじゃねえのか? それが仲間ってもんだろ!!
2023/06/29(木) 16:43:52.89ID:QK7CBl/S
>>923
ちょっと違いますね
元々の議論は「C++にも所有権があるしスマートポインタを使えばよいのでRustは不要」
と間違った主張する人たちがいるところから始まっていると思います
したがって正解は>>912でしょう
2023/06/29(木) 16:53:27.69ID:sKu42tr6
バレバレ
2023/06/29(木) 17:11:19.08ID:IaxigvqZ
twitterで、Rustというキーワードだけ書くと、ゲームと区別が付かなくて流れて
誰も話題にしてくれないから、Wasmというキーワードを混ぜてる
のかな、と最近思ってしまう。
本音は、いい迷惑。Rustのことなんて話題にしたく無いのに
Wasmで検索すると高い頻度でRustの話が出てきてしまうから。
嫌な感じ。
2023/06/29(木) 17:18:21.94ID:bws8h/9h
ヒープに取るかスタックに取るかで速度以外に違いなんてあったっけ?
2023/06/29(木) 17:39:59.25ID:E/0OCxk0
ヒープが断片化するとキャッシュミスになりやすいのでは、とかいうね
実機で測ってみないとなんともだけど
2023/06/29(木) 18:08:03.98ID:bws8h/9h
>>912は末論だよね?
2023/06/29(木) 18:10:27.78ID:QRcouA6R
メモリアロケータのコードを読んだり自分で書くとわかるが
ヒープ領域の確保と解放はやることが多く非常に遅い
さらにヒープ領域の利用はキャッシュミスの観点から遅くなりがち
可能な限りスタック領域を活用するRustは理に適っている
2023/06/29(木) 18:14:30.27ID:8Rym6q2q
所有権を明示的にコンパイラがチェックするかしないかは天と地の差がある
2023/06/29(木) 18:16:54.35ID:8Rym6q2q
何でもかんでもヒープにおいちゃうスマポは時代遅れ
Cでとりあえず全部のオブジェクトをmallocするようなもの
2023/06/29(木) 18:27:08.10ID:QRcouA6R
>>934
そこは正確に「C++のスマポ」と書いた方がいい
Rustのスマポは意味が異なりヒープを必ずしも扱うとは限らないため
936デフォルトの名無しさん
垢版 |
2023/06/29(木) 18:36:23.22ID:bws8h/9h
>>877に始まる議論でメモリアロケーション云々は枝葉末節な議論でしょう
なぜなら文法の話をしているので
文脈を読めないのかな?
2023/06/29(木) 18:41:20.23ID:8Rym6q2q
rustのスマポというドキュメントに書いてない造語はやめよう
2023/06/29(木) 18:42:18.74ID:8Rym6q2q
「バールのようなもの」みたいな不完全な言い回しはド文系が使いがちな言葉遊びだよ
2023/06/29(木) 18:50:38.54ID:wnB+yAyw
C++はゴミ
2023/06/29(木) 18:54:54.39ID:YdXg30BO
Unreal EngineでRustは使えない
2023/06/29(木) 19:01:34.27ID:E/0OCxk0
Rustとか以前にVerseきてくんないとどうにも
Pythonすら(実行中に)つかえん
2023/06/29(木) 19:04:50.68ID:E/0OCxk0
…あーいや、Pythonは組み込む試みがなくはないらしいな 部分的に前言撤回
2023/06/29(木) 19:21:09.57ID:amdLCyiV
Rustはもう終わり
次の言語に期待しよう
2023/06/29(木) 19:34:51.15ID:QRcouA6R
>>937
Rustのスマポはthe Bookで丸ごと一章を割いてしっかり説明がある
具体的な要件としてはDerefとDropのトレイト実装
Derefはdereference『*』オペレータで使える記述面としてのスマポ要件
DropはRAIIにより後始末できる機能面としてのスマポ要件
ヒープ領域を管理するためのC++のスマポとは異なり
Rustのスマポはもっと広義で多様なものが含まれている
2023/06/29(木) 19:36:23.39ID:LxVzw2zZ
>>944
だからそれはスマポではないよ
2023/06/29(木) 19:39:40.83ID:x/2FXeiZ
>>928
Closure言語よりはマシなネーミングだと思う
2023/06/29(木) 19:39:53.25ID:QRcouA6R
>>945
Rust Bookを読みなさい
スマポの要件からスマポの具体例にスマポの自作の仕方まで説明されているから
2023/06/29(木) 19:52:12.24ID:LxVzw2zZ
>>947
そんなのは言語によって変わるでしょうよ
あとRAIIはスマポでもなんでもない
2023/06/29(木) 19:58:47.38ID:K3006uC3
RAIIを最初から知ってる奴は冷静なんだけど
知らなかった連中はなんでもスマートポインタに見えたり
さらにはそれらがGCであるとまで強弁するやつまでおる
あくまで単なるRAIIなんだけどなあ
2023/06/29(木) 20:05:47.28ID:sKu42tr6
>>944
T: DropはT自身に対するスマポですか?
2023/06/29(木) 20:14:49.21ID:LxVzw2zZ
>>950
きみはまず言語仕様とライブラリの仕様とランタイムの仕様をきちんと理解した方が良いよ
ある言語での概念を他の言語に持ち込んで理解するのは
ナンセンスと言わざる終えない
2023/06/29(木) 20:18:30.69ID:QRcouA6R
>>948
明記しているように>>945は「Rustのスマポ」についての話
そしてRAIIをスマポとは書いていない
(RAIIにより生じる機能の)Drop実装はRustのスマポの要件の一つ

>>950
いいえ
Rustのスマポの要件がDerefとDropを実装していることとRust Bookに明記されていること以上の話はない
2023/06/29(木) 20:23:09.60ID:QRcouA6R
レス番号をミスったので以下へ訂正

明記しているように>>944は「Rustのスマポ」についての話
2023/06/29(木) 20:28:00.83ID:Sn4NF66F
突っ込みが甘かった
疲れてるな
2023/06/29(木) 21:26:38.09ID:O21YwZkW
>>931
>>912の所有権&スマポのC++とRustでの違いがこのスレの根幹のひとつだよ
その違いをわかってない人がたびたび間違えたり勘違いして荒れてる
956デフォルトの名無しさん
垢版 |
2023/06/29(木) 21:40:41.14ID:yRLq+mF2
バカ同士だからほんとよく続くよね
957デフォルトの名無しさん
垢版 |
2023/06/29(木) 21:41:04.47ID:bws8h/9h
>>955

>>912>>877のレスとして書かれている
所有権はスタックに取ろうがヒープに取ろうが無関係なので>>912は枝葉末節な話
別の話としてやるならどうぞ
958デフォルトの名無しさん
垢版 |
2023/06/29(木) 21:44:14.19ID:kafEqaUy
RustのスマートポインタとC++のスマートポインタは用語の定義がそもそも違う
2023/06/29(木) 21:45:16.65ID:O21YwZkW
>>957
このスレで最も重要なことを枝葉末節と言い切るのは勉強不足じゃないかな
960デフォルトの名無しさん
垢版 |
2023/06/29(木) 21:48:05.52ID:bws8h/9h
>>959
お前が文脈を読めないのは分かったよ
2023/06/29(木) 21:56:21.54ID:QRcouA6R
もめてる文脈に興味はないが
>>912の内容自体は正しい
2023/06/29(木) 22:02:18.51ID:8Rym6q2q
なぜrustとC++を比較しているのか理解できない
根本から違うものを無理やり比較してる
2023/06/29(木) 22:03:10.31ID:8Rym6q2q
なぜか類似性見出してるが「全くの別物」という理解をした方が良いよ
2023/06/29(木) 22:06:54.32ID:bws8h/9h
>>962
そういうスレなのでは?w
2023/06/29(木) 22:06:55.65ID:+YpLQq9u
C++は失敗したのではなくループしてるんじゃないか
自由過ぎて数え切れない選択肢をしらみつぶしに
枝葉末節を除けばRustと同じパターンも1個ぐらいあるのでは
2023/06/29(木) 22:13:44.35ID:8Rym6q2q
>>964
だから比較する部分ではないんだよ
同じ機能ではないから
2023/06/29(木) 22:21:05.25ID:8Rym6q2q
スマートポインタで二転三転してるからね
あれで見限った
結局unique_ptrも使いやすくはないし
微妙なバグを生む書き方ができてしまう
2023/06/29(木) 22:24:49.20ID:bws8h/9h
どんな?
2023/06/29(木) 22:29:09.72ID:8Rym6q2q
chromiumで生ポインタをraw_ptr<T>に全部書き換えたのは笑ったな
Googleでもこんなクソみたいなことするんだな
2023/06/29(木) 23:05:41.78ID:O21YwZkW
>>969
生ポインタを捨ててペナルティを払ってでも対策に乗り出したのが面白いね
ref_countを持っていてカウントがゼロになっても解放せずにダングリングポインタのバグを検出してるらしい
GoogleはC++を早く捨てたいようだけど巨大なコードの既存プロジェクトだけは仕方なく理不尽な手段を取るしかないようだね
2023/06/29(木) 23:42:25.03ID:+YpLQq9u
所有を強参照で、借用を弱参照で表現するのは正論だよ
2023/06/29(木) 23:59:14.96ID:QRcouA6R
Googleに限らずどこでも人員が整った新規プロジェクトからRustへ変わっていく構図だ
2023/06/30(金) 00:10:47.80ID:uTBAePHq
>>972
そこまで言うと誇大広告の類だな
各社の新しもの好きが試して成果物がようやく出てきた感じ
2023/06/30(金) 04:36:44.34ID:7dyjbNOC
俺はc言語がいいんだ
cとpythonが融合したような言語がいいんだ
rustは惜しいがいまいちしっくり来ない
2023/06/30(金) 06:50:06.51ID:74LzWw9c
根本的に勘違いしているやつがいるけど、c++のスマポはヒープ専用じゃないからね?リソース管理全般に利用できる。

c++のスマポで管理できないのはスタックメモリ。スタックメモリはコンパイラが自動変数として強制的に管理するから、ライブラリからは管理に介入できない。
2023/06/30(金) 06:52:04.27ID:74LzWw9c
>>974
Nimで良くない?
2023/06/30(金) 08:33:20.84ID:v9MKbXB8
OOPは死滅しろ
978デフォルトの名無しさん
垢版 |
2023/06/30(金) 12:00:19.77ID:QAnqikTa
>>951
>ナンセンスと言わざる終えない

君には國語の学習を強く薦める
979デフォルトの名無しさん
垢版 |
2023/06/30(金) 12:05:17.97ID:QAnqikTa
>>974
Nimだな
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況