結局C++とRustってどっちが良いの? 9traits
0001sage (アウアウウー Sacf-wVFe)
垢版 |
2023/12/08(金) 09:57:43.49ID:k3Bpg+TDa
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

・C/C++ <=> Rust いまさら聞けない移行質問なども適当にどぞ
・レスバはじめんのは勝手だけど、面白いこと・へぇなこと書いたヤツが優勝
・マな話は、マのスレもご活用ください↓

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

関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0002デフォルトの名無しさん (アウアウウー Sa21-wVFe)
垢版 |
2023/12/08(金) 09:59:08.50ID:k3Bpg+TDa
あるあるトピックス
・後発のRustは優れている(この点で特に争いはない
・といっても、C/C++から「推し変」するほどじゃない(使わないとは言ってない
・ていうか、Cとの比較と、C++との比較は違うくね?
・いくら安全っつっても、ヘタクソがunsafeだらけに書いちゃったらおんなし
・てかC++にも unsafe{ } はよ

・web方面、特に基盤部分での人気すごいね
・ChatGPTとかが賢くなる(のに賭けてる)からどうでもいい
0003デフォルトの名無しさん (ワッチョイ 8a71-yDrh)
垢版 |
2023/12/08(金) 10:07:15.12ID:0BufPgxy0
=== 複製おじさん(通称複おじ)について ===
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。

Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。

しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。

ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
0005デフォルトの名無しさん (ワッチョイ 9140-JrwL)
垢版 |
2023/12/08(金) 10:51:57.01ID:faKtyhh20
C++は全体がunsafeなのに…
0007デフォルトの名無しさん (ワッチョイ 1101-E7BN)
垢版 |
2023/12/08(金) 22:44:25.16ID:TW9tt8lZ0
>>3
複おじと言えば一文一文すべてがデタラメなこの名レスを忘れたら駄目だぞ

>ムーブでビットパターンのコピーは発生しない
>ビットパターンのコピーが発生するのは引数の値渡し等であってムーブとは関係ない
>さらに引数の値渡しでのでビットパターンのコピーとCopyのコピーも全く異なる
>Copyのコピーはディープであって高コスト
https://mevius.5ch.net/test/read.cgi/tech/1652347700/52
0010デフォルトの名無しさん (スプッッ Sd3f-kwem)
垢版 |
2023/12/09(土) 11:48:56.09ID:Vg1kZ/yWd
>>2
>・てかC++にも unsafe{ } はよ

まだこんなこと言ってる奴がいることに草
0012デフォルトの名無しさん (ワッチョイ 9f9e-tASO)
垢版 |
2023/12/09(土) 14:02:41.95ID:mK/Jf29s0
ChatGPTにCopy Traitを実装するべき場合について聞いたら、「所有権の複製」って項目が現れてワロタ
0013デフォルトの名無しさん (ワッチョイ 3701-fx95)
垢版 |
2023/12/09(土) 14:02:48.64ID:DdaPeXU00
「Copyのコピーはディープであって高コスト」以外は初心者によくある勘違いだし
勘違いから間違った内容を書いてしまうことは誰にでもあることだからまだいいのだが
繰り返し間違いを指摘されても謎の上から目線で無理筋の強弁を重ねることから荒らし認定されている
0016デフォルトの名無しさん (ワッチョイ 1701-FJ+M)
垢版 |
2023/12/09(土) 16:31:20.03ID:QPKR9yBr0
Copyのクローンは単純なmemcpyだと思っていいよ
構造体の中に別の構造体(Copy可)が埋め込まれたような型だとディープコピーに見えるけど
再帰的なコピーは必要なくて単にバイト列全体を丸写ししてる
(逆に言えばそれができない型はCopyをつけられない)
0020デフォルトの名無しさん (ワッチョイ 1701-FJ+M)
垢版 |
2023/12/09(土) 17:53:24.05ID:QPKR9yBr0
ヒープ使う型は基本的にCopyにできない(Cloneは実装可能)
構造体に1つでもCopyにできない型が含まれてたらその構造体もCopyにできない
Copyはmemcpyしても問題ない型のマーカーだと思ってもらえばいいかな
メモリをアロケートしてデータをコピーする処理はCloneの方で実装する
0024デフォルトの名無しさん (オイコラミネオ MM2b-FJ+M)
垢版 |
2023/12/10(日) 11:13:59.29ID:o2TNvwaPM
C++は、全部 unsafe と言っても、
デバッグの済んだライブラリを正しく用いて
いれば、その部分は安全。なので、関数引数の
部分だけをよくチェックすると良い。
C++の関数呼び出しは、ポインタに
関しては、型チェックが強いので
間違った呼び出し型をしていれば
コンパイルエラーになることが多い。
0027デフォルトの名無しさん (アウアウウー Sadb-g9yR)
垢版 |
2023/12/10(日) 13:08:08.29ID:1MxEINjfa
>>26
Rustも同じだろ
「間違えないように書けば正しい動作する」も間違い
「間違えないように書けばコンパイルが通る」に過ぎない
正しい動作をするかどうかは間違えないように書くかどうかとは別の問題
0029デフォルトの名無しさん (ワッチョイ 9fb9-tASO)
垢版 |
2023/12/10(日) 13:31:39.26ID:K28WR4Ds0
普段の業務も間違えだらけな奴がC++使うとか地獄か?
0033デフォルトの名無しさん (ワッチョイ 77a0-tASO)
垢版 |
2023/12/10(日) 20:06:40.33ID:e9tCAWoh0
C++もさることながら、C++とセットで付いてくるCMakeが嫌すぎる
Cargoは良いよマジで
0035デフォルトの名無しさん (スプープ Sd3f-tASO)
垢版 |
2023/12/10(日) 20:44:56.55ID:gL5uQXcVd
autotoolsはcmakeよりさらに嫌かな……
0038デフォルトの名無しさん (ワッチョイ 9f7c-kwem)
垢版 |
2023/12/10(日) 23:50:55.55ID:cB1c/r1d0
>>37
わかる
0039デフォルトの名無しさん (ワッチョイ 9f7c-kwem)
垢版 |
2023/12/11(月) 00:03:12.40ID:pB7lBER+0
>>37
ruby必要だけど、rakeコマンドいいんじゃないかなと最近気になってる。
0040デフォルトの名無しさん (ワッチョイ 9f97-L8ZV)
垢版 |
2023/12/11(月) 00:46:28.36ID:h5OL4vtk0
結局新しくて便利なものに徐々に流れる運命かなと思う
0041デフォルトの名無しさん (ワッチョイ d701-Qbcu)
垢版 |
2023/12/11(月) 00:49:37.85ID:dil4ai7q0
>>37,38
automake良いよ
makeの自由度があって依存関係の追跡もautoでやってくれる
0042デフォルトの名無しさん (ワッチョイ 7f5f-tASO)
垢版 |
2023/12/11(月) 05:20:36.20ID:osWbHCfH0
どれもこれもCargoのはるか下でどんぐりの背比べみたいな利便性の主張合戦をしてるイメージ
0046デフォルトの名無しさん (ワッチョイ d701-Qbcu)
垢版 |
2023/12/11(月) 10:28:11.52ID:dil4ai7q0
>>45
ティッピングポイントに達することはないと踏んでいるので
どうでも良いというのが正直なところ
0049デフォルトの名無しさん (ワッチョイ 9f42-L8ZV)
垢版 |
2023/12/11(月) 11:50:34.59ID:VTbbz4kY0
パッケージを再利用可能な方法で定義するという面では共通しているかもしれんが
それも重要なのはautotools自体より
configureなりMakefileなりがGNUの規約に従っているってことのほうなんじゃねえかな……
0052デフォルトの名無しさん (ワッチョイ d79d-tASO)
垢版 |
2023/12/11(月) 13:13:20.60ID:NqqqgQFY0
とっちらかりすぎで草
0054デフォルトの名無しさん (ワッチョイ 9fac-L8ZV)
垢版 |
2023/12/11(月) 13:20:04.94ID:WQVh8S/p0
一般的なことしかしない素人にわかりやすく教えてくれ教えてくれないか
CMakeどういうところがクソ?
0058デフォルトの名無しさん (ワッチョイ 1fc5-cinP)
垢版 |
2023/12/11(月) 13:46:17.96ID:PK2gC+MI0
cmakeだったらbazel使った方がまだマシだろ
0060デフォルトの名無しさん (ワッチョイ bf76-ghGO)
垢版 |
2023/12/11(月) 14:09:12.32ID:dU0p99Eo0
>>54
単体のプロジェクトならあまり困らない
しかし他のcmakeプロジェクトの取り込みとかやりだすとなかなか思い通りにいかない
言語コアが貧弱で変数すら関数が提供するというとんでもない設計
滅んで欲しい
0061デフォルトの名無しさん (スプッッ Sd3f-kwem)
垢版 |
2023/12/11(月) 14:36:59.01ID:c8C6AAotd
rake使ってる人いないの?
0063デフォルトの名無しさん (スフッ Sdbf-dxyn)
垢版 |
2023/12/11(月) 15:12:40.43ID:F74yPaG8d
>>45
教えてくださいと書いたところで議論したいわけではないなら答えは来ないだろw
0064デフォルトの名無しさん (ワッチョイ 9fac-L8ZV)
垢版 |
2023/12/11(月) 15:58:32.56ID:WQVh8S/p0
>>60
ありがとう、なんとなく理解ができた。
0066デフォルトの名無しさん (スップ Sdbf-tASO)
垢版 |
2023/12/11(月) 18:17:29.82ID:RbkbdLaQd
ビルドツール選ぶだけで議論が発生する言語嫌すぎる
0068デフォルトの名無しさん (スップ Sdbf-tASO)
垢版 |
2023/12/11(月) 18:27:31.95ID:RbkbdLaQd
JavaScriptはそもそも使っている人も含めて番人が認めるクソなので
0070デフォルトの名無しさん (ワッチョイ 9fac-L8ZV)
垢版 |
2023/12/11(月) 19:11:37.60ID:WQVh8S/p0
>>65
CMakeのインタプリタの作りが貧弱でなんでもCmake独自関数を通さないと書けないような仕様?
多種のプロジェクトを一括管理しようとすると、Cmakeでの書き方の定石みたいなのがとても面倒臭い
てな感じに理解した、どう?
0071デフォルトの名無しさん (ワッチョイ 17f0-+EJW)
垢版 |
2023/12/11(月) 19:24:08.37ID:3kN52km60
>>70
何でインタプリタが出てくるのか
本質は各プラットフォームのビルド環境を作って呼び出すだけのツール
LinuxだとMakefileを生成してmakeを実行するだけ
全然分かってないやん
0073デフォルトの名無しさん (ワッチョイ 9fac-L8ZV)
垢版 |
2023/12/11(月) 19:39:19.33ID:WQVh8S/p0
>>71
いやいや、もういいです。私の質問の流れからあなたのその回答だと的外してるし。
いわゆる揚げ足取りの人でしょ?
私はすでに転んでるから、揚げ足は取れませんよ。
ではあとは自分で調べますので。悪しからず。
レスを投稿する


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