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

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

っていう雑談スレ。

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

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

関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/10/28(土) 13:45:36.64ID:fh9BWjjr
あるあるトピックス
・後発のRustは優れている(この点で特に争いはない
・といっても、C/C++から「推し変」するほどじゃない(使わないとは言ってない
・ていうか、Cとの比較と、C++との比較は違うくね?
・いくら安全っつっても、ヘタクソがunsafeだらけに書いちゃったらおんなし
・てかC++にも unsafe{ } はよ

・web方面、特に基盤部分での人気すごいね
・ChatGPTとかが賢くなる(のに賭けてる)からどうでもいい
3デフォルトの名無しさん
垢版 |
2023/10/28(土) 13:50:00.20ID:1iiYkiVL
スレ立て乙
unsafe {
2023/10/28(土) 14:37:18.81ID:o0Izqpe5
次スレいらんわボケ
2023/10/28(土) 16:34:04.19ID:enMMtIYH
ネットインフラが次々とRust製になっていってる

>【CDN世界トップシェアCloudflare】
https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html
>CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、
>同社自身がRust製のHTTPプロキシである「Pingora」を開発し利 用していることを明らかにしました。

>【クラウド世界トップシェアAWS】
https://japan.zdnet.com/article/35183866/
>Rustで構築されたAWSサービスの例としては、
>コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
>「Amazon Simple Storage Service(S3)」、
>「Amazon Elastic Compute Cloud(EC2)」、
>コンテンツ配信ネットワーク「Amazon CloudFront」、
>LinuxベースのコンテナーOS「Bottlerocket」などがある。
2023/10/29(日) 07:04:58.86ID:/j90tPs+
プログラミング言語「Rust」は世界のセキュリティレベルを底上げする
https://wired.jp/article/rust-secure-programming-language-memory-safe/

Androidでは今、暗号鍵を管理する機能の多くがRustで書かれているとGoogleのクライダーマーカーは話す。
たとえば、暗号化したインターネット通信の機能である「DNS over HTTPS」、新バージョンの超広帯域無線(UWB)チップスタック、
そしてグーグルの独自のチップである「Tensor G2」で使用される新しい「Android 仮想化フレームワーク(AVF)」 などだ。

また、BluetoothやWi-Fiなどの通信接続に使われるスタックも、Androidの開発チームによってRustへの変換が積極的に進められている。
理由は、これらが業界の複雑な標準規格に基づいており、脆弱性を多く含む傾向にあるからだとGoogleのクライダーマーカーは付け加える。
つまり最も狙われやすい、あるいは最も重要なソフトウェアの部分からRustに書き換えて、
そこから徐々に広げることで段階的にセキュリティ上の恩恵を受けようという戦略なのだ。
2023/10/29(日) 09:34:40.05ID:7Lr6oJeR
>>1
・・・で、結局どっちが良いの?
8デフォルトの名無しさん
垢版 |
2023/10/29(日) 11:34:03.80ID:GrwAVmld
>>2
C++はデフォルトがunsafeだから、入れるならsafe{}じゃないのけ?
2023/10/29(日) 11:55:56.89ID:jrKbdvhX
デフォルトをsafeにするって話やろw
そうすると現行のライブラリはビルドできないので取り敢えず全部unsafeで囲う
バージョンを重ねてunsafeの部分を減らすって戦略でしょ?
2023/10/29(日) 12:10:31.41ID:rFgSsne0
>>8
それ意味ないのわかんない?
2023/10/29(日) 12:58:33.36ID:gLyKM6Q0
null safetyですら無理なんだからunsafeなんて夢のまた夢
12デフォルトの名無しさん
垢版 |
2023/10/29(日) 13:01:53.93ID:IsQ6p7Vf
positive list と nagative list の違いやろ
どっちも一長一短があるってだけで
どっちが一方的に優れているということではない
2023/10/29(日) 13:06:42.15ID:x+5RB5aB
前者が明らかに劣ってるのは自衛隊見れば明らかじゃん
2023/10/29(日) 14:22:40.43ID:IsQ6p7Vf
青山繁晴ファンですね判ります
15デフォルトの名無しさん
垢版 |
2023/10/29(日) 14:24:26.17ID:IsQ6p7Vf
ちなみに Rust の unsafe {} は positive list に相当すると思う
2023/10/29(日) 16:22:18.96ID:UpWU1GX+
時代は静的検出なので、冒頭に

#pragma safe

とかでも書くとかになるんじゃないかな
そのうしろに、縛りの識別子が入るのでもいい
2023/10/29(日) 16:22:22.63ID:B2pW3CpU
unsafe {}ってなに?
ポインタ扱えなくするやつ?
2023/10/29(日) 18:07:40.10ID:UpWU1GX+
} // あとでみなおす

とりあえず生ポはなしかな
ポインタはきちんと定義される
19デフォルトの名無しさん
垢版 |
2023/10/30(月) 01:11:12.37ID:SHIqNVOV
>>9
あー、そういうことね。
2023/10/30(月) 14:08:13.49ID:yf48i6Jz
前スレ
>>997
HashMapはとVecは異なる型なので直接代入できない
一般的に入力イテレータinput_iterからHashMapを作るには
HashMap::from_iter(input_iter)とすればよい
これは代入先の型がHashMapの時のinput_iter.collect()と同じ
collect()の正体はfrom_iter()を呼ぶだけ

ちなみにfrom_iter()はFromIteratorトレイトのメソッド
引数としてIteratorだけでなくIntoIteratorも取れるため
今回の入力ベクタinput_vecに対してinto_iter()せずとも
そのままHashMap::from_iter(input_vec)と書ける
一方でcollect()を使う場合これはIteratorのメソッドなので
明示的に変換してinput_vec.into_iter().collect()となる
21デフォルトの名無しさん
垢版 |
2023/10/31(火) 05:55:29.82ID:DJT4usEp
ゲーム業界はC++かC#
Rustが入る余地なし
22デフォルトの名無しさん
垢版 |
2023/10/31(火) 08:54:10.63ID:5Lja4y81
Rust がリファクタリングと相性が悪いんじゃないか
と思うことが時々というより割と頻繁にある
2023/10/31(火) 10:17:54.25ID:Fz0aDVxr
設計が悪いおじさん「設計が悪い」

…とはいうものの、書き味ってもんがあるよね言語って
2023/10/31(火) 20:53:25.14ID:1IgY5W3A
難しそうという直感でリファクタリングを中止できるのは損なのか得なのか
2023/10/31(火) 22:01:39.08ID:PwivvYFW
Rustはリファクタリングや更新メンテとの相性いいと思う
C/C++で他人もしくは過去の自分が書いたコードの肝の部分をうっかり踏み抜いてメモリデバッグコースとなるところを
Rustは未然に防いでくれてる
2023/10/31(火) 22:13:21.13ID:3AsVVcfX
リファクタリングでエンバグしにくいけど、そもそもリファクタリング自体しにくいよね
2023/10/31(火) 22:25:05.59ID:NeIS8/9C
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2687r0.pdf
C++はfeature gate方式でアノテーションした箇所のみ
static analyzerでチェックする方針で一応進み始めてるのね

なんというか過去の資産を生かすというのは大変なんだな
Rustと同レベルのsafetyが提供できるようになるかどうかまだわからないけどまあ頑張ってという感想
2023/11/01(水) 03:51:28.75ID:5z6NYMjm
悪い(かも知れない)設計を
良い(かも知れない)設計に
するのがリファクタリングのモチベだと思うので
元の設計が悪い(かも知れない)のは仕方ないが
良い(かも知れない)設計に変更するのを阻む力をRustはもってる
もちろんリファクタリングでエンバグしない利点は認めている
2023/11/01(水) 03:53:16.74ID:5z6NYMjm
更新メンテでエンバグしないと言っても
汚いコードが汚いまま増設されていく不安しかない
2023/11/01(水) 05:10:40.48ID:fNUPqUoJ
リファクタリングなんてもんは無能な働き者がすることよ
2023/11/01(水) 08:38:55.26ID:TrWFH7YA
以上、無能な働き者の感想でした
2023/11/01(水) 08:49:48.50ID:VeDR0B8A
耳が痛いわ〜w (横から

>>27
走り読み…と思ったら、かっちりしたまとめだった
型に含めることばっかり(自分なりに)考えてたが、属性かー。

ああそういや、VCの属性プロバイダ、API公開まだだったよな
33デフォルトの名無しさん
垢版 |
2023/11/01(水) 09:15:51.82ID:QJoNTbA8
borrow! またお前かっ!!
ですね
判ります

あとは C# みたいな PartialTrait があれば良いのに
2023/11/01(水) 09:29:13.02ID:g0uNXVFl
>>28
他の言語との比較も含めて具体的な例を上げてくれないと
何が困ってるのかよくわからん
2023/11/01(水) 11:28:14.65ID:r0MV67Oa
>ゼークトの組織論において、もっとも害のある存在とされるのが、無能な働き者(愚鈍:勤勉)タイプの人材です。正しい判断力や行動力が備わっていないにもかかわらず、自身の判断で行動してしまう特徴を持っています。いわゆる「余計なことをしてくれる」タイプの人材です。 無能な働き者が動くことで間違った判断により損害が出たり、周囲が後始末に追われたりといった混乱を招きます。しかも、本人は「よかれと思って動いている」点が、大きな問題となるのです。
2023/11/01(水) 11:36:32.25ID:r0MV67Oa
無能な働き者は放置しておくことで、組織にとって大きな損害をもたらすリスクとなります。
努力や判断のベクトルが間違っているだけで、意欲的な人材であるかもしれません。適切に関わり軌道修正を図れば、組織に貢献してくれる人材になってくれるかもしれません。この困ったちゃんを相手にする余力が会社や関係者にあればよいのですが、そうでない場合は自己都合退職へ誘導し、早めに組織から追い出しましょう。
2023/11/01(水) 12:40:12.80ID:8C4ZzEMt
軍人を4つのタイプに分類する「ゼークトの組織論」と呼ばれる軍事ジョークがあり[注釈 2]、ゼークトが以下のように語ったとされる。
---------8<----------8=------
これは実際には同時期のドイツ軍人であったクルト・フォン・ハンマーシュタイン=エクヴォルトが副官に述べたとされるもの[31]が元になっている。
2023/11/01(水) 19:08:00.09ID:gqkX1mpA
いつの間に、こんなに積極的に、異物は排除しましょうなんて世の中に深化したのかねえ
世知辛い
2023/11/01(水) 19:59:16.09ID:r0MV67Oa
>>38
>いつの間に
いつと問われれば人が集落として生活するようになるぐらい古代から…なんじゃね
村八分とか神隠しとかぐらいは聞いたことあると思うけど
司法がない時代は私刑が日常的に行われていたんだよ
今は法律もあるしネットで大騒ぎすれば助けてくれる奴も出てくるだろうけど
属していた会社なり組織からは切り離される形に落ち着くだろうね
2023/11/01(水) 20:11:22.67ID:mATsi7Ug
Rustはリファクタリングでのエンバグ防止も強力で開発効率良いな
2023/11/01(水) 22:31:20.11ID:H181/maX
>>38
嫌なら見るな
嫌なら出ていけ
2023/11/01(水) 23:11:21.03ID:FbXsZBSZ
競技プログラミングでは何でみんなc++なのですか
43デフォルトの名無しさん
垢版 |
2023/11/02(木) 02:07:29.05ID:uLntp6kp
>>42
Rust使ったことないだろ
44デフォルトの名無しさん
垢版 |
2023/11/02(木) 09:27:36.71ID:kxWwWLf8
>>36
東近江市市長ですね判ります
45デフォルトの名無しさん
垢版 |
2023/11/02(木) 09:30:06.68ID:kxWwWLf8
>>39
私刑の大半は「自分が気に入らない相手を消す」だろ
2023/11/02(木) 10:28:31.37ID:e3rN7I7Z
ゼロサムゲームなんだよねえ あいつがいると、こっちの幸せの取り分が減る
47デフォルトの名無しさん
垢版 |
2023/11/02(木) 11:00:23.03ID:NLwKfBpd
C++のchrono
Sun=0, Mon=1, ..., Sat=6
Rustのchrono
Mon=0, Tue=1, ..., Sun=0
なんかの嫌がらせか?これ
48デフォルトの名無しさん
垢版 |
2023/11/02(木) 11:01:31.85ID:NLwKfBpd
訂正
C++のchrono
Sun=0, Mon=1, ..., Sat=6
Rustのchrono
Mon=0, Tue=1, ..., Sun=6
なんかの嫌がらせか?これ
2023/11/02(木) 11:38:23.20ID:SgY2tw2G
>>48
enumで処理するもんじゃないの?
2023/11/02(木) 12:27:57.80ID:e3rN7I7Z
いっしょは嫌だったんじゃない? (はなほじ
2023/11/02(木) 13:14:01.78ID:sR7LRQS1
>>49
0と7が日曜だと便利なんだよ
なんで変えちゃったのかね
2023/11/02(木) 14:01:21.75ID:26D/b4Fo
おまえら全員エアプログラマーだな
Rustのchronoは両対応で困ることはない
num_days_from_sunday()だと日曜日から0発進
num_days_from_monday()だと月曜日から0発進
53デフォルトの名無しさん
垢版 |
2023/11/02(木) 14:21:03.74ID:R1/lC5p9
ISO8601では月曜は1で日曜は7なんだよな。
2023/11/02(木) 14:43:04.82ID:26D/b4Fo
>>53
Rustのchronoが日曜スタートと月曜スタートの両対応にしている理由がそれ
C++のchronoでISOに変換するには日曜日だけif文するか再び%7する必要がある
2023/11/02(木) 15:51:19.67ID:C/SY5g2v
たぶん何も考えてない+誰も使わないから放置されているだけだね
Mon=0固定の前提でTryFrom<u8>なんか実装してるし
2023/11/02(木) 16:27:45.50ID:26D/b4Fo
そこは言語によって異なるんだよ

Pythonは月曜スタート
weekday() 月曜日=0 ~ 日曜日=6
isoweekday() 月曜日=1 ~ 日曜日=7

Javaも月曜スタート
DayOfWeek 月曜日=1 ~ 日曜日=7

だから両対応しているRustが最も良い状況
2023/11/02(木) 20:37:31.47ID:YFXMye4z
曜日の内部表現とかどうでもいいだろ…
2023/11/02(木) 21:59:20.29ID:SgY2tw2G
HTTPでJSONやりとりしてるとき思い込みで
バグになるというのはあるかも
2023/11/02(木) 23:52:30.67ID:M3hXBmrb
今回のchronoでイチャモン始めたやつも
日曜日開始のC++しか知らなくてそれが正しいと思い込みをしてたからな
月曜日開始のISO8601とそれに従うプログラミング言語を一つでも知っていればそんな勘違いは起きなかった
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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