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

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

っていう雑談スレ。

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

関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/05/21(日) 18:22:09.48ID:gNV32dti
jupyterって確か前からC#は使えてただろ
2023/05/21(日) 18:29:15.16ID:FVg8qfB9
>>520
その仕様は許容範囲というか
むしろ余計なものを隠したい時に重宝すると思うが?
2023/05/21(日) 19:14:19.33ID:gJ8vYfGl
>>530
AOAI_KEYにSMS認証要らなくなってから来てください
いろいろとボトルネックはそこなので
2023/05/22(月) 09:51:12.40ID:Omf9ofNg
>>496
Occupied とか Vacant とか便所の扉でしか観たことなかったが
こんな使い方するんだな勉強になったわ
2023/05/23(火) 20:23:45.68ID:6llIPdc3
C++でnewはヒープ領域にメモリを確保するけど
Rustのnewは可変サイズでなければスタック領域にメモリを確保しちゃうんだな
2023/05/23(火) 20:51:13.22ID:QaZRkUju
おじ~ん
2023/05/23(火) 22:24:35.02ID:QWj3a5zv
>>538
C++と違ってRustのnewは言語仕様じゃなく
関数の慣習的な命名にしかすぎないので
メモリ確保がどう行われるかは関数の実装による
541デフォルトの名無しさん
垢版 |
2023/05/23(火) 22:50:52.99ID:mDaJGwa6
関数名がnewかどうかは自由だが
Selfを返すことになるのでそれは必ずスタック上に置かれる

Selfの中のフィールドなどがVecなどであれば間接的にヒープも使うことになるが
あくまでも間接利用であり直接のSelfの実体はスタック上となる

Selfをヒープ上に置きたいならば明示的にBoxで包めばよい
常にヒープ上に置く使い方のみをするならば
newという関数がSelfを返すのではなくBox<Self>を返す仕様にすることも可能
2023/05/23(火) 22:54:27.65ID:gzRXTWAF
分数 みたいな 論理演算は昔からあったのに
Rustになって それが強化されたみたいに感じるのは
ただ単に ハードウェアの性能が上がったからじゃないの
2023/05/23(火) 23:36:32.18ID:O4W+gg5k
Rustは後でスタックにもヒープにも移動できるから
最初にどこに確保しようが関係ない

C/C++は合算の対価として、値の移動ができないCの仕様を守る
対価を支払ったのだから合算していい
544デフォルトの名無しさん
垢版 |
2023/05/24(水) 00:05:18.37ID:Q/1yUZsH
>>541
なんじゃそりゃ
C++のnewも返される値(ポインタ)はスタックに置かれる
Box<T>だってTはヒープでもBox<T>はスタック
さすがにそんな話をしてるわけではないと思うんだが
2023/05/24(水) 00:10:06.89ID:mXMvlRMp
>>544
インスタンスの値の話じゃないかな
C++だとnewしてヒープに置かれる
RustだとBox使わない限りスタックに置かれる
2023/05/24(水) 00:33:20.12ID:paMEGXlZ
>>545
それを言うなら「C++だとnew使わない限りスタックに置かれる」だろ
547デフォルトの名無しさん
垢版 |
2023/05/24(水) 00:42:05.36ID:m0EnFP5f
>Selfを返すことになるのでそれは必ずスタック上に置かれる
C++のnewは「ポインタを返すことになるのでそれは必ずスタック上に置かれる」と言ってるのと同じ
以降の文もだけどポイントがズレてるってことわかんないかな
2023/05/24(水) 00:54:21.12ID:E9tRPF6k
RustのBox = C++のnew
どちらもインスタンスをヒープで作ってそれを指すポインタを返す
2023/05/24(水) 00:57:06.07ID:E9tRPF6k
>>547
RustがSelfつまりインスタンスを返す時にポインタは返さない
つまりC++のnewとは異なる
550デフォルトの名無しさん
垢版 |
2023/05/24(水) 03:23:05.87ID:3Tyqstx6
>>549
さらにズレたレスだね
しかも間違ってる
2023/05/24(水) 04:29:36.35ID:dbRRSEYx
>>543
C++でオブジェクトのmoveは値が移動するわけではないが
Rustでmoveは値がスタック⇔ヒープと移動することも必要なら可能だからか
2023/05/24(水) 06:21:18.27ID:DmEFL3XT
Python3.12betaの話の#2でRustって質が悪い

