X



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

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

っていうスレ。

前スレ: 結局C++とRustってどっちが良いの?
https://mevius.5ch.net/test/read.cgi/tech/1677286186/
0101デフォルトの名無しさん
垢版 |
2023/04/07(金) 03:11:25.56ID:ZE3zxB0C
>>100
こう書いてあるね

提案された有効期間注釈に基づく静的分析では、C++ コード内のすべてのメモリ安全性の問題をキャッチすることはできません。
具体的には、すべての時間メモリの安全性のバグ (反復子の無効化によって引き起こされるバグなど) をキャッチすることはできず、
もちろん、有効期間注釈は空間メモリの安全性 (たとえば、C スタイルの配列の範囲外のインデックス作成) には役立ちません。
詳細な議論については、以下のRustとの比較を参照してください。
0102デフォルトの名無しさん
垢版 |
2023/04/07(金) 03:22:57.43ID:ZE3zxB0C
>>99
Rustを使えるならばRustを使ったほうが良いと明記されているね

ソース
Carbon公式FAQ
https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/faq.md#why-not-rust

Why not Rust?
If you can use Rust, ignore Carbon.
If you want to use Rust, and it is technically and economically viable for your project, you should use Rust.
In fact, if you can use Rust or any other established programming language, you should.
Carbon is for organizations and projects that heavily depend on C++
0103デフォルトの名無しさん
垢版 |
2023/04/07(金) 03:34:46.32ID:D4MDBVlu
>>101
-Wlifetime とかと組み合わせろってことじゃないん
スマポだけでは解けない課題にこれが要るんだろ
(勉強中なので)知らんけど
0104デフォルトの名無しさん
垢版 |
2023/04/07(金) 15:30:28.71ID:xzLK1vX9
動きました。ほんとうにありがとうございました。

use std::ffi::c_void;

#[link(name = "user32")]
#[no_mangle]
extern "stdcall" {
fn MessageBoxA(hWnd: *const c_void, lpMsg: *const u8, lpTitle: *const u8, flg: u64) -> u64;
}

fn main() {
let msg: &[u8] = &vec![65u8, 66u8, 67u8, 0u8];
let lpmsg: *const u8 = &msg[0];
let ttl: &[u8] = &vec![97u8, 98u8, 99u8, 0u8];
let lpttl: *const u8 = &ttl[0];

println!("{}", unsafe { MessageBoxA(0 as *const c_void, lpmsg, lpttl, 3) });
}
0107デフォルトの名無しさん
垢版 |
2023/04/07(金) 16:51:51.07ID:e9qg1mi5
さらに*constにするならこれだけでいい
let msg: &[u8] = &vec![65u8, 66u8, 67u8, 0u8];
let lpmsg: *const u8 = &msg[0];

