結局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/
362デフォルトの名無しさん
垢版 |
2023/11/15(水) 11:35:20.23ID:PvDO1mrU
>>360
そういわれると、たしかにコードの置き換えとしては進んでない感じするな
まだ実験検討段階って感じか
2023/11/15(水) 12:21:37.48ID:no7PoE7H
>>356
世間知らず
クラウドインフラの技術が集結してる
2023/11/15(水) 12:27:36.50ID:teqcURmf
>>347
「コスト」が最大の理由だろ。
コードをRustに置き換えるだけでも膨大な手間と時間がかかる。

そもそもLinusとかのメンテナがRustを使いこなすのに何年費やすかね。そんな時間があったら現環境で機能強化するわな。
2023/11/15(水) 13:00:57.66ID:no7PoE7H
clangでのビルドにも慎重なのにrustで置き換えなんか進むわけない
そもそも書き換える行為に生産性がないのだから
せいぜい新しく書くところで部分的に使っていきましょうとなる
だからドライバでとなる
366デフォルトの名無しさん
垢版 |
2023/11/15(水) 13:19:00.88ID:ywV5GNL0
Rustの本家本元のfirefoxのソースコードでも
Debianの115.4.0esr-1~deb12u1を調べると以下の通りだよ
Rust(*.rs) 15%
JS(*.js) 35%
C++/C(*.cpp *.cxx *.c *.h) 50%
LinuxでRustがCを置き換えるなんてことは
>>341の言葉を借りて「未来永劫」ないとないと言い切ってやろう
2023/11/15(水) 14:07:32.56ID:g71OGRWz
>>366
単に物量の問題だろ
何百万行あると思ってるんだよ
368デフォルトの名無しさん
垢版 |
2023/11/15(水) 14:11:39.36ID:ywV5GNL0
>>367
ざっと2千500万行だね
2023/11/15(水) 14:24:01.47ID:kSRDfKJq
30年の積み重ねを置き換えるのに30年…
とまでは行かなくても5年で大部分書き換え
とかはならんだろう
2023/11/15(水) 14:51:21.03ID:6FugGo49
元々Cで造られたプロジェクトを一部だけRustに置き換えなんて面倒なだけでメリット無い
どうせRustでやるんだったら全部描き治しの方が良いに決まってる
Rustで置き換えと言うよりRustで新たにLinux互換プロジェクトが出来上がるだけ
2023/11/15(水) 14:56:46.34ID:/tSVEj7/
>>368
ひぇっ
372デフォルトの名無しさん
垢版 |
2023/11/15(水) 15:12:05.87ID:PvDO1mrU
Andoroidは置き換え比較的進んでるよ、事実だしこれは否定しようがない。

>>356が言うようにLinuxはメンテナーが少なくなってきてるという記事を読んだことがある。
Cを本当に使える人が減ってきてるんだってさ。AIとかに流出してるのかもね。
Linuxは長い実績で堅牢なんだろうけどまだ脆弱性を含んでいるのは間違いないし。
メンテナーのレベルが落ちると長年で培った堅牢性がゆらいでいくんじゃない?
時間かけてじわじわいくよ。
2023/11/15(水) 16:57:42.00ID:HubpN1/i
>>372
カーネルに新機能追加する人は給料貰ってフルタイムで
やってる人がいるけどコードレビューする人は
ボランティアベースで辛いという話だぞ
2023/11/15(水) 18:15:25.04ID:/tSVEj7/
>>372
富士通の社員がやってるんじゃないの?
2023/11/15(水) 18:31:31.15ID:c9l3XMad
GoogleがAndroid OSのRust化を進めている
2023/11/15(水) 19:02:01.02ID:V2KbO/sW
都合の悪い話されるとすぐそうやって話題変える
377デフォルトの名無しさん
垢版 |
2023/11/15(水) 21:13:40.04ID:ywV5GNL0
>>372,375
プログラマなんだから話は定量的にどうぞ
378デフォルトの名無しさん
垢版 |
2023/11/15(水) 21:36:10.57ID:2QF9cM/v
トランスレータ作ればいいのにね
2023/11/15(水) 21:48:13.78ID:FmmLZXFq
Linux Kernelコードの70%はドライバー
こいつらは基本的にデバイス屋さんが書いてる
2023/11/15(水) 23:20:59.98ID:9Wll1i1V
>>372
>Cを本当に使える人が減ってきてるんだってさ。