https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1388841-python-3-12-now-under-feature-freeze-with-beta-1-released
2023/05/24(水) 20:33:36.47ID:p10CeLN4
move等が無かった時代に書かれた仕様を現代の価値観で解釈するのは誤読と言われそうだが
C/C++は常習的にそれをやっていた
CのstructにはOOPの機能が無い・・・のではなく省略できることを書かなかっただけ
と解釈される
2023/05/24(水) 23:36:30.94ID:zNkTHn8w
どこかのタイミングで c++ → c+++ 辺りに解明白
2023/05/25(木) 00:10:13.85ID:0dEV4qNs
int i {0};
cout << ++i++ << ' ' << i << '\n';
何と表示?
2023/05/25(木) 01:15:55.63ID:mUl8ilNM
>>551
C++のmoveは機能が非常に小さく限られてるのね
2023/05/26(金) 10:16:10.06ID:r1ZsxdoB
今からやるならrust
2023/05/26(金) 10:32:38.85ID:DUo6rxtT
でもRustって使いどころがないんだよなあ
2023/05/26(金) 11:54:59.67ID:ESB2ogqi
.NET普通に使えるRust#欲しいかな
要らんな
2023/05/26(金) 14:07:09.39ID:xXTbrqoh
>>558
データがないんだよなあって言うだけならまあいいけど
データがない、ゆえに使いどころが (論理的に) ないと言ってはいけないよ
ほぼ死亡フラグに近い
561デフォルトの名無しさん
垢版 |
2023/05/26(金) 14:32:09.72ID:W31CVnQE
社内でもRust化は検討してるけど、一番のネックはRustを使える人が集まらないことやね
2023/05/26(金) 14:33:58.09ID:oz5lNCWG
言語のアシストがあるから、C++よりは安全といっても…習熟が要らないかっていったらまた別の話だしな
2023/05/26(金) 17:56:10.48ID:bW5L38cr
まぁ実際“安全”って言ったって実際どうなんってよくわからんよな
ただ、マーケティング的に「今Rustってのが出てきました、Microsoftのwindowsも使い始めました、Linuxもです、これからはこういう安全性の高い言語で開発されたものがおすすめできます」というのは売りにはなるやろな
実際ほんとにどれほど安全なのかはわからんけど
2023/05/26(金) 18:04:34.59ID:xXTbrqoh
GCの使いどころを知るためにGCを追放してみた感がある
自分が絶対正しい的な動機がなくても、身の程をわきまえた上でGCをクビにする
2023/05/26(金) 22:03:14.80ID:Pn/E6OPd
>>554
解明白?
国語やり直すか?
2023/05/26(金) 22:09:14.92ID:EpQhSPEM
>>562
ゼロから習得スタートならば
C++よりRustがすっきりしていて習得しやすい
C色んな機能や概念を後付けしてきたC++との違い
2023/05/26(金) 22:22:16.39ID:1fyDxV99
ソフトウェアの売り文句がその通りだった試しはないんだけどな
2023/05/26(金) 22:58:51.65ID:8voBDcDV
柵はソフトウェアでは利点も欠点もあるからね
2023/05/26(金) 23:42:30.81ID:xXTbrqoh
トロッコ問題もそうなんよ
死者は1人または5人と断定して利点や欠点を皮算用させるけど
現実は0人だったり2人だったりする
問題文がその通りだった試しがないことを知っている人は問題文を否定する
2023/05/26(金) 23:59:03.75ID:hkN5eS/D
>>566
ほぼすべての人にとってはそうだ
しかし抽象化が進んでいるため一部のバカはRustなどの言語を理解できないようだ
2023/05/27(土) 00:57:04.07ID:isbRRjiE
言うほどrustが抽象化されてるか?
2023/05/27(土) 02:06:21.95ID:gMKf+OGS
そういう具体性皆無の発言にいちいち反応してっからくだらん話になっていくんや
2023/05/27(土) 09:54:08.85ID:NyTfYGgM
バカには理解できない言語?
それは習得し易いとは言えないのでは
2023/05/27(土) 10:40:48.84ID:bsq21T/I
エスペラント流行らないね
2023/05/27(土) 11:01:08.70ID:irejRMME
習得しやすさを基準にすると宗教に勝てないよ
習得しやすいが残酷な教義を信じて戦争したりするよ
576デフォルトの名無しさん
垢版 |
2023/05/27(土) 13:01:04.01ID:6b5IxvdG
デジタル信号処理の組み込みやるならC++じやね?
2023/05/27(土) 13:12:08.74ID:G4DK6UTP
C,C++,Rustはそのあたりの機能も性能も同じ
2023/05/27(土) 13:48:56.45ID:5MJtpNwj
勉強するときに参照するサンプルコードはぼぼCで書かれてるからね
3言語ともまだって人にはRustは選択肢にならんだろうね
579デフォルトの名無しさん
垢版 |
2023/05/27(土) 14:01:29.07ID:EP+s5fsB
言語を勉強するのが目的の人はRustかなと思う。
でも、通信やOSの仕組みが知りたかったら大体の本はCで書かれてるし、デザインパターンの勉強やゲームを作りたかったらC++で書かれている本が多い。
そういった先のことを勉強したい場合、Rustで実装されてることは少ないので、優先順位が下がってしまう。
580デフォルトの名無しさん
垢版 |
2023/05/27(土) 14:02:40.43ID:6b5IxvdG
Rustって何て読むのか知らないけど、なんかあまりカッコよく無いな。カッコで言語選ぶべきじゃないとは思うけどね。
2023/05/27(土) 14:07:13.98ID:NyTfYGgM
>>575
Rustが宗教なんじゃないの?
Rust推しの人の言動みると宗教信者っぽいんだけど
2023/05/27(土) 14:13:31.68ID:XpxxVycT
ラストって勝手に思ってた
2023/05/27(土) 14:28:37.61ID:4YJ7SOpZ
Rustを使える人で仮にCを知らない人がいたとしても
残るわずかな差分のC特有の仕様を勉強するには1日あれば十分
だから困ることはないだろう
2023/05/27(土) 14:45:17.55ID:t60D5gLT
そもそもがCの文法レベルの勉強自体が8時間で終わるレベル
2023/05/27(土) 14:59:51.85ID:LrZApVUV
マジか、じゃあC言語のエンジニアなんて8時間あれはどんどん量産できるんじゃん
最強じゃね?
2023/05/27(土) 15:12:20.67ID:irejRMME
>>581
(信者数の) 最大化問題を解いているような言動は宗教っぽい
2023/05/27(土) 15:14:49.40ID:t60D5gLT
C言語の入門はどこまでなんだろ
個人的には連結リスト作るまで当たりじゃないかと
2023/05/28(日) 00:05:14.68ID:jBYqeWbk
C・C++はビルド周りが弱すぎる
CMake登場でちょっとはマシになったけど、それでもまだそんな普及してないしな
2023/05/28(日) 00:11:09.42ID:YEcTw8ee
autoconfとautomakeがありますが何か?
2023/05/28(日) 01:04:51.11ID:sbLeZmJN
弱いのはWindowsでしょ
他人がビルドしたライブラリをリンクする仕組みがないから自分の負担が大き過ぎる
最近はLinux依存を躊躇しなくなってきてる
2023/05/28(日) 03:42:47.92ID:jBYqeWbk
ライブラリを簡単に探したり、依存関係勝手に解決してくれる仕組みがないのでゴミなんだよなぁ
2023/05/28(日) 05:16:42.09ID:druolHmT
vcpkgとかconanは使ってみた?
2023/05/28(日) 10:19:09.55ID:BU1qe+Xl
色々使ってみるということは当然C++とRustどっちも習得するんだよな
2023/05/28(日) 10:25:45.36ID:MoCGpZK6
触るけど習得なんてしない
595デフォルトの名無しさん
垢版 |
2023/05/28(日) 10:35:03.00ID:9nDQPrUY
仕事で必要な方にすれば?必要に迫られれば集中して学ぶからどんな言語でも習得するかと。
2023/05/28(日) 10:37:20.20ID:MoCGpZK6
ライナスはピュアCでgit作ったんだよな
偉いわ
Cオンリーでマルチ文字列操作なんてしたくない
597デフォルトの名無しさん
垢版 |
2023/05/28(日) 10:41:38.44ID:9nDQPrUY
>>596
Rubyかと思ってた
2023/05/28(日) 10:53:49.06ID:MoCGpZK6
Perlがあったとてもrubyはないかな
599デフォルトの名無しさん
垢版 |
2023/05/29(月) 06:25:25.92ID:e2f/gOni
所有権とかいる?std::moveで十分だろ
2023/05/29(月) 09:55:20.52ID:MCD4Vue8
pub const longlongnamehogehoge: i64 = 1;
pub const longlongnamehogehage: i64 = 2;
pub const longlongnamehagehage: i64 = 3;
みたいな定数があって
let fuga: i64 = なんか値; みたいな状況で
match fuga {
longlongnamehogehoge => { println!("oo"); },
longlongnamehogehage => { println!("oa"); },
longlongnamehagehage => { println!("aa"); },
longlongnamehagehoge => { println!("ao"); }, // 無いはず
_ => { println!("other"); }
}
って描いたときコンパイル時エラーを期待してたんだけど
完全スルーで成功されるんだがなんでだろ
601デフォルトの名無しさん
垢版 |
2023/05/29(月) 10:08:34.30ID:MCD4Vue8
事故解決しますた
gist
37751f7d9108e58dd16982f32a2b105f