let lpmsg = b"ABC\0" as *const _;
0110デフォルトの名無しさん
垢版 |
2023/04/09(日) 10:11:37.53ID:kqAFhzUx
Haskellでrustみたいに
型引数だけじゃなく型引数を引数に取るデータ型に対しても型制約書けたりできるんですか?
0112デフォルトの名無しさん
垢版 |
2023/04/09(日) 14:32:11.00ID:pIxjloTA
>>110
もちろんできる
HaskellはRustにできないHKTもサポートしてる
0119デフォルトの名無しさん
垢版 |
2023/04/14(金) 11:40:41.31ID:UzCXU8/1
無能の内輪ノリで人口への膾炙が遅れただろその本の名前
キモいこと分かってないんだからそういうヤツラが使ってると思われる
日本でコケたのは本の題名のせいだ
0121デフォルトの名無しさん
垢版 |
2023/04/15(土) 09:46:37.00ID:PycfapTP
気が付くと unsafe {} 描きまくってるんだよなぁ orz
0124デフォルトの名無しさん
垢版 |
2023/04/15(土) 12:33:08.40ID:nVVXe4ml
mut 付け過ぎもあるかな
let hoge: &mut Vec<u8> = &mut vec![0u8; 256];
for i in 0..hoge.len() { hoge[i] = 255u8; }
の場合と
let mut hoge: Vec<u8> = vec![0u8; 256];
for i in 0..hoge.len() { hoge[i] = 255u8; }
の場合とか
0125デフォルトの名無しさん
垢版 |
2023/04/15(土) 14:12:22.83ID:YfadAR61
>>121
通常のプログラムの中にunsafeが出てくることはない
unsafeは本質的に新たな構造や仕組みをその原理部分のみ小さくライブラリ化して閉じ込めるときに用いられる
その場合も多くは再発明なので既存のライブラリを使えばよい
0126デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:28:04.14ID:yvTdL9wg
現段階でRustを推している人は、「イノベーター」と呼ばれる人で、
『常に最新の情報をチェックしていて、新しい商品やサービスに対する興味を持ちやすいユーザーです。
「新しさ」に価値を感じているのが特徴で、商品の細かい性能や価格はそれほど気にしません。
「最先端」「革新的」などが感じられる商品を積極的に選ぶ傾向があります。』
ということで、「メリット」は余り考えなくて、最先端や革新的であれば
試す人達らしい。牽引役として重要だが、すぐ飽きると言われている。
0127デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:33:25.66ID:yvTdL9wg
普及するには、その次に新し物好きなアーリーアダプターが重要らしい。
こちらは新しさだけでなくメリットも考慮して判断すると言われていて、
なおかつ影響力も大きいらしい。
イノベーターは恐らく説得力に乏しいから人を呼ぶ込む力が弱いかも。
0128デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:33:29.98ID:8QIF2BQP
こんなとこ(スレ)に溜まる奴らだろ、ライブラリ内製でもしてんじゃねーの

あるいはガチ学習者。学生なら、車輪の一つや二つ、自分で磨いてみるもんだ
青春やり直してる大人も含む
0129デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:36:01.37ID:yvTdL9wg
経験から言うと、余りよくない品物、本当は競合と比べてメリットが余りないもの
でも、一定の人は買ってくれる。そして、なぜかその人達は商品を高く評価する。
しかし、実際にはそれ以上進まない。
実は商品の競争力が本当は余り無くてもそういう人達は高く評価するから。
0131デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:38:31.04ID:yvTdL9wg
過去の例からすると、Rustは非常に限られた分野で普及が進むのかも知れない。
ただ、言語の場合は、プロには無料である事もそんなにメリットにはならないので
どこまでいくかは見通せない。
0132デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:40:01.02ID:yvTdL9wg
マニアは、それ自体を楽しんでいるだけで、実用的な仕事に使うことは想定して
なかったりすることが多い。
Rustもそうなのではないか。
0133デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:42:50.40ID:yvTdL9wg
>>128
そういう人は、ライブラリ作りも、作ること自体を楽しんだり、自慢や就職に
利用するためにやってるのではないか。また、そういう人には
「沢山の人に使ってもらえれば満足」
などという人も多い傾向がある。
0134デフォルトの名無しさん
垢版 |
2023/04/15(土) 19:51:35.04ID:yvTdL9wg
>>125
Rustのunsafeは効率を落とさない限りはライブラリ内部に閉じ込めることが出来
無い事があることが分かってる。
数学的な才能が無い人は、想像力が無いのでそれが分からない。
反論は不要。結論は出ているので。
0135デフォルトの名無しさん
垢版 |
2023/04/15(土) 20:02:07.05ID:yvTdL9wg
>>134
もしかしたら、マシン語を理解できないからそのことが分からないのかも知れないな。
「効率を落とさずに」
の意味がマシン語を知らないから分かって無い。
どういうことかと言えば、C言語では1クロックで書けるところが、
Rustだとunsafeをライブラリの中だけに閉じ込めるだけでは、
どうしても1クロックでは書けないことが有る。
0136デフォルトの名無しさん
垢版 |
2023/04/15(土) 20:24:11.46ID:fX0vt5Cu
Rustもご多分に漏れず
新しいC/C++チャレンジャーが現れて
忘れ去られるんだと思うよ
0137デフォルトの名無しさん
垢版 |
2023/04/15(土) 20:42:03.21ID:8QIF2BQP
Cは、広義の安全であることが実装者の責任と権限だけど、
そのために余計なステートメントを書かなくちゃいけなくて、
結局Rustのほうが全体ではステップ数がすくなくなる余地はあるぞ

