結局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/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
プログラマが確保できないってことは
発注者側からすると運用後の保守に
支障を来すリクスがあるってことだよ
2023/11/20(月) 17:04:51.35ID:aPv5cKlG
コントリビューター増加「率」はミスリードかも、レポ増加「数」は
github 2023年新規レポジトリ10KB以上

JavaScript 2.1M results
Java 767k results
Python 749k results
TypeScript 627k results
C# 338k results
C++ 244k results
C 174k results
PHP 152k results
Kotlin 147k results
Dart 109k results
Go 84.4k results
Ruby 64.3k results
Swift 59.3k results
Rust 39.4k results
Lua 22.1k results
HCL 16.4k results
561デフォルトの名無しさん
垢版 |
2023/11/20(月) 18:15:53.85ID:1QHH6HXV
クローズ開発案件が含められないから意味が無い件
2023/11/20(月) 18:32:56.66ID:Tq0YX8uR
>>557
株とかはそうだね
いいものは誰にも教えないで買い占めるはず
商品化し売られているのは悪いものしかない説
563デフォルトの名無しさん
垢版 |
2023/11/20(月) 20:50:45.51ID:NElbrJwW
>>561
ある程度は相関してるでしょ
564デフォルトの名無しさん
垢版 |
2023/11/20(月) 21:15:52.04ID:ojqzhkRS
>>562
お前がレスに使ってる端末は悪いものなんだな~。
2023/11/20(月) 21:47:51.39ID:Tq0YX8uR
>>564
自然言語で雑談ばっかりして
コーディングとコンパイルと実行をしない原因はこの端末かもしれないな
2023/11/20(月) 21:56:32.85ID:Ygoo/zhh
>>533 >>548
嘘つきオジは「知ったかぶりして”Reactは本体含めて継承は使っていない全て関数”などという真っ赤なウソをついてすみませんでした」と言うのが先だろ
567デフォルトの名無しさん
垢版 |
2023/11/20(月) 21:59:46.43ID:1QHH6HXV
>>563
全くしてないだろ
公開出来るソフトなんて業界の一部でしか無いからなぁ
2023/11/20(月) 22:02:12.48ID:SNQO1x/A
>>566
負けを認めろ
土下座したら許してやるぞ
2023/11/20(月) 23:27:57.05ID:/Ubqd6b6
>>530
Reactはクラスコンポーネント時代も
開発元のFacebookが様々なケースで継承を使うとよいケースは存在していないことを確認しているとReact公式に書いていたもんな
もちろん今はクラスコンポーネントすら捨てて関数コンポーネント
2023/11/21(火) 08:57:03.65ID:CeBFd4j1
GitHubで最も使われている言語はJavaScript、最も利用者が増加したのはRust。AIプロジェクト数はこの1年で3倍増GitHubが年次調査「Octoverse 2023」発表
https://www.publickey1.jp/blog/23/githubjavascriptrustai13githuboctoverse_2023.html

AI関連のプロジェクトを国別に見ると米国が突出していますが、日本はインドに次いで3位となっており、日本のオープンソース開発者は世界的に見て積極的にAI関連のプロジェクトに関わっていることが分かります。

プログラミング言語別にコントリビュータの増加率を見ると、1位がRust、2位がRua、3位がTypeScript、4位がHCL(HashiCorp Configration Language)、4位がTSQL、5位がPythonとなります。
2023/11/21(火) 09:29:05.70ID:WJ7yrtvk
React本体のJavaScriptコードで継承が使われてるという事実は嘘つきオジがいたので指摘しただけで重要な事ではない
JavaScriptの継承を理解してる人ならリポジトリ見れば誰でもわかる

重要なのはReactやReact Nativeが依存しているHTML/CSS/JavaScriptなどのホスト環境が提供するGUIライブラリやそれに類するものは全て実装継承モリモリで作られているということ

それはなぜなのか?
2023/11/21(火) 09:48:09.93ID:meOGGGPH
>>570
Rustはもう何年もずーっと愛され続けてずーっと増加率もすごく高いのに
誰も使ってないのが不思議w
573デフォルトの名無しさん
垢版 |
2023/11/21(火) 10:52:34.98ID:TIZNoRj+
増加<率>だからねw
574デフォルトの名無しさん
垢版 |
2023/11/21(火) 10:53:27.83ID:TIZNoRj+
つまり分子が大きいというより分母が少ない
575デフォルトの名無しさん
垢版 |
2023/11/21(火) 10:56:46.75ID:fyFN08Ef
ヒント非公開
2023/11/21(火) 11:02:46.10ID:ZX3v40di
>>571
GitHubのコードに対するリンク一行貼るくらいやってよ
2023/11/21(火) 11:06:40.20ID:ZX3v40di
>>571
gtkはCだね
2023/11/21(火) 11:07:36.25ID:HSO31doi
>>557
ほんそれ
2023/11/21(火) 11:18:07.78ID:Lmp19CDx
>>575
エビデンスを出せという言葉を使えば公開されるという認識なんじゃないか
まるで魔法みたいに
580デフォルトの名無しさん
垢版 |
2023/11/21(火) 11:27:49.20ID:j31CN6Yb
>>569
とFacebookの犬が申しております
2023/11/21(火) 12:12:04.36ID:Vub9wpCB
>>571
嘘つきはお前だよ
2023/11/21(火) 12:25:12.17ID:MyNMYruR
>>571
お前毎回遅レスなのは何なの?
回線がない生活保護施設にでも住んでるのか?
2023/11/21(火) 12:27:03.76ID:vP2RupFQ
特定のレスに妙に攻撃的な単発ちょくちょく湧いてくるのってやっぱりアイツ?
584デフォルトの名無しさん
垢版 |
2023/11/21(火) 12:50:14.72ID:j31CN6Yb
>>583
いや、あいつとは別
585デフォルトの名無しさん
垢版 |
2023/11/21(火) 12:50:16.11ID:j31CN6Yb
>>583
いや、あいつとは別
2023/11/21(火) 13:37:07.13ID:f4244eke
アイツじゃねーかw
2023/11/21(火) 13:52:02.24ID:Lmp19CDx
質問する側は基本的に無力で、答える側に生殺与奪の権を握られる
一発逆転するには攻撃力か何かで優位に立たなければ
2023/11/21(火) 18:59:23.42ID:E3kr56i/
勝ったところで、所詮クソvsクソだぞ

