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

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

っていう雑談スレ。

結局C++とRustってどっちが良いの? 4traits
https://mevius.5ch.net/test/read.cgi/tech/1686046386/

関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/06/30(金) 22:00:04.42ID:TaBihWT0
クラウド世界トップシェアのAWSもRustで構築されているようだ

https://japan.zdnet.com/article/35183866/
AWS (Amazon Web Services)は、「Rust」を使っている大きな理由として、エネルギー効率の高さを挙げる。
AWSは早くからRustを採用し、Rust Foundationの創設にも携わった。
現在もRustの普及に熱心に取り組んでいる。

AWSのソフトウェアエンジニアで、Rustの普及に取り組む
Shane Miller氏と主任エンジニアのCarl Lerche氏の投稿によれば、
Rustはメモリー安全性を高め、セキュリティ関連の不具合を減らす役に立つだけでなく「エネルギー効率に優れている」。
Amazonは、2025年までにデータセンターの100%を再生エネルギーでまかなうという目標を掲げ、
データセンターの環境負荷の軽減に取り組んでいる。
Rustの採用はその一翼を担うという。

Rustで構築されたAWSサービスの例としては、
コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
「Amazon Simple Storage Service(S3)」、
「Amazon Elastic Compute Cloud(EC2)」、
コンテンツ配信ネットワーク「Amazon CloudFront」、
LinuxベースのコンテナーOS「Bottlerocket」などがある。
2023/06/30(金) 22:03:50.69ID:PDIJ4aZy
布教でも反論でも、質問(C/C++チョットデキルけどRust始めました、あるいはその逆とか)でも、
関係ないようなこと(避難スレ的運用)でも、ご自由に。

>>2
記法もちょっと近かったりして、webとは相性いいみたいね
2023/06/30(金) 22:48:29.45ID:+A7yghr8
乗るしかないこの大波
5デフォルトの名無しさん
垢版 |
2023/06/30(金) 23:28:17.68ID:KO9roK1Y
非∞!!!!
頓∞!!!!!
典∞!!!!!!
項∞!!!!!!!
判∞!!!!!!!!
病∞!!!!!!!!!
2023/07/01(土) 01:50:39.23ID:ulppHLtb
俺はc言語がいいんだ
nimは試そうかと思ったけどmingw入れるのがだるくて入れなかった
エコシステムに関してはrustは素晴らしい
cargoが良く出来てる
2023/07/01(土) 02:16:26.66ID:PswK3kno
俺は見つけてしまった!!!
gccrs
2023/07/01(土) 02:18:19.44ID:PswK3kno
LinuxがRustのソースコードを受け付けるようになったって話は
コンパイラはgccrsで良いのかな?
2023/07/01(土) 03:46:54.61ID:/rHXN22N
gccは誰も使わないコンパイラ。
2023/07/01(土) 04:02:08.70ID:ulppHLtb
めっちゃ使ってる
clangもいいけど
11デフォルトの名無しさん
垢版 |
2023/07/01(土) 04:41:49.04ID:pfOq6Y2+
今、Rustでnumpyライクなライブラリを目指してるけど、行列の演算はrayonを内部にぶっこむべきだろうか。
ちなみにRustのndarrayベースで作るのはやめて一から実装している。
2023/07/01(土) 04:46:21.39ID:6lyrDsv3
ユーザが好きに選べるようにするべき
2023/07/01(土) 05:18:27.37ID:/rHXN22N
gccを使っていると言う変な人が、自分がスタンダード化の様に
偉そうに振舞えるのが匿名インターネットの世界。
2023/07/01(土) 07:08:07.40ID:oXr/pxLu
>>6
Zigがあるじゃない
2023/07/01(土) 08:15:56.69ID:TNFWMxVo
ユーザ数も指標の一つ
利用者が多ければライブラリも大量に出る
2023/07/01(土) 08:24:36.90ID:tCnNkKat
>>13
それも、この世界の下積みの一種かなって思ったり
17デフォルトの名無しさん
垢版 |
2023/07/01(土) 08:34:29.73ID:pfOq6Y2+
Rustはrust analyzerが優秀なので、何も考えずに言われた通りに修正したら何かコンパイルも通って大体挙動も正しいということが経験できる。これはC, C++では絶対ない。
2023/07/01(土) 08:59:45.18ID:tCnNkKat
C++にもチェッカはあるけど、あんまり利用が普及しないんだよね
利用が普及しないから成長も遅い それがC++の現状の弱さ
2023/07/01(土) 09:26:47.55ID:LlqqD8Ud
これすごいな
https://www.youtube.com/watch?v=0O_kqQ4RQI8
20デフォルトの名無しさん
垢版 |
2023/07/01(土) 09:31:25.82ID:LlqqD8Ud
Unreal Engine の Rust化なんて永久に来ないわ
21デフォルトの名無しさん
垢版 |
2023/07/01(土) 09:34:27.40ID:LlqqD8Ud
>>7
ggrks と似てるね
2023/07/01(土) 10:28:15.98ID:PswK3kno
>>13
Rustコンパイラに選択肢が出来ることは良いことではないか!
恐らく史上最も稼働しているカーネルをビルドしてるのがgccだよ
23デフォルトの名無しさん
垢版 |
2023/07/01(土) 10:29:07.14ID:pfOq6Y2+
Rustはゲーム製作周りのクレートとかが不足気味な気はする。でも、機械学習系の有用なRust純正クレートはかなり増えてきてるとは思う。
2023/07/01(土) 10:34:43.25ID:V94vxKDE
こんなにモダンで優れた言語があるのに今からそびえ立つ💩のシープラやる人いるのかね
2023/07/01(土) 10:38:27.78ID:PswK3kno
>>24
後方互換性なめすぎ
MSは賢かった
2023/07/01(土) 11:47:08.23ID:X7ULfVQU
>>24
>>1 にもあるとおり、仕事では、やれと言われたものをやる
SwiftでもDartでもおなじ