×Cを本当に使える人が減ってきてる
○Linuxをメンテしたい人が減ってきてる
大事な所を履き違えんなよ
2023/11/15(水) 23:25:45.67ID:/tSVEj7/
Linusは自分がいなくなっても継続できるようにしてると言ってたけどホントかいな
2023/11/16(木) 02:20:43.10ID:YE0GrThs
ああいうワンマン強引タイプの周辺はだいたい
イエスマン(しかも心中はそのうち取って代ってやると思ってる野心家)ばっかりになってて
本人は継続できるようなつもりになってるけどいざ倒れると急におかしな方向いったり弱体化したりしがち
2023/11/16(木) 07:32:35.40ID:nbKqUUuT
>>381
もう本人コード書いてないし
2023/11/16(木) 09:47:18.38ID:wNLmB51s
カーネルの話にAndroidを出してくる奴
385デフォルトの名無しさん
垢版 |
2023/11/16(木) 10:24:39.57ID:csSKyxVc
>>383
リーナス氏はカーネルを書いただけの人で、Linuxはgnuの周辺が無ければ成立しないんだよなぁ
2023/11/16(木) 10:36:18.81ID:c22vQqL3
ニュース記事を斜め読みしただけで
プログラム書いてなさそう人が参入してるな
2023/11/16(木) 10:58:48.69ID:oAo4ftxR
複おじのことやん
2023/11/16(木) 11:04:24.85ID:JqwSNCs1
>>384
GoogleがAndroid用にforkしたLinuxカーネルへ加えた変更がアップストリームにも適用されることが多々あるから別におかしい話じゃないぞ

Androidと関係なくてもGoogle自体がLinuxカーネルを進化させてるメジャープレイヤーでもある
2023/11/16(木) 11:05:25.04ID:wNLmB51s
rustサポートって何してるのか気になってコミットログ読んでみたけどこんなもんか
2023/11/16(木) 11:15:44.45ID:cWrKpE+4
>>385
なおさら駄目じゃね?
GNUツールのRust移行とか不可能だろ。
391デフォルトの名無しさん
垢版 |
2023/11/16(木) 11:20:28.08ID:QXdh7keC
>>376
ほんそれ

>>382
すばらしい洞察
2023/11/16(木) 11:23:05.99ID:5W7eUxhr
既存の枯れた部分を移行するメリットは低くそこに興味を持っているのはおまえらだけ
全く新たに作られていってるシステムなどに使われていく言語が世間での焦点
2023/11/16(木) 11:36:03.27ID:oAo4ftxR
>>392
なるほどはっきりしたな
RustはC/C++の置き換えには適さない

以上!!!!本スレは終了!!!!
2023/11/16(木) 11:40:52.68ID:5W7eUxhr
既存の枯れた安定してるものを他言語で置き換えなんてムダなことをするバカはいない
>>5のような新たなシステムがどの言語で書かれているかが全て
2023/11/16(木) 11:44:41.17ID:c22vQqL3
>>388
AndroidのRust適用はミドルウェアとか
実行ファイルの話
396デフォルトの名無しさん
垢版 |
2023/11/16(木) 11:52:51.95ID:nxuWB9A/
>>394
新規のシステムもRustよりC++/Cの方が多いでしょうよ
Rustはユーザ数が少な過ぎる
2023/11/16(木) 11:59:45.29ID:oAo4ftxR
>CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、