match に any value って _ のことだけかと思ってたけど
使ってない変数名ならなんでも良いことが判りましたです
2023/05/29(月) 10:10:38.95ID:MCD4Vue8
あとこれでも実行出来てたのでどこにあるかの問題でもなかった
match fuga {
longlongnamehogehoge => { println!("oo"); },
longlongnamehagehoge => { println!("ao"); }, // 無いはず
longlongnamehogehage => { println!("oa"); },
longlongnamehagehage => { println!("aa"); },
_ => { println!("other"); }
}
2023/05/29(月) 10:52:27.39ID:0py62bgw
>>602
warning: unreachable pattern で気付くだろ
2023/05/29(月) 11:02:56.11ID:zN7uHoOl
Cでは定数を#defineやenumで定義することが多く
定数は大文字で変数は小文字
Rustのenumも大文字で始まるから通常は定数と変数を間違えない

問題は、#defineよりconstが優れているというのは嘘だったんじゃないかという
605デフォルトの名無しさん
垢版 |
2023/05/29(月) 12:35:35.40ID:MCD4Vue8
いやまあそうなんだけど
match fuga {
longlongnamehogehoge => { println!("oo"); },
longlongnamehagehoge => { println!("ao"); },
longlongnamehogehage => { println!("oa"); },
longlongnamehagehage => { println!("aa"); },
}

