結局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/
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
ダァン! ってやつだ

俺が考えた
463デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:45:04.02ID:GRi2RJZB
>>461
>>449
2023/11/18(土) 12:49:36.30ID:zRkY2vB2
ネットワーク外部性 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E5%A4%96%E9%83%A8%E6%80%A7
465デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:49:49.32ID:63IqxYSZ
>>463
ならば進次郎にも分かる説明でないとダメだろ
466デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:54:44.31ID:GRi2RJZB
>>465
>>446に分かりやすく書いておる
467デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:55:17.22ID:63IqxYSZ
>>466
だからそれは否定されたろ
468デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:56:30.92ID:GRi2RJZB
>>467
誰に?
2023/11/18(土) 12:56:35.04ID:zRkY2vB2
仕事で使う技術選定の最大要因ってなんだかんだで利用者数の多さ(≒資料の多さ)になりがち
470デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:57:39.99ID:63IqxYSZ
>>468
俺にw
471デフォルトの名無しさん
垢版 |
2023/11/18(土) 12:59:42.63ID:GRi2RJZB
>>470
そりゃお前が読めてないだけだよ
>>452の最後の1行も平易に同じことを書いているので読んでね
2023/11/18(土) 13:00:29.94ID:9pS/cQYo
>>461
ワロタ
473デフォルトの名無しさん
垢版 |
2023/11/18(土) 13:03:35.26ID:63IqxYSZ
C++の資料なんか腐るほどあるが
今やC#かCしか生き残って無いだろw
474デフォルトの名無しさん
垢版 |
2023/11/18(土) 13:05:11.55ID:63IqxYSZ
Rustなんて使わなきや開発出来ないアプリなんか無いし
使う事は未来永劫無いだろうね
2023/11/18(土) 13:06:24.64ID:9pS/cQYo
書けない人がいくら叫んでも無駄
2023/11/18(土) 13:09:08.70ID:9pS/cQYo
Rust書けないからって嫉妬してるのはわかるけどそこまで逆恨みすることはないじゃん?
2023/11/18(土) 13:09:45.32ID:9pS/cQYo
それともここで煽られたから「Rustを書いてる人」が嫌いなのかな?
478デフォルトの名無しさん
垢版 |
2023/11/18(土) 13:42:18.00ID:GRi2RJZB
>>473
Debian bookwormのfirefox-esrのソースのうちcとc++を比較すると
ヘッダは区別がつかないので除外して
$ apt source firefox-esr
$ find firefox-esr-115.4.0esr -name *.cpp -o -name *.cxx | xargs cat | wc -l
4766467
$ find firefox-esr-115.4.0esr -name *.c | xargs cat | wc -l
3598263
4766467 / 3598263 = 1.3... C++がCの1.3倍程度
C++はヘッダのみで実装してしまうことも多々あるから1.3倍では済まないだろう
C++の方が多いのだよ
Rustは>>366に書いた通り全体の15%程度(総本山なのに)
479デフォルトの名無しさん
垢版 |
2023/11/18(土) 14:46:30.05ID:BPYzRrhj
それ過去に開発された言語が混ざってるよね?
480デフォルトの名無しさん
垢版 |
2023/11/18(土) 15:41:41.81ID:aHGnQ9F/
もうすでに15%もあるといった考え方は?現状の%を並べても5年どうなるかわからないんだし。
その調べかたからわかるのことは限定的だな。
その割合が年々減っていってるのならRustはだめだろうし。
2023/11/18(土) 16:00:47.99ID:Q+v8Z7oO
言語の変更は多くの場合システム改新などコードを書き換えるタイミングで行なわれる
また言語の変更をするか否かに関係なくモノリシックなシステムはシステム改新に不利でその点ではマイクロサービスなど多数で構成されるシステムが有利
OSカーネルやWebブラウザも同様でモノリシックに作られている場合は言語の変更に最も適していない
そのような最も適していない極端な特殊例を持ち出して数え上げることは無意味で無駄な行為
482デフォルトの名無しさん
垢版 |
2023/11/18(土) 17:15:55.14ID:rXJKESWN
一眼観て微分方程式だと判らないレベルの人は黙っていて欲しい
2023/11/18(土) 19:58:38.30ID:HxfHsjDi
それはわかったけど、英語そんな読めない俺、なんも言えず