>>394「C言語製の枯れて安定してるnginxをわざわざRustで置き換えるCloudflareはムダなことをするバカ」
2023/11/16(木) 12:24:14.05ID:AwpJQf7l
>>397
Pingoraの話じゃないの?
2023/11/16(木) 12:31:03.07ID:1vSd70Wx
>>397
記事読めてる?
nginxでは機能が不十分で様々な検討をして新たに作ることになったとある
そしてRust製のPingoraを開発して以下の性能を出したと記事に書かれている

>Pingoraはすでに同社のCDNに採用され、毎日1兆回以上のリクエストを処理し、性能向上や数多くの新機能の提供を実現しつつ、従来と比較してCPUとメモリリソースの消費はいずれも3分の1程度に収まっているとのこと。
2023/11/16(木) 12:42:36.36ID:c22vQqL3
>>397
nginxでは性能の限界があってRustで新規に
作ったと記事の読み飛ばしたところに
書きてなかった?
401デフォルトの名無しさん
垢版 |
2023/11/16(木) 12:47:30.32ID:QXdh7keC
APIがRustになってないとRust採用する意味が無い
2023/11/16(木) 12:53:18.79ID:1vSd70Wx
>>401
今回の話の場合APIに相当するものはHTTPだと思いますが
APIがRustになっていないと、とは何?
2023/11/16(木) 12:53:44.43ID:oAo4ftxR
nginxの代わりに使えるものを「新しく」作ったのだからPingoraはnginxの「置き換え」ではないと言いたいのか??
じゃあ>>392の言う「移行」>>394の言う「置き換え」って厳密には何のことを指すんだ??
2023/11/16(木) 13:04:58.32ID:1vSd70Wx
たとえ後発のより良い新言語(ex. Rust)であっても
システムそのままで新言語への置き換えはコスト的に意味がなく
新たなシステムへ置き換える時に新言語の採用は大いに意味があるという実例だろう
405デフォルトの名無しさん
垢版 |
2023/11/16(木) 13:27:53.62ID:6XhGio1W
403 は言葉使いからして感情でしか物事をみれない
2023/11/16(木) 13:37:39.61ID:GrubNHks
>>383
一応メールの中でコードを書いてるって言ってたけどね
2023/11/16(木) 13:40:47.78ID:GrubNHks
>>397
そりゃCloudflareレベルの規模ならメリットはあるだろう
メリットがあるなら書き直すし
メリットがないなら書き直さない
それだけ
2023/11/16(木) 14:28:52.70ID:U5aa+aRa
>>394
置き換えがしたいという意志があるとは誰も言ってない
そもそも修正と新規作成をどうしても区別したいという意志がない

ただ、ミクロな意志と無関係なマクロな現象として
置き換えが自然発生するかも知れないという謎の空気はある
2023/11/16(木) 15:09:24.13ID:IFD1cI+g
early adoptersやearly majorityになるのは
Linuxのperipheralとしてビジネスをしている企業ではなく
Linuxをperipheralとしたビジネスをしている企業

前者の大半はゲームのルールを他者に支配されている立場であり裁量の余地が小さいためマインドセットが保守的
純粋なコストベネフィット以外に低いリスク選好度からくる心理的抵抗が強いためearly adoptersやearly majorityにはなりにくい
複オジがいつも事例であげてるAndroid、Cloudflare、AWSなどが全て後者なのは偶然ではなく構造上の特性から生じる必然
新しい技術というのはゲームのルールを自らコントロールできるこちら側の企業によって牽引される
2023/11/16(木) 15:14:00.47ID:IFD1cI+g
つまり何が言いたかったかというと
Linux KernelにおけるRustの採用率というのは
技術採用ライフサイクルの観点で見た場合
late majorityやluggardsのRust採用率の目安だということ
411デフォルトの名無しさん
垢版 |
2023/11/16(木) 15:14:30.69ID:QXdh7keC
adaptor だと思ってたけど adopter なんか
2023/11/16(木) 15:24:27.23ID:JRjQuxlT
>>410
× luggards
○ laggards
2023/11/16(木) 15:29:19.80ID:FRf+5dUd
early adopter とは
https://dictionary.goo.ne.jp/word/en/early+adopter/
アーリーアダプター,(新製品の)初期受容者