なので、C/C++は、追いつき、追い越さなければならない
0138デフォルトの名無しさん
垢版 |
2023/04/15(土) 21:49:44.60ID:stEGFLky
クラウド世界トップシェアのAWSもRustで構築されているらしい

https://japan.zdnet.com/article/35183866/
AWD (Amazon Web Services)は、「Rust」を使っている大きな理由として、エネルギー効率の高さを挙げる。
AWSは早くからRustを採用し、Rust Foundationの創設にも携わった。
現在もRustの普及に熱心に取り組んでいる。

AWSのソフトウェアエンジニアで、Rustの普及に取り組む
Shane Miller氏と主任エンジニアのCarl Lerche氏の投稿によれば、
Rustはメモリー安全性を高め、セキュリティ関連の不具合を減らす役に立つだけでなく「エネルギー効率に優れている」。
Amazonは、2025年までにデータセンターの100%を再生エネルギーでまかなうという目標を掲げ、
データセンターの環境負荷の軽減に取り組んでいる。
Rustの採用はその一翼を担うという。

Rustで構築されたAWSサービスの例としては、
コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
「Amazon Simple Storage Service(S3)」、
「Amazon Elastic Compute Cloud(EC2)」、
コンテンツ配信ネットワーク「Amazon CloudFront」、
LinuxベースのコンテナーOS「Bottlerocket」などがある。
0139デフォルトの名無しさん
垢版 |
2023/04/15(土) 22:30:48.74ID:8QIF2BQP
大いに主観が入るけど、もっと高級言語から来てる人も多いんじゃないかな
C++に巻き取りたいねえ、負けていられない
0140デフォルトの名無しさん
垢版 |
2023/04/16(日) 00:07:26.65ID:UgglHakI
イノベーターは後先考えずに新しいものを試す。しかし、ものがよくなければ、
アーリーアダプターには届かず、失速する。それがブーム。
0141デフォルトの名無しさん
垢版 |
2023/04/16(日) 00:17:13.72ID:UgglHakI
>>140
厳密に言うと、イノベーターは、知識が豊富で、物の「能書き」や「SPEC」をよく
見て自分に合うものを選んでいると言われている。
但し、能書きどおりのものかどうか誰にも分からないような段階で「人柱」状態
で使い始めるから、後から言われた通りになってないことに気付くこともある。
なお、他の階層の人は失敗をしたくないからその時点では試さない。
0142デフォルトの名無しさん
垢版 |
2023/04/16(日) 00:20:31.86ID:2uUp8lA9
8年前のRustはそんな感じだった
まだ先があるのかわからなかった

しかしMicrosoftやGoogleやAmazonなど各社でアーリーアダプターたちが実績を示していった
RustはC++より優れていて実用的だと各社が数年かけて認識を確実なものとした
そしてライバル競合IT大手各社が共同でRust Foundationを設立
安定して信頼できる今後のプログラミング言語の地位を確立した
0143デフォルトの名無しさん
垢版 |
2023/04/16(日) 00:30:44.93ID:UgglHakI
>>142
そんな風には思わないけどな。
そもそもRustやってる人は、現代段階でも人数からいってイノベーターの域を出て
ないし。
そんな風に語らなくても、本当に優れたものであれば噂がたって人気が出てくるはず。
0144デフォルトの名無しさん
垢版 |
2023/04/16(日) 01:29:25.91ID:ZR3Gmnwe
見えてる世界が違いすぎて話にならんよなw
5年前ならまだしも今はもうキャズムを超えてるかどうかなんて議論の余地無いよ
0147デフォルトの名無しさん
垢版 |
2023/04/16(日) 06:41:40.93ID:t40wRhbK
cmakeとかわりといい仕事してるし、いいだろ