教えてもらったRustの再評価? 論文、積ん読になってるんだよねえ
面白そうだったから忘れたことはないけど
484デフォルトの名無しさん
垢版 |
2023/11/18(土) 21:45:39.76ID:0cWoHYmK
>>444
一致してない
継承理解できずにアホな使い方する一部の人が勝手に騒いでるだけ
採り入れないとおまえみたいなのが無根拠に騒ぐからとりあえず採り入れてるだけ
2023/11/18(土) 22:49:22.88ID:zlAHanIg
モダンなプログラミング言語のうち、
過去のしがらみのある2つの言語を除いて、
すべての言語が継承をクラスごと排除して採用していないもんな
486デフォルトの名無しさん
垢版 |
2023/11/18(土) 22:53:24.96ID:GRi2RJZB
>>485
おかげで全てマイナー言語のままじゃん?
2023/11/18(土) 23:39:14.05ID:Wj/Y5gpw
切捨ては極端すぎる。まるで都合の悪いことは無かったことにする左翼の思想
継承はあった方が便利なんだよ
元々オブシコは継承機能が売りだったのに手のひら返してやっぱ合成でいいって、それC言語でもできることだし…
先祖返り…デグレード…設計ミスってことぉ?
2023/11/18(土) 23:51:56.62ID:WzRKAbU/
2010年以降にできた言語で広く使われてるのは
Kotlin, Swift, Dart, TypeScriptらのクラス継承のある言語
2023/11/19(日) 00:04:07.84ID:QnG3yXze
型のgeneralization/specializationはどの言語でも必須と言っていい機能でspecializeされた型でgeneralな型の実装を再利用できるというのは物凄く直感的でわかりやすく便利な機能だから完全に無くせば利便性を損なうだけ

Rustでも形を変えて実装継承が存在するのはそのため
2023/11/19(日) 04:16:47.88ID:RVJYDbf6
>>489
実装継承は問題点が多すぎるからRustでは採用されていない
実装継承とはある型で定義されたメソッド実装がその型を継承する別の型にそのまま継承されること
Rustは実装継承をちゃんと排除している
2023/11/19(日) 10:00:16.37ID:tWthAkiw
>>490
>実装継承とはある型で定義されたメソッド実装がその型を継承する別の型にそのまま継承されること
さすが進次郎
トートロジーが得意だな
2023/11/19(日) 10:14:54.62ID:xroD2KWj
継承が必須という人は>191 >195 >204に反論してくれんかね?

shared_ptr<function<T>>で、Tをコンセプトに拡張したものがイメージかね。コンセプトに合致する「インスタンス」なら何でも変数に代入できるようにできれば、わざわざ継承で「インスタンス」の代入可能性を確保する必要は無い。
493デフォルトの名無しさん
垢版 |
2023/11/19(日) 10:29:52.82ID:nljhlBVQ
>>492
継承で定義のコードを書く手間が減るだけでメリットになっている
デメリットうんぬんは使い方知らないだけ
使う場所間違えてる
以上
論破
2023/11/19(日) 11:09:12.91ID:xroD2KWj
>>493
ずいぶん貧弱な論破だなぁ。

>継承で定義のコードを書く手間が減る
そのために「事前にクラス継承関係をクラスに追加する」という余計な重たい依存関係を埋め込む必要があり、後々のインターフェイス設計に多大なコストが発生する。
依存関係低減のためにAdaptorを使うことになるなら、最初からインターフェイスにAdaptorみたいな機能があった方が良い。