adopter とは
https://dictionary.goo.ne.jp/word/en/adopter/
1 採用[採択]者
2 養い親,里親
2023/11/16(木) 16:41:51.84ID:cWrKpE+4
>>403
コードの移行、コードの置き換え。

>397は>370の例だろ。
2023/11/16(木) 17:06:23.69ID:DQsCMcKm
それぞれのケースで大きく異なるから区別が必要

(1) 新規に作るもの
CloudflareやAWSの例やゲームの新フレームワークやLinuxの新たなデバドラ等すべてこれ
これらは100% Rustが有利

(2) 既存のソフトの言語のみの置き換え
(2)-a. スクリプト言語などからの言語の置き換え
CPUやメモリの使用リソース削減が目的ならばRust化は有利

(2)-b. C/C++からの言語の置き換え
セキュリティやメモリ管理の不安定で困ってる時にRust化が有利

一般的に可能なら(2)の単なる言語間の移植よりも
設計を見直して(1)の新規作成とした方が好ましい

>>399でCloudflareがCPUメモリリソース消費1/3にできた例も
単なるC→Rustへの(2)移植ではなく
新たな設計での(1)新規作成だからであろう
2023/11/16(木) 17:13:48.99ID:GrubNHks
C/C++から書き直すにしても設計をそのまま使えないことが多いから
かなり大変なんだよな
とくに参照やポインタだらけで全部ヒープアロケーションしまくってる場合とか
C++でもその辺りポインタを多用せずスマポやスタック割り当てをうまく使って書いてあるソフトは移植しやすい
2023/11/16(木) 17:41:46.11ID:cVeFFprT
どの言語からでもいいけどRustに移行するのにプログラム設計もそのまま引き継いだ自動コンバージョン的な移行を想定するほうがおかしいやろ
そんなんありえんよ
2023/11/16(木) 17:41:52.36ID:nV/QBQ73
C/C++にRust世代の知見が流入してくることに賭けて、待ってる勢はあるはず 自分はそう
それもあるけど、いまあるRustから前線で知見を得ようという勢もあるはず
2023/11/16(木) 17:47:05.98ID:nV/QBQ73
>>417
C/C++もclangがいったん咀嚼してLLVMにしてる
Rustにトランスパイルするのは非現実的とまではいえないはず
うまくいけば、Linuxは一夜にしてpure Rustになる
Rust派の誰かがやるんじゃないかと思ってる
2023/11/16(木) 17:51:33.13ID:xS+g93Tz
>>417

いつもの藁人形論法

AWSが最初からRustで構築されたとでも思ってんのかね
2023/11/16(木) 17:55:14.82ID:GrubNHks
全てスタック変数で割り当てる
コピー時に適切なムーブをする
ヒープが必要なところはスマポを使う

これをちゃんとやればC++をrustに置き換えることは可能
しかしこれをやってるC++プロジェクトはない
2023/11/16(木) 17:56:48.64ID:GrubNHks
>>420
そいつの意見を真面目に考えてて草
2023/11/16(木) 18:05:24.97ID:nV/QBQ73
ま、雑談だから
ストローマンは愚痴

一頃のC++はなんでもかんでもヒープに置きすぎだったよね
まあ、お膝元のスタックがそんなでかくない石・スレッドも少なくないけど
2023/11/16(木) 18:12:37.43ID:C/58Cd2m
>>419
わざわざLLVM IRまで降りて戻ってこなくてもc2rustとか最低限のトランスパイラはいくつかあるぞ
出力結果は作業の開始地点として使うものでそのままプロダクションに使うものじゃない
2023/11/16(木) 18:27:30.00ID:nV/QBQ73
c2rustの出力をあんまり手直しばっかりしなくていいように、
入力のCにアノテーションを加えていこう、みたいな動きは必ず出ると思うんだよね
良くも悪くもCはマクロ世界だから、当面関わってない人には影響ゼロなようにも書けるはず