longlongnamehagehoge が存在しない状態で
このコードって明らかにバグだと思うんだけど
正常系と看做される訳でωωωなんだかなーと思った次第
2023/05/29(月) 12:54:38.91ID:0py62bgw
>>605
網羅性を保証するためにenumが存在している
enumを使わずに文句をつけているキチガイにしかみえない
2023/05/29(月) 13:05:53.16ID:iwZJC5k1
>>606
さすがに完全に同意
enumについてどう思ってんだろう
608デフォルトの名無しさん
垢版 |
2023/05/29(月) 13:14:24.40ID:kC+BEAFO
>>605
それはfugaとlonglongをマッチさせてるわけじゃないぞ
マッチしたらfugaの値がlonglongに入るんだぞ
2023/05/29(月) 13:18:20.76ID:ZdZrmK0s
他の言語の
switch (id) {
case ID_A:
...
case ID_B:
...
}
と同じ感覚でmatch使っちゃっただけでしょ
キチガイ扱いはちょっとかわいそう
2023/05/29(月) 13:22:43.41ID:iwZJC5k1
> ωωωなんだかなー

じゃないよね?
理解して?
己の不勉強を自覚すら出来ないやつは誰?
611デフォルトの名無しさん
垢版 |
2023/05/29(月) 13:24:03.12ID:kC+BEAFO
知らなかっただけなんだからそこまて責めんでもいいだろうに
2023/05/29(月) 13:38:12.55ID:33Ot4IL4
The Bookを含めてRust入門ドキュメントでは、
match式はenumを用いて説明しているよ
つまりenumを知らなかったとは思えないから、
意図的にenumを使わずに文句をつけているのか、
まさかenumを理解できなかったのかな
2023/05/29(月) 13:38:27.24ID:zN7uHoOl
優劣の判断をしないほうがいいのは、相手がかわいそうだからというより
自分が安全な中立地帯に居座るためだ
中立を極めた者は、優れているとか役に立つとかいう概念を使わない
2023/05/29(月) 14:00:33.01ID:U+wQSuk1
>>605
前に知恵袋で見た血液型の問題だろ
そういうのってrustに向いてんの?
2023/05/29(月) 15:07:51.01ID:aJ4OeDQN
「constはパターンになれない」とだけ言えばいい話なのに何をマウンティングしてるんだか
2023/05/29(月) 15:15:32.57ID:ZdZrmK0s
match x {
1 => {...}
2 => {...}
_ => {...}
}
みたいなリテラル表記だと一応意図したとおりに動くから
const値に置き換えたら動かなくなるのはある意味トラップだな
慣れてくるとこのタイプの定数は最初からenum使うから気にならないけど
2023/05/29(月) 16:23:05.49ID:0sW/cDjN
>>615
constはパターンになれるよね?