Rustが本格的に採用されれば、C++にもやっとsafeの波が訪れるだろう
福音だね
0148デフォルトの名無しさん
垢版 |
2023/04/16(日) 08:00:51.32ID:t40wRhbK
>>134
サンクがゼロコストになりえないみたいなこと?
safe/unsafe間に行き来があるとしても、うまく書ければ最適化でサンクは消失するんじゃないん
基盤がclangだし、そのうちできるようになるか、とっくにできるようになってるか
0149デフォルトの名無しさん
垢版 |
2023/04/16(日) 08:59:48.91ID:66qnCtAq
>>145
C++はCを包含するってのが方針なんで
そこはバッサリ互換性を切り捨てるRustとは違うのだよ
0150デフォルトの名無しさん
垢版 |
2023/04/16(日) 09:20:17.30ID:UySlLSqv
>>148
そいつ>>134はデタラメな主張を繰り返している基地外
数学的に自明と主張しつつその証明を示せなかったホラ吹き
0152デフォルトの名無しさん
垢版 |
2023/04/16(日) 10:28:54.24ID:9jM292fW
>>148
そうじゃない。
Rustの安全機構をライブラリ外のアプリレベルまで維持したままでは速度が
上げられないケースが存在することが分かっている。
つまり、ライブラリの中だけにunsafeを書いて、アプリコードの中ではunsafe
を使わなかった場合、安全機構と相性が悪くて必ずオーバーヘッドが生じる
場合がある事が分かっている。
0153デフォルトの名無しさん
垢版 |
2023/04/16(日) 10:31:26.95ID:J01hksTa
バカ同士仲良くやっとけよ
100点オジと複製オジ
0154デフォルトの名無しさん
垢版 |
2023/04/16(日) 10:34:06.66ID:9jM292fW
馬鹿が多すぎて学級崩壊状態。
この板は、特に数学的理解力が乏しい人が多すぎる。
0155デフォルトの名無しさん
垢版 |
2023/04/16(日) 10:41:45.49ID:FS/wFdTV
この板で「数学的」という言葉を使うやつは例外なく馬鹿だから
0156デフォルトの名無しさん
垢版 |
2023/04/16(日) 10:44:16.92ID:66qnCtAq
安全性が効率を犠牲にしているなんて
Rustに限らず分かりそうなもんだけどね
0158デフォルトの名無しさん
垢版 |
2023/04/16(日) 10:56:10.86ID:v1QbiGiU
数学的と言うざっくりとした使い方をしてるのは文系だろうなと言う感想です
0159デフォルトの名無しさん
垢版 |
2023/04/16(日) 11:04:50.54ID:YvJBOxcy
もしかして「おまえらバカにはわからないだろうが、数学的に自明。自明だから解説はしない。」という詐欺師?
0160デフォルトの名無しさん
垢版 |
2023/04/16(日) 11:08:16.87ID:v1QbiGiU
そうじゃないと思うよ
自分では賢いと思ってるけど実際はなにも表現出来てないし伝わってないタイプ
例え伝わっても中身自体は大したことがない
検証や考察無しにただ直観をそのまま書いてる人

自分の意見を書籍や論文にするけどその道の出来る人が見れば一瞬で捨てられる
0161デフォルトの名無しさん
垢版 |
2023/04/16(日) 11:15:03.16ID:YvJBOxcy
詐欺師でないなら数学的に示せばいいんじゃないかな
できなければ詐欺師確定ってことで
0163デフォルトの名無しさん
垢版 |
2023/04/16(日) 11:19:00.37ID:olscUowK
>>155
数学的って言い出したのは俺だけど、>>68 でちゃんと謝っただろww

俺は理系だけど、バイオ系に行った人間で、情報工学とか修めてないんだ
超基礎はwebに出てるから、少しずつ勉強してるけどね