そのアノテーションが、そのまま、safe C の礎になればいいんだよ
2023/11/16(木) 18:28:02.28ID:jjq/yUIi
ああ、ストローマンは自動コンバージョンに反応したのか
“的な”の意味が通じなかったんだな
427デフォルトの名無しさん
垢版 |
2023/11/16(木) 18:39:53.99ID:RH2XyDS1
>>397
記事を読めてないバカを晒すスレはここですか?
2023/11/16(木) 18:40:10.28ID:U5aa+aRa
LinuxはスクリプトとCの二刀流だ
PythonとCの関係はRustとCの関係にも使える

その知見が流入してこない原因はスクリプト不要論だろう
2023/11/16(木) 20:51:00.53ID:AwpJQf7l
>>423
だがスマートポインタはスタックに置いて参照渡ししたい。
2023/11/16(木) 23:13:12.09ID:BwM227bO
>>425
Cの安全性を高める目的ならトランスパイラではなく静的コード解析ツール用にアノテーションするほうが遥かに簡単
C++と同じようにCにもそういう動きが出てくる可能性はあると思う

ただ安全性を高めようとすればするほど既存のコードとはかけ離れていくからMISRAのように標準化され半強制的なものにならない限り広く受け入れられる気がしない

イメージ的には↓こういうやつ
浸透するとしても10年以上先だろうね
https://www.youtube.com/watch?v=Pk2RAl8kG1o
431デフォルトの名無しさん
垢版 |
2023/11/16(木) 23:35:15.35ID:nxuWB9A/
そこで奥さんChat-GPTですよ!
432デフォルトの名無しさん
垢版 |
2023/11/16(木) 23:43:26.30ID:4If2hIRf
>>430
Cの標準では今後も無い。
委員会がやる気ない。
2023/11/17(金) 00:28:52.66ID:XzLpc9VL
Cは他のお笑い言語とは違って俺が最初に手に取ったK&R第二版から変える必要無かったからな
2023/11/17(金) 00:34:46.03ID:UIKq6eA7
>>433
さすがにK&Rからは変わってる
(ギャグだったならスマン)
2023/11/17(金) 00:41:31.13ID:ofj+MCpV
C++もlifetime annotationどうするか決まってないんだな
一番めんどくさくてコードも汚くなる部分だからannotation周りの評価はlifetime+borrow checkerの出来次第だと思ってる
https://discourse.llvm.org/t/rfc-lifetime-annotations-for-c/61377
2023/11/17(金) 01:27:31.74ID:lIdOKj8F
やる気が暴走したPerlとかC++とかを過大評価するのは暑苦しい
やる気以外のルールはないのか
2023/11/17(金) 05:30:59.53ID:30xMjeDv
あー、Perlも好きだわーw
ドザなので、シェルスクリプト代わりに、中途半端な処理は全部お願いしてる
2023/11/17(金) 10:14:27.25ID:vs9w0Abf
>>436
無能な働き者がやる気を出すとね……
2023/11/17(金) 21:12:15.87ID:+5SAg77h
NGINXモジュールがRustで書けるようになった
https://www.infoq.com/jp/news/2023/11/nginx-modules-rust/
440デフォルトの名無しさん
垢版 |
2023/11/17(金) 22:09:06.15ID:HoPy7y+y
>>421
>コピー時に適切なムーブをする
これが恣意的すぎて自動的に対応できんわな。
2023/11/17(金) 23:36:50.31ID:FMmcnveO
>>436
その2言語は増築工事でダメになった
2023/11/17(金) 23:58:55.97ID:8WHR7HZ4
継承でダメになった、と言った?
ほぼそれに近い?
2023/11/18(土) 11:21:22.60ID:ZyDTP43o
立場によってはそう
継承に親でも殺されたんかって人なら、そう言うだろう