>>616
置き換えても動くよね?
2023/05/29(月) 16:41:46.18ID:aJ4OeDQN
>>617
あらほんとだすまん
何かと勘違いしてたっぽい
2023/05/29(月) 17:45:18.33ID:iwZJC5k1
なんでさぁ
そんな半可通なのに知ったふうなこと言うの?
言わないと死ぬの?
2023/05/29(月) 18:14:25.53ID:ZdZrmK0s
constはpathパターンに入ってるんだな
identifierと同じ扱いだと思ってた
2023/05/29(月) 18:48:46.37ID:MOZrpP9h
>>619
しらんけど、ってsuffixをわすれただけだろ
しらんけどw
2023/05/30(火) 06:53:00.29ID:3OlGrJtt
RustのExpertをもっと敬えよ

「専門家への敬意の不足」を理由にプログラミング言語「Rust」のコアチームメンバーの一人が離脱、一体何が起きたのか - GIGAZINE
https://gigazine.net/news/20230529-rust-conf/
2023/05/30(火) 07:29:02.28ID:ipnc70z4
>>622
その記事に大雑把に書かれているように大した問題ではなく
・JT氏がC/C++専門家のジャンヘイド氏をRustConfの基調講演に招待した
・ところがジャンヘイド氏はブログで無知思い込みでRustを勘違い批判してしまっていた
・そのためRust側は不快感を持ち彼の基調講演を一般講演に格下げした
・格下げされたジャンヘイド氏が怒って講演をやめることにした
・彼を招待したJT氏も怒ってRustから去った
ただこれだけで技術的な話はなく何か意見が分かれて分裂したわけでもなく
2023/05/30(火) 08:23:16.35ID:IY9/b4ln
大ごとだろ
人種の絡む内部構想と宗教戦争だよ
信者じゃないヤツはいくらでもパージしていい
キリスト教徒特有の異教徒排除・異教徒弾圧だ
「ガバナンス構造の設計を担当」っていう言葉の意味が宗教オンチな日本人にはおそらくはピンと来ないんだろう
2023/05/30(火) 08:25:59.09ID:1rcYEXOM
情報量が足りな過ぎて良く判らんな
626デフォルトの名無しさん
垢版 |
2023/05/30(火) 08:27:30.03ID:xYLAbTG/
>>623
お前の倫理観どうなってんだよ
ちょっとヤバすぎるぞ
2023/05/30(火) 08:30:40.05ID:f+ibIpgg
>>623
記事を読む限り
・基調講演とすることは暫定リーダーシップグループの投票で決定
・基調講演をただの講演とすることに対する投票は行われていない

だから、暫定リーダーシップグループの一部メンバーによる暴走であり、グループの機能不全だろ。
本来ならこのような格下げを行った人間を罷免すべき話だと思うけど。これを「大した問題じゃない」というやつとは一緒に仕事したくないね。
2023/05/30(火) 08:31:02.61ID:aekYWoZa
そこだけ読んで推測した
JT氏ってののガバナンス(提案)を、Rustの幹部が蹴ったような話か
そら出ていくって言うかもね
2023/05/30(火) 08:33:38.35ID:aekYWoZa
Rust布教を煩いと思ってた人は、「Rustも一枚岩ではない、とにかく成功の独占を許すな」と叩いてもいいし
Rust使ってる人は、今のRustがもう大手に採用されて済んでるから、それに乗ってればいいし
どっちにしても悪い話にはならないw
630デフォルトの名無しさん
垢版 |
2023/05/30(火) 08:59:11.08ID:1VbECa/r
>>627
格下げ要求がRustプロジェクトの総意かのように偽ってRustConfにプレッシャーかけ続けたのは暫定リーダーシップチームのメンバーではないっぽいよ
2023/05/30(火) 09:34:02.71ID:VihTjfMe
まとめるとC++使いは嫉妬まみれのウンコってことか
632デフォルトの名無しさん
垢版 |
2023/05/30(火) 09:43:11.80ID:c5gjNsOt
>>628 >>629
お前の読解力どうなってんだよ
ちょっとヤバすぎるぞ
2023/05/30(火) 09:43:50.35ID:aekYWoZa
safe C++ が立ち遅れてて、やきもきしてるんだよ、それがRustの成功の独占につながってる
しっかりしろよってやつだ
2023/05/30(火) 09:49:42.88ID:GjbKzZ5u
Rustのことをよく知らずに間違ったことをブログに書いちゃうような人をRustConfの基調講演に招待したJTがおかしいようにみえる
基調講演をする初の有色人種になるはずだったとJTが書いているが人種問題とは無関係だから不用意なことを書くべきじゃない
講演格下げ手続きに問題があるとはいえまずはそれを正常化すべき話であって放り出して辞めたJTに賛同できる点がない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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