結局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/11/09(木) 19:28:25.39ID:hICX9By2
ぬるぽは原始より居ただろ
飼い慣らせない人間が悪い(俺を含む
2023/11/09(木) 19:45:53.51ID:Nh0igmG8
ヌルポをなくしてOption型をデフォルトにすべきだった
コンパイラによるチェックを必須にすべきだったのよ
本当にこれだけのことで全てが変わった
2023/11/09(木) 20:06:24.95ID:T10okj+l
>>229
10年後に今の言語がどうけなされてるか言ってみ?
2023/11/09(木) 20:26:38.28ID:GhU74Yg7
result型とoption型
rustだけがこの2つをデフォルトに採用した
生き残るのはrustだけ
2023/11/09(木) 20:29:05.07ID:8vjWDFJE
>>229
Object型じゃ型情報少なすぎるだろ。
全てのクラスにNullObjectを付けてnullptrを禁止すればマシになる。

あとインターフェイスはもっと制約を減らすべき。
c++テンプレートだと、テンプレート引数に指定するクラスはテンプレートについて何も知らなくていいけど、インターフェイスもそのレベルでクラス・インスタンスから切り離されているべきだ。
2023/11/09(木) 20:57:20.45ID:PEX7rJUj
> Object型じゃ型情報少なすぎるだろ。
> 全てのクラスにNullObjectを付けてnullptrを禁止すればマシになる

Object型ではなくOption型
全ての各型にNullObjectを付ける必要はなく
任意のT型に対してOption<T>型を用いればよい
Option<T>型の値はSome(Tの値)のNone二択
T型自体は決してNull値やNone値をとなってはいけなくここが肝要
2023/11/09(木) 21:05:40.49ID:GhU74Yg7
ただジェネリクスやテンプレートがないCに追加するのは容易ではない
それほど罪深い仕様
235デフォルトの名無しさん
垢版 |
2023/11/09(木) 22:19:33.09ID:/jR/7UWQ
C++はまだ改良頑張ってるよ。
Cなんて、C11ぶり10年以上も改良してないとか酷すぎる。
2023/11/09(木) 22:33:55.61ID:U2tOOexp
C23ってどうなったんだっけか
もう少し先?
2023/11/09(木) 23:32:03.13ID:alU/Ei+B
SOLIDすら理解してないやつがRust推してるのか
呆れを通り越して悲しみを感じる
2023/11/09(木) 23:45:28.17ID:FlvKmVTx
SOLID理解してない人はクラス継承派だからアンチRust側
239デフォルトの名無しさん
垢版 |
2023/11/09(木) 23:51:27.12ID:/jR/7UWQ
>>236
新機能は決まって来年ISOから発行
2023/11/10(金) 00:37:21.40ID:YpxZ8uto
SOLIDもだが30年前から言われてるfavor composition over inheritanceの理由を理解してないのも呆れる
Rustの推し活する前にまずは基礎を学ぼうぜ
じゃないとどの言語使おうがゴミ量産するだけだぞ
2023/11/10(金) 02:22:01.34ID:bGIK0BM5
継承より合成とそうすべき理由を理解していないのはRustを叩いてる側だな
理解できないがためにいつまでもクラス継承に固執している
2023/11/10(金) 05:15:36.99ID:bzX4P4Us
俺はRustも継承も嫌いじゃないんだが
SOLIDは難しいから苦手だけど
2023/11/10(金) 09:27:08.62ID:YqCm/hRG
>>235
だからゴチャゴチャしてるんだ
2023/11/10(金) 09:40:56.20ID:aa+qv15K
ついつい、機能を全部くらい使って書こうとしちゃうんだよね
複数世代のパラダイムが入ってるから、まぜるな危険
2023/11/10(金) 10:45:22.93ID:TCW8Ak5o
C++はスマホやPCと同じだよ
昭和ジジイはすぐ「これが持つすべての機能をマスターしてすべて使いこなそう!」とか無意味な事を考え
そして挫折して「パソコンなんて憶えても意味はないっ!人間の尊厳はもっとシンプルなものにあるのだ!
パソコンをつかわずに人間らしい美しい生き方をしよう!」とかいいだす
スマホもPCも自分に必要な機能だけ憶えて使えばいいだけ
2023/11/10(金) 12:12:06.75ID:aa+qv15K
s/パソコン/スマホ/g
247デフォルトの名無しさん
垢版 |
2023/11/10(金) 13:40:46.42ID:E5/tDr6w
s/ジジイ/池沼/g
2023/11/10(金) 15:25:54.34ID:nVu+/fuO
かわいそうだな
継承が上手く書けないくらい頭おかしいと
249デフォルトの名無しさん
垢版 |
2023/11/10(金) 16:20:15.04ID:FL9N1XVu
c++はどっちかというとフロントボンネット開けっ放しでエンジン丸出しにしたテスラって感じだけどな
2023/11/10(金) 16:50:58.76ID:3Hc35zyY
【基礎解説】 メモリ利用を効率化! Modern C++のキモ「ムーブセマンティクス」
https://codezine.jp/article/detail/18574
251デフォルトの名無しさん
垢版 |
2023/11/10(金) 16:51:19.99ID:tLf5vZ8S
>>249
うまい例えのつもりなのか?
2023/11/10(金) 16:55:26.35ID:SY+Dup8/
テスラ車にエンジンは付いてないけどな
2023/11/10(金) 20:11:27.55ID:NL+wF9v3
エンジン無しでどうやって走るのかと
254デフォルトの名無しさん
垢版 |
2023/11/10(金) 20:21:08.16ID:VDRR6isO
モーター
255デフォルトの名無しさん
垢版 |
2023/11/10(金) 20:21:28.96ID:eRO+Ebqf
ガソリンエンジンか、エレクトリックエンジンかの違いだね
2023/11/10(金) 20:33:46.45ID:POaaExM9
NTにもJetエンジン付いてるね 2色ある
2023/11/10(金) 23:56:02.81ID:XAiSTtL/
>>248
継承を使わないほうが様々な問題を起こさず上手く書けるというのが本筋
例えばクラスと継承を広めたJavaの生みの親であるJames Goslingも>>102でJavaを作り直せるとしたら継承を除外したいと言っている
これはプログラミング言語界では共通認識であるためモダンな各言語ではクラスとその継承が除外されている
2023/11/11(土) 00:01:12.93ID:woXaVSWq
発言のコンテキストを理解しようとしないからアホな結論に達するんだよなあ
259デフォルトの名無しさん
垢版 |
2023/11/11(土) 00:03:12.63ID:uDCEJA+a
どうでもいいくだらない話題で延びるのは
上の方に消したいレスがあるとき
2023/11/11(土) 00:09:22.37ID:DbOeM/y4
消したいのはNimとSOLIDだろうな
2023/11/11(土) 00:53:13.03ID:Qqt+MGf6
>>258
伝言ゲームで多くの人を介した後の情報にしか接しようとしない人はコンテキストとかわかんないんだよ
2023/11/11(土) 00:54:21.99ID:CRU56Rbd
アスペルガーはそういうのわからないよ
2023/11/11(土) 01:19:19.80ID:PsmtBz7W
Go/Rust/Elixir の3大言語は継承ない。
でも継承のある、Ruby の米国年収は、3大言語を超えた!

Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7

多くの言語 : 6.5〜7

PHP : 5
Dart : 4.4

Ruby on Rails, AWS Solution Architect は13万ドルとか!

YouTube で有名な雑食系エンジニア・KENTA は、
初心者のキャリアパスは、Rails → Go だけと言ってる

文系のアホには全職種の中で唯一、Railsがチート職業!
2023/11/11(土) 07:03:04.53ID:6YPjiDGp
>>257
Rustはclassの機能をstruct,impl,traitにばらしているからな。

いっそのことimplも無くしてnimみたいなメソッド構文にしてほしいわ。
2023/11/11(土) 09:24:43.23ID:sUAuCE0K
>>264
他の型(=他のclass)と継承関係を持つ型がclass
RustやGoなどにclassの機能はない
266デフォルトの名無しさん
垢版 |
2023/11/11(土) 09:40:11.96ID:fuGMacjx
Rubyはないわ
ΚΕИТΑもないわ
267デフォルトの名無しさん
垢版 |
2023/11/11(土) 09:53:08.61ID:qMAq6GeL
継承を問題だと考えるならそう考える人が使わなきゃ良いだけで
言語仕様からなくす必要はなかったんだよ
他の機能との間に衝突が生じるというのなら無いのも分かるけど
ユーザの選択肢として継承はあるべきだった(発想が原理主義的なんだよね)
間口を狭めた結果ユーザー数は一向に増えない
ユーザー数が少なければユーザー数を増えないという負のスパイラルを抜け出せない
継承はあるものの手本を示すために標準ライブラリ(ってあるのかな?w)で
継承を使わないという方針を取るべきだったと思う
2023/11/11(土) 09:59:27.11ID:hCMtMwE+
>>263
Ruby使ってるサイトってまだあるの?
269あぼーん
垢版 |
NGNG
あぼーん
2023/11/11(土) 12:33:28.67ID:8FSI241M
>>269
サンキュー試してみる
2023/11/11(土) 17:06:47.94ID:rVvrsmp3
>>265
その解釈で言うなら>>180は間違いで、Nimにはクラス継承はあるってことでいいのか?

クラスにしろオブジェクトにしろトレイトにしろ、言語によって定義は微妙に違うのだから
特定の言語にだけ当てはまる特性を一般的なものとして語られると、議論に混乱がもたらされる
意図的にやっているのならば、それは藁人形論法と呼ばれる
2023/11/11(土) 17:17:53.08ID:rVvrsmp3
というか、型ごとにクラスであるか否かが決まるのか?
C++のclass C: public D {};はクラスだが、class C {};はクラスではないということになるのか?

動的型付け言語なら「値がクラスであるための条件」を定義することで何がクラスであるか定義する言語もあるが
(にしたって継承に依存しないだろうが)
静的型付け言語も含めた一般的な定義としては使えなさそうだ
2023/11/11(土) 17:56:27.75ID:8uzQmIun
カプセル化などはクラス以外にも存在しクラスの固有機能ではない
クラスをクラスたらしめている要素は継承
Javaの生みの親が>>102で「Javaを作り直すとしたらクラスを除外したい」と発言した意図も、
その後に付加説明しているように「クラスを除外」とは「継承を除外」の意味としている
継承を使わないならクラスである必要はない
それがクラスごと除外した各モダン言語の意図だろう
2023/11/11(土) 18:18:11.36ID:rtkZqGR9
>>269
友達にも教えてあげる
2023/11/11(土) 18:19:47.08ID:Mzt4UIrv
実装継承は菱形継承の問題もある
2023/11/11(土) 18:28:45.74ID:mn5CSVOj
菱形は無理になくてもいい
…といいつつ、あとになって菱形になっちゃいましたもありうるんだろうしな
まあ積極的には使わん 人智を超えるw
277デフォルトの名無しさん
垢版 |
2023/11/11(土) 19:45:32.60ID:2HJkyP1v
>>272
javascriptのprototypeに近いものをclassと思ってるんじゃないかな
2023/11/11(土) 20:07:27.33ID:Ig0qHM6i
JavaScriptもC++と同じく実装継承だからアウトだろ
2023/11/12(日) 00:15:34.52ID:EWqnRvOH
>>268
Githubとかはまだ使ってるみたいだけど明らかに減ってきてる感あるね
280デフォルトの名無しさん
垢版 |
2023/11/12(日) 00:36:55.65ID:E93HrjVI
>>267
ユーザー数と継承機能の有無は関係無いぞ
2023/11/12(日) 01:09:33.43ID:l8rhUXJt
>>280
>>89の通り大有りだ
2023/11/12(日) 01:59:57.74ID:daW7Mc+n
エンジニアなら作ったもので勝負しろ
283デフォルトの名無しさん
垢版 |
2023/11/12(日) 02:41:28.74ID:E93HrjVI
>>281
元になった言語があるかどうかじゃん。継承関係ねーじゃん。
284デフォルトの名無しさん
垢版 |
2023/11/12(日) 04:42:06.75ID:yMP0yjCE
>>281
全部ドマイナー
2023/11/12(日) 08:54:04.31ID:TrDrLjQN
モダン言語=関数型ベースにボクの考えた似非オブジェクト指向追加するのが流行ってるだけって感じで終わってる
2023/11/12(日) 09:00:27.54ID:EWqnRvOH
とは言っても俺らより遥かに頭いい人が考えた結果だからな
287デフォルトの名無しさん
垢版 |
2023/11/12(日) 09:53:11.34ID:l8rhUXJt
>>283
ユーザ数が少ないとユーザは増えないんだよ
おまいらはどマイナー言語が趣味だろうけども世間は違う
ユーザ数を増やすには既存の言語のユーザを分捕るのが手っ取り早い
継承関係がないってことは他言語のユーザが学習したり
他言語のライブラリを移植する際にハードルとなる
期せずして書かれた>>89は上は全部どマイナー言語
下の言語はC++もそうだけどユーザー数が上より遥かに多い
普及戦略には既存言語との互換性が最大の影響を与えるということを示している
俺様の理想のみを追求した原理主義では誰もついてこない
288デフォルトの名無しさん
垢版 |
2023/11/12(日) 09:57:24.71ID:l8rhUXJt
そういやRustで書かれたOSが実用化される話を読んだよ
軌道に乗ればRustを使う現場が増えるかもね
https://www.gizmodo.jp/2023/11/vivo-blueos.html
2023/11/12(日) 10:10:01.41ID:nDYms+cf
ロゴがVAIOっぽくて草ァ
290デフォルトの名無しさん
垢版 |
2023/11/12(日) 10:24:30.80ID:l8rhUXJt
本家は英語のページがない
https://blueos.vivo.com/
291デフォルトの名無しさん
垢版 |
2023/11/12(日) 11:24:34.62ID:yMP0yjCE
古い?
オブジェクト指向経験者のためのRust
https://qiita.com/nacika_ins/items/cf3782bd371da79def74
2023/11/12(日) 11:25:51.39ID:yMP0yjCE
どうでもいいけど
ドマイナーってCmのことだね
2023/11/12(日) 11:31:15.41ID:yMP0yjCE
>>288-290
Rust 推してんの中國人なんか?
そういえば github の Rust も中國語多い気がするな
Rust に関わるのもう辞めようかな
2023/11/12(日) 11:32:56.85ID:CMeM7fMz
情熱的な曲ってCmベース多いよ
ドマイナーはドマイナーじゃない(豆

# そのギャグどっかで使おうっと
2023/11/12(日) 11:34:44.94ID:CMeM7fMz
母数でかいし、まだまだ金回りいいしね cnをなめちゃだめだw
296デフォルトの名無しさん
垢版 |
2023/11/12(日) 11:39:24.18ID:l8rhUXJt
>>293
コンピュータに関しては中国はもうかなりの分野で日本を凌駕してる
日本人にはRustで書かれたOSを実用化することは
残念ながら金輪際できないだろうね
プライドを捨てる必要がありそうだ
297デフォルトの名無しさん
垢版 |
2023/11/12(日) 11:56:22.44ID:TjUPxwN+
>>257
偉い人の名前どうでもいいから具体的な話をしなさいよ
まあ無理だろうけどw
298デフォルトの名無しさん
垢版 |
2023/11/12(日) 12:50:23.87ID:gR0aPFqO
Rustが浸透する可能性としてAIライブラリの充実がカギのような気がする。
ライブラリが充実すればマイコンへのAI実装が加速するかもしれないんじゃないかな?
299デフォルトの名無しさん
垢版 |
2023/11/12(日) 13:00:10.14ID:E93HrjVI
>>287
javaにはinterfaceがあるしkotlinにもある。
objective-cにはprotocolがあるしswiftにもある。
うん、継承関係ねーな。
300デフォルトの名無しさん
垢版 |
2023/11/12(日) 13:24:47.44ID:yMP0yjCE
どうみても結果論で
Java に class も継承も無くて interface だけだったら
普及も糞も無かったはず
今の Rust より地位低かっただろう
301デフォルトの名無しさん
垢版 |
2023/11/12(日) 13:42:28.02ID:l8rhUXJt
JavaはC++と文法を似せたことが初期でのユーザ獲得に効いたんだよ
ある程度ユーザ数を獲得したら
ユーザ数の多さがユーザ数の増加につながる
正のスパイラルが始まった
Rustはこの先生きのこれるかな?
2023/11/12(日) 15:04:17.66ID:2kP6dQwH
GoogleのC++スタイルガイドでも継承より合成が適切とあり
特に実装の多重継承は強く非推奨とある
C++には継承があるから積極的に使おうなんて話はない
2023/11/12(日) 15:10:39.48ID:BtB8NmKb
インターフェースの多重実装は?
俺的にはアリだが
2023/11/12(日) 15:12:06.22ID:FXO/G2ox
アリというかそれは普通だろ
2023/11/12(日) 17:22:10.37ID:fcqBe9ye
たとえアンチでも、それは過去資産という位置づけでは
306デフォルトの名無しさん
垢版 |
2023/11/12(日) 19:58:58.70ID:UMFi1GHl
>>302
なぜ非推奨と言ってるの?
それはどうでもよくてGoogleと言いたい人なの?
2023/11/12(日) 20:22:32.82ID:EWqnRvOH
合成とか言うのか昔(2000年代前半頃)C++勉強してた頃には合成とかいう言葉なかった気がする
2023/11/12(日) 20:32:20.30ID:EyVQy8uj
compositionでしょ?
2023/11/12(日) 20:54:38.02ID:oa0+ZaPS
composition over inheritanceの文脈で
compositionを合成と訳すのば明らかに誤訳
2023/11/12(日) 21:10:07.68ID:uw3vvLb2
チンポジション推奨はわかるがひたすらデリゲード書く羽目になるのはだるい
文法的にサポートすべき
2023/11/12(日) 22:58:36.87ID:OO+koJ2d
>>307
継承が濫用されまくった反省から…っていう認識でいいのかな

継承とくらべてコンポジはフットプリントのコストがかかるけど(個人の感想です)、
そのくらいいいから、もっとわかりやすく書かないとって気運は確かに感じた
2023/11/12(日) 23:24:53.52ID:R2fa8NnH
James Goslingがクラスを無くすという話で警鐘を鳴らしたかったのはimplementation inheritanceのマイナス面
クラスがなくてもGoやRustにもimplementation inheritanceは存在していてそのマイナス面も全部ではないが継承してる
大事なのはプラス面とマイナス面の両面を把握した上で適宜使い分けるということ
2023/11/12(日) 23:29:45.60ID:p1tJuVOt
ちなみにRustは単純なクラス継承相当はないからコードの再利用がやりにくいという弱みがある
言語開発者もそれはかなり昔から認識してて機能追加をあれこれ検討してるが実現には至ってないためマクロを使ってコードを複製することが多い
2023/11/12(日) 23:33:34.84ID:kGZwhVgb
そのためのクレートでは(エアプ
2023/11/13(月) 00:43:02.47ID:AJp6/mRY
オブシコの綻び
継承無くしてオブシコ厨の大好きだった動物犬猫ニンゲンはどう表現するんですか
2023/11/13(月) 01:10:29.96ID:uWfytJAu
みんな違ってみんないい

ってか、おまえらが自分らと同じクラスなど、不遜にもほどがあるニャ
2023/11/13(月) 02:50:04.87ID:SmGbt3Rc
トレイトって仕組みわりと便利だけどな
PHPでもこの仕組み取り入れられててわりと重宝する
2023/11/13(月) 07:32:53.84ID:tgErF0Wq
基本はアダプタパターンで、本来はインターフェイスに代入するときに自動で適合してくれるのがいいのよ。

継承はクラスの親子関係でやらなきゃいけないから依存が強すぎるし、合成も実装とインターフェイスが切り離せないから密結合しすぎる。
2023/11/13(月) 08:45:58.99ID:nbPiM1Pw
リファクタリングするときに
Rustの「親切設計」が思考の邪魔をしてくる

どうにかならんか?
2023/11/13(月) 08:47:34.93ID:nbPiM1Pw
>>298
小池AIなら要らないぞ
2023/11/13(月) 08:49:35.17ID:nbPiM1Pw
>>310
>ひたすらデリゲーション

RustのTraitもこれなんだな
2023/11/13(月) 09:10:04.39ID:y0V48+mZ
>>318
それがcomだな
2023/11/13(月) 11:10:08.61ID:mdWiRvuj
>>319
どんなコード?
2023/11/13(月) 11:24:38.37ID:Ex26ICxs
>>322
継承無しのcomで、インターフェイスはコンパイル時に検証する感じがいい。
2023/11/13(月) 18:01:25.01ID:QMjdC+SV
新たなゲームエンジン「Arete Engine」発表
https://automaton-media.com/articles/newsjp/20231113-271841/

Rustベースとのこと
対応言語として、C++, C#ほか
2023/11/13(月) 19:27:32.88ID:eizg6Llc
なんか良さげじゃないか
これブレークしたらRust大発展場、ワンチャンありそう
327デフォルトの名無しさん
垢版 |
2023/11/13(月) 22:14:58.07ID:vy9Jjh7g
6.x以降サポートされてLinuxカーネルコンパイルできるんだね。知らんかった。
Cから置き換わるか?
まだ、メジャーバージョンアップはありそうな気がするが
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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