そんな人間でも使える、使ってるのがC/C++だ
だから、型安全に続いて、所有権安全がC/C++に来るのは大歓迎だぜ
0165デフォルトの名無しさん
垢版 |
2023/04/16(日) 11:35:56.39ID:vDeFqoK0
Rustはコンパイル時点で安全性が担保出来るってのが強みなんだよ
GCみたいにパフォーマンスに影響与えないし、C++ほど安全に使うための予備知識が多く必要ない
0166デフォルトの名無しさん
垢版 |
2023/04/16(日) 11:51:39.68ID:66qnCtAq
>>165
>C++ほど安全に使うための予備知識が多く必要ない
その予備知識を覚えるコストが
所有権システムの振る舞いを覚えるコストに
吐き出されたというだけでは?
0167デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:03:50.68ID:olscUowK
C++は安全な利用の統一的な技法が普及してない、まさにこれから
言語によっておおむね統一されてるRustはそのへんを学ぶにあたって効率はいい模様
0168デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:13:57.81ID:66qnCtAq
>>167
>C++は安全な利用の統一的な技法が普及してない、まさにこれから
は?
(Rustの言語に含めるってアイデアはありだと思うよ)
0169デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:14:25.91ID:vDeFqoK0
>>166
言語の標準機能で実現されてるってのが大きい
C++は調べようと思ってもレガシーな情報にぶち当たる可能性が非常に高い
0170デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:20:48.95ID:66qnCtAq
>>169
そこは独特な所有権システムを受け入れることととのトレードオフだけども
そのぶち当たるC++のレガシーな部分って
要するにCなので難しくもないと思うのだが? そんなので挫折するかい?
俺はC++の規格のうち最近に拡張された機能を覚える方が大変だよ
0172デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:30:40.09ID:Xi5zVo2w
>>158
ところが「数学的」という言葉を使うのは理系が多いんだなこれが
まあちょっと考えればわかることだけど
0173デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:33:47.71ID:vDeFqoK0
>>170
結局C++は言語としての基礎がまともじゃないから、拡張繰り返してキメラみたいになってんだよ
今更新規で薦められる言語ではない
0174デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:42:30.71ID:olscUowK
まともな文系は、数学も勉強してるから、数学っていうだろうな
まともじゃない文系…って、こんな板来んやろ(w
0175デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:43:09.89ID:66qnCtAq
>>173
スタンダードであったCを呑み込むことが当初からのC++の戦略だからね
後方互換性ってのは大多数の人間にとっては魅力なんだよ
後方互換性を犠牲にしてディファクトスタンダードに食い込んでいくのは懐疑的だよ
PCのOSしかり携帯しかり
0176デフォルトの名無しさん
垢版 |
2023/04/16(日) 12:54:37.30ID:vDeFqoK0
> PCのOSしかり携帯しかり
LinusもRust導入に舵切ってるし、MSもRust採用始めてるんですがそれは
0179デフォルトの名無しさん
垢版 |
2023/04/16(日) 13:13:32.51ID:olscUowK
そこで止まっちゃってないかってことじゃねえの、しらんけど

Windowsには、これが出てるけど…
https://github.com/microsoft/windows-rs

そこにあるサンプルからして、unsafe{ } じゃ、説得力ないよな
>>16-17 に書いた通りだよ Win32 APIに所有権情報が付いてなかったらなんにもならない
MS Rustチームもっと仕事しろ
0181デフォルトの名無しさん
垢版 |
2023/04/16(日) 13:33:14.21ID:FzlfbndA
Rust for Linuxは現状ドライバをRustで書けるようにしましたってだけ
Rustで置き換えて安全化!なんてわかりやすい成果は現状出ていない
何回言わせんねん
0182デフォルトの名無しさん
垢版 |
2023/04/16(日) 14:40:27.93ID:E0OdAeYg
Rustと違ってC++にはEditionがないからね
safe/unsafeを導入するの10年経っても無理
Clang-Tidyのような外部ツールで頑張るしかない
0184デフォルトの名無しさん
垢版 |
2023/04/16(日) 14:56:50.63ID:MEMXejP0
>>183
Editionが何かも知らんのかw
そんなんでよく書き込みするなぁ
0186デフォルトの名無しさん
垢版 |
2023/04/16(日) 15:04:13.74ID:ztY5oQ1H
>>159
これまでの会話からして、この板の人は、証明しても誰一人として理解できない
から時間の無駄であることが分かった。
恐らく、10年後くらいにやっと理解できるかも知れない。
そういうものだ。
0189デフォルトの名無しさん
垢版 |
2023/04/16(日) 16:23:46.35ID:3uC0HhdE
C++はEditionがどうとか以前に、方言だらけなわけだが

なので、所有権関係が取り込まれるのも早いとこは早いかもね
0190デフォルトの名無しさん
垢版 |
2023/04/16(日) 18:22:08.94ID:Odg0MqUb
C,C++は1995~2000年ごろGCブームが来てて
大学の課題もGC使ってた
当たり前に使ってた
取り込まれるのかと思ったら取り込まれなかった

今は潤沢なメモリがあるからメモリリーク放置violation放置みたいだけどそもそもがc++じゃなくてpython使ってるみたい
0192デフォルトの名無しさん
垢版 |
2023/04/16(日) 19:35:35.63ID:YK5TrmOw
>>166
学習コストは確実にRustの方が低くて覚えやすい
所有権関係はunique_ptrすらなくシンプルなRustがわかりやすいのは言うまでもないが
あらゆる分野で整理されて高機能になるとともにわかりやすくなっている
例えばイテレータにしてもC++はC++20でようやく機能強化と大整理が行われたが普及には程遠い
0193デフォルトの名無しさん
垢版 |
2023/04/16(日) 20:16:07.19ID:66qnCtAq
>>192
初めて覚えるのがRustってんなら否定はしないが
所有権システムは他の全ての言語と勝手が違うからね
C++ユーザならある程度は分かるけども

>例えばイテレータにしてもC++はC++20でようやく機能強化と大整理が行われたが普及には程遠い
これなーに? ついて行けてないんだけども便利なのあるかな?
0194デフォルトの名無しさん
垢版 |
2023/04/16(日) 21:24:14.05ID:2esMCHbQ
言語仕様でごちゃごちゃ議論したがるのはコードまともに組めない奴
これ豆な
0195デフォルトの名無しさん
垢版 |
2023/04/16(日) 21:38:23.17ID:iwQlkKnY
単純な話だよな
所有権の概念の学習コストはC++もRustも同じ
所有権の実際の使い方の学習コストはunique_ptrすらないRustが易しい
学習コストでC++に勝ち目はない
0196デフォルトの名無しさん
垢版 |
2023/04/16(日) 21:53:57.59ID:66qnCtAq
>>195
差分としているunique_ptrの学習コストってなんやw
問題にしてるのは他の言語との変数の振る舞いにRustのみ乖離があるということ
プログラミングをRustで始めるんなら
プログラミング言語の変数ってそういうもんだと覚えるから
たぶん問題にはならん
0197デフォルトの名無しさん
垢版 |
2023/04/16(日) 22:01:26.81ID:oa9zAGJK
C++でも所有権くらい知らないと話にならないので、所有権があるからRustは学習コストが高いとの主張は無理があるんじゃないかな
それにプログラミングができる人にとって所有権なんて大した難しい話じゃないし、誤差でしょ
0199デフォルトの名無しさん
垢版 |
2023/04/16(日) 22:07:10.90ID:3uC0HhdE
まあ、「C++書けます」とか、そうそう口にできないよな
「Rust書けます」…も似たようなもんな気も
0200デフォルトの名無しさん
垢版 |
2023/04/16(日) 22:09:18.55ID:bqya4Wdu
総じて学習コストの高いC++が不利というかさ
拡張が建て増しになってるため無駄に覚えなければいけないことが多すぎなんだよね
学習コストはRustが少なく楽
■ このスレッドは過去ログ倉庫に格納されています

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