>デメリットうんぬんは使い方知らないだけ使う場所間違えてる

あなたの感想ですか?
2023/11/19(日) 11:18:00.14ID:a8wUH91D
>>492
複オジはデメリットを真に理解してないから
どれレスでも的外れな内容になっている

>shared_ptr<function<T>>で、Tをコンセプトに拡張したものがイメージかね。コンセプトに合致する「インスタンス」なら何でも変数に代入できるようにできれば、わざわざ継承で「インスタンス」の代入可能性を確保する必要は無い。
継承の前にポリモーフィズムから勉強した方がよさそうだね
メリットとデメリットを理解してないというのは同じようだけど
2023/11/19(日) 11:25:06.19ID:xroD2KWj
>>495
おいおい、まともな反論できなくなったらレッテル張りかよ。

>ポリモーフィズム
だからポリモーフィズムにサブタイピングは依存関係重すぎると言っているんだよ。
std::funcionを理解できていますか?
2023/11/19(日) 11:34:23.07ID:h6lf9AUt
記述量が多くなる=悪は誰にでも判るだろう
RADが流行ったのも理解できるだろう
プログラマはいつも何を重視しているのか、それは時間だ
Rustでコンパイル通す時間よりC++でやった方が早かろう
C++でGUIアプリ作るよりC#でやった方が早かろう
さてRustでGUIアプリ作るには、一体どれだけ時間が掛かるのか
話は終わりだ
498デフォルトの名無しさん
垢版 |
2023/11/19(日) 11:39:08.94ID:JXkS/kRe
>>492
必須とは考えてないから反論はしない

ユーザが選択できれば良いんだよ
言語としては装備していて
害悪があると考えるならそう考えるユーザが使わなければ良い
他言語のライブラリを移植する際に
使った方が再設計の手間が掛からないというなら使えば良い
マイナー言語のまま終わるぞ
2023/11/19(日) 11:58:31.45ID:o0KxE9xi
数年でRustみたいな思想はAIが肩代わりしてくれると思うよ
今からRustで数年苦労するよりは
他の事しつつ待ってた方がもしかして有意義なんじゃないかな笑
500デフォルトの名無しさん
垢版 |
2023/11/19(日) 12:13:25.84ID:nljhlBVQ
>>494
その指摘のような状況で使わなければいいだけ
全てのケースでその指摘が当てはまるわけではない
不適切な使用をしてる例を自分自身で示しているが、それに気づいていない
言うに事欠いて私の感想?
何回論破されるのあなた?
501デフォルトの名無しさん
垢版 |
2023/11/19(日) 12:32:27.75ID:/G2k3fWt
>>497
別にRust推す訳じゃないが
その理屈はRustで簡単にGUIが描けるツールが出たら解消してしまうがな
2023/11/19(日) 12:35:10.88ID:Tj6ZCNuo
pythonのpysimpleguiでサクッと作って時間の掛かる処理だけpyo3でコールするか
2023/11/19(日) 13:27:48.93ID:h6lf9AUt
>>501
Rustが世に出て13年みたいだが解消する見込みなし
時間の浪費は罪に等しいと考える現実的なプログラマであれば他の手段を見つけてるだろう
何もかも遅すぎるのろまに構う価値はない
2023/11/19(日) 13:57:40.85ID:Oy1huhHi
>>497
C#でGUIとか今時書かんて
505デフォルトの名無しさん
垢版 |
2023/11/19(日) 14:01:24.71ID:nljhlBVQ
>>504
今時はguiには何使うもの?
2023/11/19(日) 14:07:51.59ID:Oy1huhHi
>>505
electronかtauriをガワにして中身はHTML+TypeScript
今のGUIアプリは大抵これ

ちなみに新しいteamsではガワはネイティブ実装で
中身はWebView2というコンポーネントを使っているらしい
作り方はHTML+TypeScriptなのは変わらない
WebView2はまだ簡単には使えないがおそらくこいつが主流になるはず

