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/
159デフォルトの名無しさん
垢版 |
2022/02/12(土) 09:46:16.21ID:nCAwro3+
>>158
机上の空論でない言語は何よ?
2022/02/12(土) 10:21:13.78ID:ZjQpgox3
アセンブラとC言語
使わないけどFORTRANとCOBOLもそうかな
161デフォルトの名無しさん
垢版 |
2022/02/12(土) 10:44:19.07ID:lHDa3hl7
>>160
ADAは?
162デフォルトの名無しさん
垢版 |
2022/02/12(土) 11:06:25.45ID:4ZF6L5uh
>>159
横やけど
俺もC言語だと思ってる。
2022/02/12(土) 11:24:57.04ID:ZjQpgox3
>>161
Ada は(少なくとも出た当時は)けっこう机上の空論ぽい機能てんこ盛りだった
164デフォルトの名無しさん
垢版 |
2022/02/12(土) 11:27:00.51ID:nCAwro3+
Cは貧弱すぎだろう。いまさらmallocとか書く気もおきん。
2022/02/12(土) 12:03:28.21ID:yRIrPLWC
>>158
C++の問題よりはマシだろ
2022/02/12(土) 12:07:09.85ID:XghCcbPA
前にこれをC++スレかどっかで発言したら結構叩かれたけど
C++って結局はテンプレートが言語の真ん中にあるよな
他の言語色々やった上であらためてC++見ると俺にはそう見える
一応マルチパラダイム言語だからC++しかやったことない人は
テンプレートだけをフォーカスされるのは不服っぽいけど
167デフォルトの名無しさん
垢版 |
2022/02/12(土) 12:08:32.56ID:v8ccrYYP
テンプレートは強力だよな
2022/02/12(土) 12:12:41.52ID:XghCcbPA
Cではちょっとしんどいです
いろんなコンテナ使いたいです
そんとき型をパラメータ化したいです
ハゲ「テンプレートでみんな幸せ」
C++er「やったぜ」

C++規格の関係者「いろいろ仕様につっこんだぜ!」
C++er「あっはい」
2022/02/12(土) 12:42:37.24ID:Wnw3K02J
>>166
概ね同意
テンプレートは便利だけど使いすぎてワケワカメってなりがち
2022/02/12(土) 13:44:38.22ID:v8+/CWv5
Rustでバブルソート書いてみたがすげー書きやすいな
食わず嫌いだったかもしれん
コンパイルエラーがめっちゃわかりやすい
2022/02/12(土) 13:57:38.37ID:w2XePdCb
ほんとかよw
2022/02/12(土) 14:50:46.51ID:wXyEGH3A
バブルソートw
2022/02/12(土) 15:04:29.49ID:kx8mtXuQ
バブルソートw
笑うとこかよ
2022/02/12(土) 15:45:26.65ID:yRIrPLWC
確かにエラーは笑っちゃうくらい親切だわな
2022/02/12(土) 16:16:36.29ID:zOhO24og
rustのエラー報告は全てのプログラミング言語で最高の親切さだと思う
他の言語がサボりすぎなんだよな
rust書くと他の言語かけなくなる
176デフォルトの名無しさん
垢版 |
2022/02/12(土) 16:54:42.98ID:zd9UI5Og
そんなバブルソートバカにせんでもよかろうに
大学一年で最初の方に習うし、初めての言語触るにはまあまあ良い題材では
2022/02/12(土) 17:44:36.13ID:91xKDv7O
少しいじってcombソートにしたらクイックソートにもひけをとらないしな。
178デフォルトの名無しさん
垢版 |
2022/02/12(土) 17:55:38.68ID:nCAwro3+
Rustで双方向リストをマージソートでソートするとかだとめんどくさいことになる気がする
2022/02/12(土) 18:09:42.02ID:REfvKUVO
バブルソートがすげー書きやすいってどのへんが?
逆にそんなもん書きにくい言語なんてあるの?
fn main() {
let mut v = vec![8, 4, 3, 7, 6, 5, 2, 1];
let bsort = |v: &mut Vec<i32>| for i in 0..v.len() {
for j in 1..v.len() - i {
if v[j] < v[j - 1] {
v.swap(j, j - 1)
}
}
};
bsort(&mut v);
println!("{:?}", &v);
}
↑書いてみた
細かいところは日本語版wikipediaに準拠
2022/02/12(土) 18:12:12.77ID:/iL1/Dd6
ソートの話はどうでもよくて要点はRustに対してのこの部分だと受け取ったが

>>170
> 食わず嫌いだったかもしれん
> コンパイルエラーがめっちゃわかりやすい
181デフォルトの名無しさん
垢版 |
2022/02/12(土) 18:34:19.97ID:v8ccrYYP
>>180
同意
2022/02/12(土) 19:15:40.31ID:1IxSArcj
バブルソートは理解が難しいわりに現実に使われんのがな。
それだったらクイックソートをだな。
2022/02/12(土) 19:50:02.51ID:ZjQpgox3
>>182
> バブルソートは理解が難しい
えっ?
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

作り話はもっとうまく作れ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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