問題は、自分用の推し言語
俺はもうちょっとC++でいく Rustの知見をC++に持ち帰るんだ
2023/07/01(土) 14:19:14.54ID:Ou05Fmyx
同じく仕事で必要なものを使う。
今はC、C#、C++/CLI、Python。
Rustをまずは趣味で始めたいが時間が取れないのと、C++/CLIで作りたいものがある。
2023/07/01(土) 14:28:25.90ID:6lyrDsv3
えっ
C++/CLIはもう……
2023/07/01(土) 14:37:04.32ID:8lOSkeAQ
C++/CLIは、C++20くるよ (ぐぐると、使えないっていう記事があがってくる
https://devblogs.microsoft.com/cppblog/cpp20-support-comes-to-cpp-cli/

C++やっててC#もやってたら、十分射程に入る
2023/07/01(土) 14:42:28.74ID:Z5Xk75uh
持ち帰るも何もRustにはできてC++ではできないことなんかないやろ
匙加減の問題でしかない
C++ではスマポ限定の所有権、ライフタイムの設定を全オブジェクトに適用した
文法的に厳しくした
プログラムの制限が増えたせいでコンパイラがプログラマのミスを発見できる範囲が増えただけ
C++で同じ事ができるようになるとすればコンパイラオプションで
“-strict_variable_management”みたいなオプション新しく作ってRustスタイルの厳密な変数管理でコンパイルできるコンパイラが出てこないと無理、そして結局それ使うならrustスタイル(=スマポスタイル)の変数管理法を勉強しないといけない
そもそももうすでにポインタ使うならC++でもc++11以降のスマポの利用推奨で非推奨の方法避けるなら、これからは所有権とライフスタイルの概念勉強するのが不可避になってる
2023/07/01(土) 14:56:45.83ID:PswK3kno
勉強するってほどの御大層なものでもあるまいw
32デフォルトの名無しさん
垢版 |
2023/07/01(土) 15:36:05.30ID:HnAv4FCA
匙加減ww
バカにつける薬は無いとは良く言ったもの

複オジもたいがいバカだと思うが
C++に執着してるやつが輪を掛けてバカだから
このスレはいつ見てもサル山の争い
2023/07/01(土) 15:42:32.57ID:Agv00JYF
この文章読んでc++を擁護してると読めるのはどこまで日本語力ないんやろ
プログラミング能力どうこう言う以前の知能しかない
2023/07/01(土) 15:44:12.22ID:vSBdii75
できることが多いイコール優れているってのが間違い
RDBからカラム制約を外してエクセルのように使って幸せになれるか?
2023/07/01(土) 15:48:16.48ID:Agv00JYF
まぁこの手の論争スレで人の意見を“敵か味方か”に2値で分類して絡んでくるんやろ
そう言う行為がみっともないと考える知能もない
便所の落書きだからこんなもんなんなも知らんどな
36デフォルトの名無しさん
垢版 |
2023/07/01(土) 16:16:02.46ID:fFzDLWcL
RustよりHaskellのほうが安全で速い
2023/07/01(土) 16:51:31.78ID:DYHMlldq
そもそも、STLなんて後から入ったものだから、それを使うことは
強制されて無いのに、STLの欠点がC++の言語としての欠点に
勝手にみなされてっしまってる。
これまでずっと、C++はBetter Cとして使うのが好まれていたのに、
Better Cとして使うのは時代遅れなんていっておきながら、
STLならではの欠点を指摘して、だから、C++を使うのは馬鹿なんだ、
と言ってくる。
Better CとしてSTLではないライブラリを使っている限り、
その欠点は入ってこないにもかかわらず。
2023/07/01(土) 16:58:20.28ID:DYHMlldq
そもそも、C++でもsmart pointerを使うのが必須、などと言っているが、
むしろ、そうすることが煩わしさを生む。
そうすることによって、むしろめんどくさくなったり、分かりにくくなったり
することがあるのだ。
勝手に smart pointer を使うのが必須であるとして、それがとても使いにくい
ことがC++の欠点だと昇華され、だから、Rustでないとダメなんだと。
しかし、smart pointer を大々的に使おうとしたことが煩わしさの根本で
あることに気づいてない。
また、速度比較などでも、伝統的な Better C としての C++ ならば、
STL も smart pointer も使ってなかったから、Rustより速いにもかかわらず、
勝手に「最新のC++のやり方」とその人が思っていものを使って、
遅い結果にしてしまって、それをC++の「最高の結果」だと勝手に断定
してしまう。
世の中には「改悪」という現象がある事をその人は知らない。
2023/07/01(土) 17:04:31.83ID:HHzlehAK
C#でWindowsフォームアプリで作成中にWin10では別途.net coreを配る面倒な事がわかってショックだわ。
Windowsフォームアプリケーション (.NET Framework)にしたいのだが作り直ししか無い?
2023/07/01(土) 17:07:45.38ID:HHzlehAK
>>39
すまん誤爆しました。m(..)m
2023/07/01(土) 17:31:35.89ID:DYHMlldq
マイクロソフトのMFCも欠点が指摘されやすいが、しかし、STLより便利なところもある。
MFCにはなかった問題点をSTLは沢山入れてしまった。
MFCはSTLと距離を置いている。
そして、デファクトスタンダードとしては、現代においてC++を使うとは
MFCを使うことに他ならない。ということは、STLはほとんど使われていない。
にも関わらず、教科書に書いて有るようなSTLの非常に煩わしいやり方を持ってして
C++が使いにくい、と言ってくる。
C++が愛されてきたのは、MFCのせいであってSTLのせいではないことを知るべきである。
2023/07/01(土) 18:38:56.14ID:PswK3kno
プログラマなのによくこんな駄文書けるな
ChatGPTで水増しさせた?
2023/07/01(土) 18:41:37.69ID:Ij0EQZmJ
偏見を承知で言うと
マイクロソフト依存症の人はそんな人が多い
2023/07/01(土) 19:01:28.94ID:kqCQiy8S
C#使いなよ
2023/07/01(土) 19:03:32.57ID:DYHMlldq
C#は絶対嫌だ。
2023/07/01(土) 19:05:40.48ID:ulppHLtb
>>14
Zig使ったこと無いけどエコシステムが整ってるなら使ってみたいな
2023/07/01(土) 19:08:35.56ID:DYHMlldq
そもそもSTLがC++のメインライブラリなどと思っている人は、
C++をまともに使ったことが無い人だ。
2023/07/01(土) 19:17:18.65ID:ulppHLtb
boostだろメインライブラリは
2023/07/01(土) 19:18:04.10ID:X54p6y1Z
C++のテンプレートは理想(言語仕様)と現実(コンパイラ実装)が乖離してたからな
module導入で多少はマシになるかもしれないけどnamespace残したままだからカオス度が増してしまった
2023/07/01(土) 19:23:55.22ID:DYHMlldq
MFCは問題が有ったが、それは主にWin32のWindow関連の
APIとの連携においての話。
STLはそれ以前の問題で書き方がおかしい。
現実にプログラミング経験が少ない人が勝手に考えた感じだ。
2023/07/01(土) 20:02:19.26ID:l24kSvWl
>>36
ライブラリがな
2023/07/01(土) 20:20:46.38ID:uVimT7AM
>>36
HaskellがCやRustより速いとマジで言ってるの?
53デフォルトの名無しさん
垢版 |
2023/07/01(土) 21:49:33.99ID:jAprZXCn
>>39
>昇華
doubt
54デフォルトの名無しさん
垢版 |
2023/07/01(土) 22:14:34.22ID:jAprZXCn
>>38
全体は同意
2023/07/02(日) 01:00:29.09ID:jzpBLYtw
C#に慣れるとMFCでGUIは二度と書きたくない
56デフォルトの名無しさん
垢版 |
2023/07/02(日) 01:02:51.98ID:ieCgx+H2
行列のサイズがでかくなるとシングルスレッドよりもrayonによる並列演算の方が速くなってくるな。
2023/07/02(日) 06:54:41.92ID:jdLDLriS
そもそもMFCはfull freeにならんから
ちょっと前まではそうだった、今もそうだよな

自分用なら、コンソール+C#(OSに同梱の古い枯れたやつ)でいいし
2023/07/02(日) 09:53:50.16ID:UHuzldRb
>>55
開放するの忘れてリークしまくる。
2023/07/02(日) 13:18:42.16ID:Xyim1/0J
GUIがかんたんになったのはここ10年くらいでしょ
それ以前は何を選んでも面倒で難しかった
2023/07/02(日) 13:20:54.90ID:Xyim1/0J
IDEの性能や極まったポトペタ感で昔より作りやすくなってる
言語そのものじゃなくその周辺が作りやすさを決めてるだけじゃないか?
2023/07/02(日) 13:53:16.00ID:Xyim1/0J
RustのGUIってそんなに作りやすいか?
2023/07/02(日) 14:19:07.95ID:fG7MSDtE
GUI用のDSL(マークアップ)がある言語に比べればまだまだでしょ
Rustもマクロ使えばDSLくらいは組めそうだけど
最近は内部ブラウザみたいな代替技術があるから需要が少なそう
63デフォルトの名無しさん
垢版 |
2023/07/02(日) 15:12:58.96ID:BV1CApnr
>>59 難しいと思ったことは一度も無いな
>>61 Tauri は糞
2023/07/02(日) 15:49:02.90ID:OihXi6HP
TauriやElectronはGUIといっても
・マルチプラットフォームでスマホ対応も進行中
・Webと同じ知識技術で作れる
・Webアプリへとの共有や移行が容易
と大きなメリットがあり
VSCodeなどこの方式で成功しているアプリが多数ある
2023/07/02(日) 15:52:44.86ID:nM9kee/9
Rustで全てが非同期かつコンポーネントベースのGUIライブラリを作る機運が生まれてる
描画から全部自前でやる本当のネイティブ版Reactのようなもの
2023/07/02(日) 18:19:31.18ID:owOvhd2B
GUIをC++やRustでやる意味とは
UEだけだろ意味あるの
2023/07/02(日) 18:40:53.06ID:nM9kee/9
>>61
全てがasyncでコンポーネント化されている
これこそ次世代のGUIライブラリとなる
これを作れるのはrustのみ
2023/07/02(日) 19:45:01.65ID:l4k0OEWm
すべてasyncとか死ぬほどめんどくさそう
2023/07/02(日) 19:49:14.43ID:T91CalxQ
いやGUIだとそれが普通なんだよ
UIスレッドでブロッキングAPI使えないのだからその設計が普通
今までのライブラリの設計がミスってた
2023/07/02(日) 19:55:13.31ID:T91CalxQ
このライブラリがかなり理想に近い
https://wishawa.github.io/posts/async-ui-intro/

見てもらえればわかるがほぼReactだ
しかも全てが非同期なので非常に速い
71デフォルトの名無しさん
垢版 |
2023/07/02(日) 20:01:17.15ID:OihXi6HP
そもそもJavaScriptが非同期に動き並行プログラミングだからね
2023/07/02(日) 21:45:39.87ID:aMd0Z/JA
C#もそんな感じだろ
メッセージポンプスレを止めちゃいけないからとか聞いた、そういやそうだよな
モダンだね
2023/07/02(日) 21:52:34.41ID:T91CalxQ
C#は残念ながらブロックする処理を書く場合はスレッドを立てなきゃいけなくて遅い
さらにUIスレッドへの同期コンテキストが必要でその分さらに遅い
2023/07/02(日) 21:59:34.59ID:jzpBLYtw
結局のところOSの描画API呼び出すから、
最終的にUIスレッドに描画任せないといけないのはどのライブラリでも変わらん
2023/07/02(日) 22:04:50.40ID:OihXi6HP
>>74
それは違うんじゃないか
例えばファイル読み書きもOS呼び出すけど
並行プログラミングができていれば
シングルスレッドでもファイル読み書きでブロックされず
待ち時間に他の作業をできるよ
そこにマルチスレッドや描画専用スレッドの必要性はない
2023/07/02(日) 22:08:24.86ID:jzpBLYtw
OSの仕組み理解してなさそう
2023/07/02(日) 22:27:06.93ID:ajw2MJiV
>>76
OSの仕組みを理解していないのは君だ
Linuxならepollなど
WindowsならIOCPなどを勉強しなさい
2023/07/02(日) 22:31:37.38ID:T91CalxQ
なぜ非同期が良いか?
UIスレッドが呼び出しても何の問題もないことが保証されてるから
これはnode.jsが気が付かせてくれたパラダイムシフトだよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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