面白いことを書け
2023/11/21(火) 19:14:06.76ID:MyNMYruR
攻撃的なこと言われて大人しくなってるの草
2023/11/21(火) 22:22:25.20ID:3Y9OZVuh
>>577
GTKは実装継承モリモリ
Cで実装継承を実現するためのオブジェクト管理システムをGTK用に作ってある
Reactの話とは関係ないけどね
2023/11/21(火) 22:23:49.29ID:3Y9OZVuh
>>582
誰もが君のように暇なわけではないんだよ
つかそんなにレスが欲しかったのかよw
2023/11/21(火) 22:43:10.96ID:Q9pynku3
>>590
そういう返答するだろうなあと思ってたよ
言語機能になくても実装で継承使われてるんだ~
というならどんな言語使っても構わないね
はい終了
2023/11/21(火) 23:11:04.07ID:Lmp19CDx
Cはスマポ<T>を作れない
C++でもtemplateを使わない主義ならばスマポのようなものをTが実装継承するかも
2023/11/21(火) 23:15:06.85ID:x0TxAGsF
>>592
論点は実装継承は不要なのかどうか
常にコンポジションを使うべきかどうか

GTKは言語機能によらない実装継承を使っているというだけ
コンポジションで実装する事も技術的には当然可能だがその選択をしてないことに意味がある

特に言語が提供してないにもかかわらずGTKのためだけに継承機能をわざわざ作り上げるほど実装継承を欲した理由を理解するべき
2023/11/21(火) 23:35:36.54ID:LOJe+P0r
Reactが依存しているHTMLのボタン要素を例に話をするとボタン要素は次のような型階層を取ることがDOM APIの仕様で決められている

EventTarget <- Node <- Element <- HTMLElement <- HTMLButtonElement

上位の型のパブリックなメソッドやプロパティはや下位の型でも使えるようにする必要がある
これは実装継承だけでなくコンポジション+インターフェースでもRustのenumのような代数データ型を使っても実現可能なんだが知る限り全てのブラウザが実装継承を使って実装している
2023/11/21(火) 23:45:35.68ID:Q9pynku3
>>594
言語機能になくても問題はないんだから
言語の機能比較という論点からは
どうでもいい話だね
2023/11/21(火) 23:49:00.55ID:5SU8rUzf
なぜかというと
例えば仕様変更でNodeに新しいメソッドが追加されたとしても実装継承なら一箇所変更すればいいだけだから

コンポジション+インターフェースの場合はNode以下の数百個のクラスや構造体にメソッドを追加して委譲するコードを書いて回らないといけない

実装継承というのはサブタイピングとコードの再利用を同時に行うことだが、その2つを同時に行えるという点が最大のメリットであり存在理由なわけ
2023/11/22(水) 00:08:02.11ID:h68LLJ0S
>>596
問題がないわけではないんだよ
GTKの実装継承は言語機能のそれと比べてクソ面倒臭い上に言語に組み込まれた型システムではないからこその弱さがある

Rustでも実装継承をマクロで模倣することもできるがだからといってそれに何の問題ないわけではないというのと同じ

他のやり方があったとしてもより楽に安全に開発できるようになるなら言語機能としてあった方がいいってことになるよね?
2023/11/22(水) 00:19:05.87ID:i7dbnQQ2
>>1-10

乗り遅れるな!

いつまでも待ってはくれませんよ

https://note.com/nukatiktok/n/nfbb66b3b3d3e ←4000円貰えます

この機会にぜひ

https://i.imgur.com/eWEQ3eT.jpg
(毎日動画見てるだけでお金貰えるんだぞ💰)
2023/11/22(水) 00:33:52.03ID:SCjy6MJ9
>>597
それは仕様変更前のクラス数百個を捨てさせ変更後の数百個で置き換えるには都合が良い
一箇所変更するだけで古いクラス数百個が消滅する
だが古いクラスに依存していた資産が消滅するのは本当にお得なのか?
2023/11/22(水) 01:12:20.99ID:uxQX1dJD
>>590
はよReactの実装継承について参考にすべき
ファイルとかだしてくれ
2023/11/22(水) 01:26:34.89ID:uxQX1dJD
>>598
> 他のやり方があったとしてもより楽に安全に開発できるようになるなら言語機能としてあった方がいいってことになるよね?

c++に色々跳ね返ってきそうなお言葉来たな
2023/11/22(水) 16:32:36.94ID:Ky8NVDmM
「GCは嫌い。だけどC++は苦手。
 噂だとRustがそれを解決するらしいから」
ということでRust票が入っているだけ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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