C vs C++ vs Rust Part.3

■ このスレッドは過去ログ倉庫に格納されています
2022/01/27(木) 22:19:47.56ID:avZQ9Wm7
闘え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
C vs C++ vs Rust Part.2
https://mevius.5ch.net/test/read.cgi/tech/1639539350/
184デフォルトの名無しさん
垢版 |
2022/02/12(土) 19:53:57.23ID:772ADf0k
>>183
頭の良さは人それぞれなんだから馬鹿にしない
185デフォルトの名無しさん
垢版 |
2022/02/12(土) 21:02:43.90ID:kBzBXJs5
ダブルアレイは原理が簡単にもかかわらず、十分バグが取れるまでずいぶん時間がかかった。
2022/02/12(土) 23:07:39.79ID:wXyEGH3A
CPU時間をたらふく使うバブリーなソートだよな
2022/02/12(土) 23:55:25.98ID:x20bdFcp
>>180
Rustはコンパイラが出すエラーメッセージが詳しすぎて解決案まで示唆してくれたり親切すぎる
他のコンパイラ言語だけでなくインタプリタ言語まで広げても一番親切なプログラミング言語システムだと断言できる
2022/02/12(土) 23:56:38.45ID:zNyDeBid
まあC++にテンプレートないならそこまで使わんわな
2022/02/13(日) 01:14:02.16ID:z8C8/2EV
Stroustrup氏の脳内では、テンプレートの目標が高速化であるということなのが
問題の始まりの気がする。
2022/02/13(日) 01:20:30.65ID:z8C8/2EV
マクロ=高速化用途で使われているもの
という見方が如何にも実用プログラムを書いたことの少ない学者だと思う。
2022/02/13(日) 09:42:52.30ID:LKJBNTq1
C++からテンプレート取ったらなにも残らない
2022/02/13(日) 09:51:25.60ID:0Lo3ZZ1+
いや残るだろ
2022/02/13(日) 10:12:41.48ID:jQxqAel+
STLなくなっちゃう
2022/02/13(日) 10:25:11.79ID:yoBtg/nD
>>186
その代わりメモリーは使わないから貧乏な俺でも使える
2022/02/14(月) 23:17:34.32ID:T9mSH3bb
>>179
そういうことではなく
おそらく>>170が言いたいのはコンパイラが出すエラーがめっちゃ親切なことだろう
こっちで書き換わってるからここにmutを付けなさいとか
ここで所有権が移動したのに後で使用してるからここに&を付けなさいとか
これをuse宣言するのを忘れてますよとか
この変数は宣言されず使われていますがこの変数名のスペルミスではありませんかとか
といった簡単なものから
複雑な借用関係をちゃんと登場人物たちをはっきりさせてあっちとそっちがこれこれでマズいのでこうしてみたらどうかなど
こんなにきめ細かく親切なエラーを出すコンパイラ&インタプリタは他の言語と比べてもトップではないか
2022/02/15(火) 00:19:44.75ID:kCmeQXW/
>>151
デマは辞めようね
197デフォルトの名無しさん
垢版 |
2022/02/15(火) 00:24:28.01ID:tssMbTRA
>>195
同意
2022/02/15(火) 07:23:31.22ID:A9ZkwK3T
>>195
そこは目から鱗だよな
ここまでできるなら、他の言語も頑張れよと言いたくなる
2022/02/15(火) 07:51:21.06ID:aaenmMxg
言語として所有権の概念がないからその辺りの指摘はしないけどVS2022のC#も結構色々提案してくれるぞ
2022/02/15(火) 09:28:59.50ID:CNcLOkDE
このながれでこれを言う意味なんてないけど
わかるやつだけわかってくれたらいいんだけど
Rustのコンパイラ昔は酷かったよな
無慈悲なボローチェッカと戦ってたよな(´;ω;`)
2022/02/15(火) 09:42:41.51ID:qxt1mofg
まだメジャーバージョン1だしそりゃまあ
2022/02/15(火) 11:48:06.88ID:je481k6i
>>200
コンパイラというよりもnon lexical lifetimeが入る前の言語仕様の制約が厳しくて辛かったんじゃないかな

>>201
コンパイラのバージョンがsemverにしたがってるうちはメジャーバージョンアップしないんじゃないかな
基本的に過去との互換性は崩さないし、必要ならエディションで非互換な変更もできるようにしているので、
メジャーバージョンアップしてまで互換性崩したい理由がなさそう
2022/02/16(水) 19:19:14.27ID:lHwbgihf
どこかでPython 2 -> 3みたいなことが起こるかもよ
2022/02/16(水) 20:18:02.36ID:oWbPDf/g
>>203
Rustは後発言語なだけあって
今どきのプログラミング言語の成功部分を洗練して採り入れてる
だから互換性のないバージョンアップをする時はRustより新しい言語が新たに成功してそれをRustも採り入れたくなったが互換性を維持したままでは出来ない時が来てから
2022/02/17(木) 03:10:03.97ID:reqFguXW
RustとかNimは第何世代の言語なん?
2022/02/17(木) 11:44:19.88ID:RuZDOzbq
>>205
第4世代の高水準言語の仲間じゃね?
2022/02/17(木) 23:40:19.82ID:W9idHeI8
>>202
そのnon lexical lifetimeが入る前の言語仕様の制約が厳しい件なのかどうか教えて
このリンクリストの実装でpush_back()のコードがlifetimeでコンパイルエラーとなる話
https://qnighy.hat
enablog.com/entry/2017/05/06/070000
今このコードをコンパイルすると問題なく通って実行もできてしまう
Rustのコンパイラはどんどん賢くなって制約が無くなっていってるんだな
2022/02/18(金) 00:44:32.85ID:yXo12zTr
Rustって普及するんすか
2022/02/18(金) 00:54:27.33ID:WX40LAaF
>>195
エラーメッセージの親切さで言うとVC#がトップだと思ってるけどそれ以上?
C++でハマったときの沼の深さは異常だからそんな親切なら乗り換えたくなってきたな
2022/02/18(金) 00:57:20.21ID:Dn+7AFaS
rustのコンパイる中ってみんな何してんの?
2022/02/18(金) 01:32:33.29ID:7ZNuwX6P
>>207
push_backの例はまさにNLLでコンパイル通るようになるコードだね
2022/02/18(金) 02:16:48.89ID:0USC0+1K
C++のTMPのエラーメッセージとRustのジェネリックのエラーメッセージ
C++のはもはや意味不明だがRustのはまだ人間が読める
2022/02/18(金) 15:09:52.72ID:6v8ahY7t
あまりに親切すぎるメッセージなので、それならそういう風に変更したものをコンパイルしてみて、「こう変更したらコンパイルできました」となればいいなぁ

とRebuildの宮川さんが言ってました
2022/02/18(金) 15:36:44.00ID:7ZNuwX6P
cargo check --fix である程度は勝手に修正してくれるんだっけ
2022/02/19(土) 08:57:52.80ID:AlOKsuc0
>>209
C#も親切だけど、Rustはそれ以上だよ
これらに比べると、C++のは情報が無いも同然
2022/02/19(土) 09:04:29.27ID:59REwZPX
何言ってんだこのバカ
2022/02/19(土) 09:05:12.66ID:Wd6uYUeM
C++でハマるのはむしろコンパイル通ったあとだからw
みんなそれはご存知だとは思うけどw
2022/02/19(土) 09:12:00.22ID:l5YLFJyt
Rustはコンパイルが通ればメモリ問題や競合問題が起きず、プログラム自体に専念できるのがいいよな
そしてコンパイラが出すエラーが親切に手取り足取りしてくれて、すぐ修整できてコンパイルも通しやすい
2022/02/19(土) 09:37:18.64ID:AG6SdX6W
>>218
つくづく考えた奴は天才だとおもうわ
逆になんでいままででてこなかったんだろうとも思う
Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような
linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
2022/02/19(土) 10:49:58.66ID:lpo/y5Sw
>>219
書き直したとして、1日でビルドできたらいいね
2022/02/19(土) 11:06:51.15ID:UkMRjGML
Rustの考え方の基になったCycloneが目指してたのがまさにそれだね
2022/02/19(土) 11:25:52.64ID:x/upE6G9
>>219
> Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような
GNUって言うかストールマンはその考えでしょ

> linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
言い出しっぺの法則ヨロ
2022/02/19(土) 11:45:04.32ID:AG6SdX6W
>>222
いや、マジで俺がやってもいいぞ
誰もやってなかったら俺が次のLinusになれるってことか
むしろお前らは絶対に真似しないでほしい
2022/02/19(土) 12:04:13.57ID:ukdLXHKY
rustのコンパイルが遅いのは依存ライブラリやジェネリスクの実体化によりコード量が多くなっているからで
コンパイラ自体は並列化とか頑張ってて高速という話を聞くけど実際のところCやC++と比較してどうなんだろうね
ヘッダファイル周りの枷がある分CやC++が優位とも簡単には言えない気がする
2022/02/19(土) 12:21:08.88ID:ZWczq9Ua
>>223
真似はしないから一つだけ聞いてみたい
どこから書き直し始める?
2022/02/19(土) 12:59:28.88ID:NbUDuEDT
コンパイラの並列化で
数十コアも効率良く使えるなら
実質的にコンパイル時間は無視できる
2022/02/19(土) 13:06:40.37ID:AG6SdX6W
>>225
main()かな
2022/02/19(土) 13:33:27.92ID:6TS2kFRN
>>227
無理無理w
2022/02/19(土) 14:08:34.48ID:AG6SdX6W
>>228
まあそれは冗談でも「rust os 自作」でググるといろいろでてくるからそれを参考にやってみるわ
rustでOS作ってる先達者が結構いるみたいだからそれを参考にLinuxカーネルの移植をがんばってみるわ
2022/02/19(土) 14:33:33.28ID:ZWczq9Ua
>>227>>229
まあそんなんだろうと思ってたけど、せめてリーナスがなぜLinuxを作ろうと思ったか、どんな哲学で設計したかぐらいは読んでみると良いと思う
タダで読める情報はいくらでもある
2022/02/19(土) 14:47:00.85ID:AG6SdX6W
>>230
「それがぼくには楽しかったから 全世界を巻き込んだリナックス革命の真実」は読んだけどそれじゃだめかな?
2022/02/19(土) 14:48:10.94ID:xNWdpb+t
現時点で2200万行もあるから、完全に移植しようとしたら毎日1万行のコードを移植し続けたとしても、6年はかかるね
そんな爆速で順調に行くわけないし、よっぽどの天才でもなければ1人では生涯に終えるのは無理かな

省ける部分を省くとしたら、何万行になるのかな?
2022/02/19(土) 15:29:14.09ID:AlOKsuc0
>>224
C/C++に比べたら速いよ
でも、C#に比べたらC/C++と同列に遅い、という程度
2022/02/19(土) 15:51:49.27ID:6TS2kFRN
rust触ったことないからわからないけどC/C++よりコンパイル速いわけないじゃん
2022/02/19(土) 16:17:48.81ID:x/upE6G9
Rustのコンパイルが遅いようです。なぜですか?
https://prev.rust-lang.org/ja-JP/faq.html#why-is-rustc-slow
2022/02/19(土) 16:25:04.60ID:oF6CN3LV
>>233
CとC++を一緒にすんな
2022/02/19(土) 16:28:39.65ID:lVeS0ElI
>>235
それ4〜5年前の古い情報
URLにprevとありそのトップページに2018年12月6日とあるように昔のページを残してある
2022/02/19(土) 16:53:58.55ID:V3h8uUoV
>>237
で、これより新しい情報あるの?
2022/02/19(土) 18:57:21.37ID:ukdLXHKY
フルビルドと差分ビルドで区別して議論しないと比較難しいね
あと差分ビルドについてもバイナリ生成までするのかソースのチェックで十分なのかでまた変わってきそう
2022/02/19(土) 21:09:06.50ID:tV1lc2OB
Rustって普及するんすか
2022/02/19(土) 21:24:23.44ID:kSnJ/KwP
いいえ、あなたには必要ありません
2022/02/19(土) 22:54:34.42ID:zY+XWPI2
流行る言語は登場から10年くらいでウワーっと大流行するんだが、Rustにはそんな気配はないから
精々Goとかと同じような感じにしかならんやろなー。
2022/02/19(土) 23:26:45.94ID:lVeS0ElI
>>240
新規案件がC++ではなくRustになっていきつつあるように
じわじわと着実に置き換わっていくのだろう
一方的にC/C++が喰われていくのが止まる理由も見つからん
2022/02/20(日) 02:10:18.88ID:5KrZlkth
Rustの案件なんてないよ
2022/02/20(日) 02:51:48.98ID:Q+YkyZIv
>>242
goレベルでも十分流行ってると言えると思うんだけど
2022/02/20(日) 06:11:08.95ID:rMSJWNa2
>>240
VisualStudioの新規プロジェクトの作成でデフォルトで選べるようになれば普及するだろうね
2022/02/20(日) 09:55:15.25ID:c+ifp9sQ
>>246
C++もVC++が出てから一気にCを喰い始めたしな
なんだかんだWindowsの影響力はめちゃくちゃ大きい
2022/02/20(日) 11:25:19.25ID:Q+YkyZIv
当時と今とじゃデスクトップアプリの置かれてる状況が全然違うと思うけど
2022/02/20(日) 12:09:19.72ID:28EWOJnb
何をもって普及とするかといえば、まだにVB書いてるやつもおるし、組み込みではRustなんて考えられないし、フロントエンドは
JS/TS/Nodeでほぼ不動。そうなるとJava/C#、Railsなどのビジネス系エンタープライズだが、メニーコア用のGoとかのほうが
敷居が低い分だけ人を確保しやすい。言語的な優劣では普及は進まない

当然、高スループットが求められる大企業のエリートでは使われるだろうけど、日本の中小企業で使われるとか想像ができない。
奇々怪々C++は食われていくだろうけど、マイクロコントローラなどでCが食われるなんて無い。データ分析はPythonとかJuliaとか
ビックデータはHadoop・Spark(JavaやPython)だろう

だが当然ながら*nix系は一歩先を進んでるRustだが、ちんまいコマンドラインのプログラムとか、デバイスドライバだとかそういう
分野でしか使えない(使われない)と思う。あとは自動運転なんかのプログラムならRustが使われてたりするが、そういう
技術者はPythonも使えるし、Juliaなんかもすぐ覚えられる。スマホアプリ系もRustなんてありえない

あと残るのはデスクトップアプリケーションとか、これも今はElectron系とかがあるのでネイティブで書く意味があまりない
2022/02/20(日) 12:14:16.60ID:RjCQdBpa
普及なんてしなくていいんだよそもそも
それを必要とするやつの手に届いたら十分なんだよ
C++でやってた分野の一部でもRustで書き換わって
それでメンテする連中がラクできることになって
一方でユーザ側にも恩恵はあるだろうしそういうのでいいんだよ
ド素人のアマチュアプログラマに届く必要はないんだよ
2022/02/20(日) 12:26:24.06ID:TEB+ikpz
普及しなくていいし、してもらいたくない
なぜならうちの会社が業界でトップを維持してる秘密だから
他社のウエブサービスより圧倒的に早くセキュアなのはずばりRustをつかってるから。
その前はLispを使ってた。
だから真似してもらいたくない。
まあ、真似できないたまろうけどw
2022/02/20(日) 12:34:20.56ID:Q+YkyZIv
>>249
これrustに限らず、現状がそのまま続いて新たな言語で置き換わることはないだろうとしか言ってないよね
2022/02/20(日) 12:48:19.88ID:RjCQdBpa
>>251
そういうことやね
それを必要としてるやつはコッソリ一人で握り込んで
それを優位に役立てていくだけのことだから
254デフォルトの名無しさん
垢版 |
2022/02/20(日) 12:53:50.15ID:pLBa4/kQ
>>249
組み込みはrust向きなとこなんじゃないのかね。組み込み業界のことは一切知らんからアレだけど。
2022/02/20(日) 13:19:37.41ID:5KrZlkth
Rustが組込向きかどうかはともかく、LinusはC++に対してはCの問題を何一つ解決せず、事態を悪化させるだけと言っていて、Rustについてはドライバを書けるようにするところまでは実際にやってきているらしいよ
2022/02/20(日) 13:40:02.09ID:QnKhevyf
>>249
組み込み以外にミドルウェアらへんでも使われるようになると思う
OS、RDBMS、Webサーバとか

ミドルウェアよりも上位レイヤーのアプリケーションだけで見ると、GCがある言語でもだいたい十分そうだし、Rustは目立たなそう
2022/02/20(日) 13:49:36.22ID:NF24OHT2
rustはc++よりbetter cしてるから徐々に市民権得るだろうな
2022/02/20(日) 14:01:22.11ID:uUEkIMOM
>>251
> 他社のウエブサービスより圧倒的に早くセキュアなのはずばりRustをつかってるから。
おお、なるほど

> その前はLispを使ってた。
ズコーッw

作り話はもっとうまく作れ
2022/02/20(日) 14:21:18.20ID:xQDNRCh/
Rustってクロージャの再代入できない?
null許容することになるから出来ないようにしてる?
2022/02/20(日) 14:31:26.55ID:Q+YkyZIv
型が同じなら再代入可能だけどクロージャはそれぞれ別の型を持つので単純には代入どきない
Box<dyn Fn()>などに変換すればできる
261デフォルトの名無しさん
垢版 |
2022/02/20(日) 16:38:17.59ID:xcGmkjoA
>>249
ゲーム系のWASMとか
2022/02/20(日) 18:49:49.78ID:xQDNRCh/
>>260
ふーんそうなの
Box調べてみるわ
263デフォルトの名無しさん
垢版 |
2022/02/20(日) 19:16:43.92ID:eM0QoFz6
Lispってセキュアなコード書くのPythonより難しくないか
2022/02/20(日) 22:26:50.09ID:uSEnVnLU
こちらのまわりではスクリプト言語で書かれていた物の高速化でRustへ移行が多いな
レスポンスの意味での高速化もあればリソースとしてのCPUタイム激減もある
使用メモリも激減するためクラウドでもオンプレでも費用支出が激減し桁が変わる場合もある
2022/02/21(月) 08:03:12.70ID:J/Dh0skf
>>255
さすがにc++03とかと比較されても……
266デフォルトの名無しさん
垢版 |
2022/02/21(月) 08:27:27.48ID:JVbzDyQT
よく知らんのだけど、カーネル書くのに抽象化って必要なの?
もしいらないんだとしたらC++がカーネル書くのになんのメリットもないと考える気持ちもわかる気がする
Rustの場合は安全性がついてくるので抽象化がなくても使う価値がある
2022/02/21(月) 08:42:47.98ID:OCv9XetQ
Rustのオブジェクトシステムって実際C++のそれと比べたら遥かにわかりやすいよな
traitって概念ほんまありがてえわ
2022/02/21(月) 08:51:29.17ID:NpsKB2au
>>265
元ネタはコレ
https://developers.slashdot.org/story/21/04/17/009241/linus-torvalds-says-rust-closer-for-linux-kernel-development-calls-c-a-crap-language
2022/02/21(月) 08:57:14.48ID:qHKOEqJY
>>266
パッと思い浮かぶのはファイルシステムと仮想ボリュームぐらいだけど、C++がメリットになるとは思えんな
2022/02/21(月) 12:01:24.19ID:L89iNs1x
>>264
DiscordがGoで作られてたバックエンドの一部をRustで書き直したらめちゃくちゃコスト下がったってニュースあったな
C++がRustに置き換わるってよりスクリプト言語やGC言語で作られたものが置き換わっていくのがまず先だろう
2022/02/21(月) 12:15:00.96ID:NpsKB2au
どうでもいいけど、このスレ個人の思い込みと間違いだらけに見えるな
2022/02/21(月) 12:25:54.59ID:R0Wvqlvm
>>270
それは今でも粛々と置き換わってるだろう
Rustが使われるのは、スクリプトやGC言語ではパフォーマンスなどが得られない分野なんだろうと思う
2022/02/21(月) 12:29:39.29ID:/1Q8PAGZ
DiscordがRustに移行した当時のGoは大分ウンコだったけど、今ではわりとマシになっちゃったよ
2022/02/21(月) 12:50:01.46ID:hkBHJMBS
Goってもうジェネリック入った?
2022/02/21(月) 12:51:46.86ID:Vy+crfrM
>>271
隔離スレに多くを求めすぎ
2022/02/21(月) 13:09:04.30ID:NpsKB2au
なんでこうなっちゃったんだろうね。一部の馬鹿が日本をどんどんダメにしてる気がする。もっとちゃんと比較できるよう上手く使えばいいのに。
2022/02/21(月) 13:20:49.36ID:/1Q8PAGZ
>>274
ああ、おれが言いたかったのはGCの停止時間がマシになったよ、ってことだけだよ
言語機能は大して変わってない
でもGenericsは今月中のリリースが予定されてる1.18に載るはず
2022/02/21(月) 13:41:53.53ID:Jx3FjySw
昔マイコンBASICって雑誌があってだな
2022/02/21(月) 14:41:23.11ID:RtL8dE4+
GCがある言語のパフォーマンスが悪いというのは思い込み
280デフォルトの名無しさん
垢版 |
2022/02/21(月) 15:52:49.19ID:8WYOAA82
>>279
トータルのパフォーマンスが問題じゃないんだ、予期せず処理が詰まったり急に負荷があがったりするのが問題なんだ。
まぁ今時のGCはストップザワールドは起きないだろうけど。
2022/02/21(月) 17:02:58.71ID:RtL8dE4+
>>280
GCが動いて困る場合は、現状でもC++かCなどで実装されているはず
なので、パフォーマンスを向上させる目的でGCあり言語をRustで置き換えるというのは、あまりないと思われる
2022/02/21(月) 17:03:00.28ID:dkDp5UUZ
>>278
俺はIO派。その前は月間マイコン。
2022/02/21(月) 17:06:01.87ID:dkDp5UUZ
>>281
あるよ。いま、うちがやってる移植プロジェクトはその案件。
他社がそんな考えだから今の所引く手あまた。一社独占。大阪にもう1社あるってうわさだけど。。。
客が数十件待ってる状態。年収軽く3本いくわw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。