でもそれ、自分の推しの言語に継承かなにかが後出し採用されたら、ブーメランだぞw
2023/11/18(土) 11:36:22.09ID:XY0Izw3X
クラス継承(実装継承)は悪でプログラミング言語界が一致してるから後から継承の採用はないだろうな
過去のしがらみで継承を採用したSwiftやKotlinですら継承を使わずに済む機構などを採り入れている
445デフォルトの名無しさん
垢版 |
2023/11/18(土) 11:44:56.68ID:GRi2RJZB
その結果>>89が示す通りマイナー言語に留まっているじゃん?
ユーザ数を増やすことを優先しないと
数多あるマイナー言語の一つとして忘れ去られる
446デフォルトの名無しさん
垢版 |
2023/11/18(土) 11:52:32.21ID:GRi2RJZB
言語のユーザ数の増加要因として最大なのはユーザー数だよ
447デフォルトの名無しさん
垢版 |
2023/11/18(土) 11:58:51.53ID:63IqxYSZ
>>446
頭沸いてんのかおまえ、進次郎かよw
2023/11/18(土) 12:08:09.00ID:Q9aHTM00
それがわからんようでは、いっしょに旨い酒は呑めんなあw

わかれよーわかりきってんだろ再帰だろ
449デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:11:13.74ID:GRi2RJZB
>>447
微分積分はまだなのかな?
450デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:11:30.53ID:63IqxYSZ
ユーザー数の多いアプリやOSの開発言語が言語利用者数に影響してるんだろうがいw
2023/11/18(土) 12:22:30.52ID:moXb3tPD
方法が違うだけでRustやGoにも実装継承が採用されてる
SwiftやKotlinは過去のしがらみで実装継承を採用してるわけではない
目的に対して有益だから採用してるだけ

実装継承の乱用するやつも悪だと決めつけるやつも中身を理解してないという意味では同類だから
どの言語を使っていようがどちらも採用してはいけない
452デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:22:47.39ID:GRi2RJZB
>>450
dN/dt = cN
右辺は一次関数とは限らんだろうけども
新たに学ぶ言語を選択するときには
人は多くの人が使っている言語を選択する傾向にある
453デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:27:30.14ID:63IqxYSZ
>>452
そんなん仕事で開発する人には通用しないよw
開発対象がどのハードのどのOSで動かすかによって決まるからな
454デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:29:23.25ID:63IqxYSZ
しかし、パラメータの意味も説明も無くいきなり数式出す奴ってなんなの?
2023/11/18(土) 12:31:03.67ID:jiGs7deg
>>451
それは理解していなさすぎる
実装継承とはある型(クラス)に対して定義したメソッドが別の型(クラス)に対して引き継がれることを指す
Rustに実装継承はない
2023/11/18(土) 12:35:26.40ID:Q9aHTM00
継承はダメおじさん「継承はダメ」
IUnk教徒俺「うんこ->Release();」
457デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:38:02.55ID:GRi2RJZB
>>453
「仕事で開発する人」ってのは仕事の多さに左右される
新規の言語はまずユーザー数を増やさないと
この先生きのこれない
458デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:38:26.91ID:63IqxYSZ
多段継承は何だかなぁだけど
単純な基礎クラスに応用クラス乗せるくらいは許して欲しいなぁ
459デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:39:14.68ID:GRi2RJZB
>>454
Nってのは数
tは時間
cは定数
どれもよく使うから端折ったけども?
460デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:40:04.55ID:63IqxYSZ
>>457
だからユーザー数なんて増えないんだよw
その言語でしか開発出来ないスマホとかでも作らないとなw
461デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:41:04.57ID:63IqxYSZ
>>459
dは何よ?
2023/11/18(土) 12:42:08.12ID:Q9aHTM00
ダァン! ってやつだ

俺が考えた
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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