MS好きならちゃんとキャッチアップくらいしとこうぜ?
2023/11/19(日) 14:10:24.62ID:Oy1huhHi
当たり前だが別にそれにしろとは言わん
シンプルな業務系の画面なら何でも良いし作りやすい方が良い
RustのGUIは今のところ有力なものはないのは事実
2023/11/19(日) 14:21:03.03ID:BvvFFAMC
「マウス」のイベントハンドラを継承するメリットが誰にでもわかる
という前提が怪しいんだよ
マウスだぞマウス
2023/11/19(日) 14:38:54.75ID:iOyghJL5
え?! RustってGUIライブラリがないの??
510デフォルトの名無しさん
垢版 |
2023/11/19(日) 14:57:36.66ID:/G2k3fWt
Tauriは糞
2023/11/19(日) 14:57:55.82ID:y0Jh7vt2
>>509
RustのGUIも色々揃っている
GUIは用途によって多種多様な世界だからeguiのようなリフレッシュフレームベースのGUIクレートもある

そういう用途でなければRust関係なく一般的な話として今は各プログラミング言語でGUI作るのは極少数派になっている
つまりHTML/CSS/JavaScriptベースで作られるようになっていて使用言語を強いて言えばJS/TSの時代
2023/11/19(日) 15:15:35.10ID:xroD2KWj
>>500
ならせめて「当てはまるわけではない」ケースを指摘しないと反論にならん。
「不適切な使用をしてる例を自分自身で示しているが、それに気づいていない」というのに指摘しないのは反論者として誠実でない。後出しじゃんけんを狙った詐欺師にしか見えん。
2023/11/19(日) 15:17:38.47ID:BvvFFAMC
フィクションでもマウス的な小道具を無くそうとしてる
だから剣と魔法しかない
2023/11/19(日) 15:21:36.07ID:5CKxkiE7
>HTML/CSS/JavaScriptベースで作られるようになっていて使用言語を強いて言えばJS/TSの時代
そしてそれらは全て実装継承モリモリの実装に支えられている
2023/11/19(日) 15:24:12.29ID:xroD2KWj
>>500
「その指摘のような状況で使わなければいいだけ」とか後出しジャンケンにもなっていないな。情報が空っぽすぎる。
無敵ジャンケン出して勝った気になるお子様みたい。
2023/11/19(日) 16:13:36.90ID:NqOCouPw
>>514
Reactはクラス止めて関数型のやり方に変えて
かなり経つよ
2023/11/19(日) 16:43:45.43ID:HSZIalWb
あったはずだけど
2023/11/19(日) 16:45:02.12ID:HSZIalWb
あ、めっちゃ遅れレスだけど>>509に対して書いたつもりだった
2023/11/19(日) 17:14:49.95ID:H8V03qQo
>>514
Reactは本体含めて継承は使っていない
全て関数
2023/11/19(日) 17:17:51.68ID:H8V03qQo
まあ今後のGUIはWebView2になるのは間違いなさそう
特にwindowsはこれが決定版になるはず
521デフォルトの名無しさん
垢版 |
2023/11/19(日) 17:39:17.01ID:nljhlBVQ
>>512
ただ親クラスを継承して親クラスのメソッドを使うだけでしょ?
そんなことはどこにでもあるが、そのすべてがインターフェイス的に全てのメンバの実装が必須なケースになるのか?
ならない
なるケースはインターフェイスなど使えばいいだけ
2023/11/19(日) 17:55:10.88ID:o+X6buyf
メンバ変数に直接アクセスするメリットはgetやsetを実装する時間を浪費しないことだが
継承のメリットはこれに類似している
2023/11/19(日) 18:40:03.88ID:RRmaBkyu
>>516,519
意味のない指摘をありがとう
ReactはHTML/CSS/JavaScriptを支える技術じゃなく
HTML/CSS/JavaScriptを活用した技術

ちなみにReactの本体では今でも実装継承使ってる
つまらない嘘はいい加減止めようね
2023/11/19(日) 18:50:12.97ID:WxxDsdGH
>>523
支える技術とか活用した技術とか意味不明すぎる
525デフォルトの名無しさん
垢版 |
2023/11/19(日) 19:34:44.92ID:nljhlBVQ
>>524
何で知ったかしてバレないと思うん?
526デフォルトの名無しさん
垢版 |
2023/11/19(日) 20:05:00.46ID:aXcE9XXk
マイコンレベルに小さなコンパイラを搭載しなければいけないような案件だとRustは重たすぎて無理っぽいが
それ以外のデメリットは無い感じはする。今のところ
FPGAの論理合成のような長いコンパイルプロセスに未来を感じる(感想)
2023/11/19(日) 20:46:51.67ID:H8V03qQo
>>523
頭が悪すぎて嫌になるな
2023/11/19(日) 20:52:10.42ID:H8V03qQo
>>524
なんか日本語がおかしい
韓国人なんかな?
2023/11/19(日) 21:13:25.27ID:o+X6buyf
英語圏で同じこと言われる不安を煽ってるから英語が苦手になるパターン
2023/11/19(日) 22:14:28.15ID:fSaG2PoW
昔のReactはコンポーネントクラスというJavaScriptのクラスを用いた方法を用いていたけど
それでも継承は使わないでコンポジションを使うようにと公式に書かれていた
今のReactはクラスではなく関数コンポーネントを用いるようになった
2023/11/19(日) 22:31:23.82ID:2h4NT+3n
継承はクラスの再利用とクラスの切り替えが同じ継承に集約
されていたのが問題だった
2023/11/19(日) 23:15:24.31ID:WkLuwjlK
>>531
コードの再利用とサブタイピングが一緒になっていたらなぜ問題なの?
2023/11/20(月) 00:02:51.71ID:miVVMWsb
>>523
継承使ってるというのはどこのコード?
2023/11/20(月) 03:25:10.93ID:m3TC6/PX
クラスの切り替えとはキャストのことか
だがダックタイピング界隈には「キャストする」という振る舞いがない
templateなら引数を変えることが切り替えでありキャストは重要ではない
重要ではないものを重要と思ってたなら問題だ
2023/11/20(月) 03:52:37.02ID:Uh0cT6mQ
だからさ、独自用語で煙に巻いてないでTaPL読んだうえで共通語彙で話しようぜって
2023/11/20(月) 07:37:53.49ID:kv+dmWMk
>>521
親クラスを継承できないクラスはポリモーフィズムできないねぇ。

後から「読み取り専用のIFが欲しい」「書き込み専用が欲しい」となったらどうすんの?

「なるケースはインターフェイスなど使えばいいだけ」なら、途中で継承からIFに切り替える?
「早すぎる最適化」だなぁ
2023/11/20(月) 08:24:47.95ID:dEVryb2p
さすがにその例だと、「モード切替するメソッドを足す。所有権管理もさせる。旧クラスは廃止」とかだろ
2023/11/20(月) 08:49:37.76ID:Gc8IZzjG
>>537
だから「継承は重い。早すぎる最適化」なんだよ。
いつインターフェイスを確定するのは設計を煮詰めないと無理だから、設計初期に確定なんて不可能。
2023/11/20(月) 09:03:13.39ID:07sj62mg
>>499
俺もそう思う
540デフォルトの名無しさん
垢版 |
2023/11/20(月) 10:54:06.11ID:NElbrJwW
何で君達は最小のサンプルコードも書かずに俺様用語で議論してるの?
プログラマじゃないのかな?
2023/11/20(月) 11:26:53.92ID:6jnK0Jj8
今朝のGoogleニュースで米の求人報酬だかでRustが2位とか見たわ
人事的にはRustで沼る人材が欲しいらしいぞ
良かったな
542デフォルトの名無しさん
垢版 |
2023/11/20(月) 12:00:36.92ID:ZwEoOGmm
>>536
そこら辺は言語によって違うからせめて言語くらい前提として共有しないと議論にならない。

親クラスを継承できないクラス、意味不明。
そもそもサンプルコード見せれば確実なところを自然言語で議論しようとする発想が意味わからない
2023/11/20(月) 12:49:28.44ID:aVFf8Qq7
>>542
さすがに出先スマホでコード打ち込みたくないわな。
コードで言うなら>492みたいなのが欲しいというだけだし。

>親クラスを継承できないクラス、意味不明。

例えばライブラリが返すインスタンスのクラス。普通はクラスを直接弄ることはできないし、final宣言されてたら派生も無理。クラスを直接弄くれるとしても、ライブラリをメンテナンスするとか面倒臭いからやりたくない。
普通はAdoptor作るけど、それなら>492みたいなIF側で自動的にやる機能が欲しい。
544デフォルトの名無しさん
垢版 |
2023/11/20(月) 12:49:42.01ID:JpnTJcOA
githubの2023年成長率でもRustが40%増でTOPだったな。
でもまだ人気言語TOP10には食い込んでなかったけど。
2023/11/20(月) 12:53:05.42ID:PG0EBfXZ
>>541
日本だとマジで少ねえんだよな
ガッツリ使ってて将来性があるところならぜひ行きたい
546デフォルトの名無しさん
垢版 |
2023/11/20(月) 13:32:31.99ID:NElbrJwW
>>541
1位はpython?
2023/11/20(月) 13:42:54.45ID:IjnmMF1h
そりゃ1位はPHPだよ
2023/11/20(月) 13:54:03.53ID:SNQO1x/A
>>523
早くだせよコラ
適当いってんのはテメェだろクソが
549デフォルトの名無しさん
垢版 |
2023/11/20(月) 14:04:35.58ID:NElbrJwW
>>547
PHPを書けるより市場価値がないの?
2023/11/20(月) 14:38:31.00ID:dEVryb2p
Rustが出せるのは高い信頼性だが、日本で何か作っても、それ信頼できんの?ってなるから
だったりして
551デフォルトの名無しさん
垢版 |
2023/11/20(月) 14:44:00.93ID:NElbrJwW
>>550
求められている信頼性って「Rustが出せる信頼性」とは違うんだと思うよ
552デフォルトの名無しさん
垢版 |
2023/11/20(月) 15:09:31.41ID:MS7hPbOQ
日本だけに限らないかも知れないけど
ソフトウェアの利用者ってそもそも
何の言語で造ってるかなんて気にしてないし知ろうともしない
2023/11/20(月) 15:36:03.59ID:JXHwx0JF
Rustが使われる理由は高速省メモリで開発効率や保守性が良いため
554デフォルトの名無しさん
垢版 |
2023/11/20(月) 15:41:32.66ID:NElbrJwW
>>553それはRustプログラマの視点
それまでの話は発注者側からの話
2023/11/20(月) 15:49:44.16ID:JXHwx0JF
発注者側の視点でも
高速省メモリで安全性も高いのはRustとなる
556デフォルトの名無しさん
垢版 |
2023/11/20(月) 15:55:24.47ID:NElbrJwW
鶏と卵の関係になるけどプログラマが確保できなく保守性が悪い
2023/11/20(月) 16:02:14.85ID:N43MAaAU
>>555
という願望

いいものなら売れるというナイーブな考えは捨てろ
2023/11/20(月) 16:18:06.96ID:JXHwx0JF
>>556
プログラムの保守性自体はRustが高くて好ましいため
あとはプログラマーの数は単調増加する一方なので特に問題なし
559デフォルトの名無しさん
垢版 |
2023/11/20(月) 16:27:04.23ID:NElbrJwW
>>558
プログラマが確保できないってことは
発注者側からすると運用後の保守に
支障を来すリクスがあるってことだよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。