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/
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
2022/02/21(月) 17:10:20.58ID:RtL8dE4+
まぁ、GCの弊害がわからず採用して実稼働に入って困ったような技術要素選定バグの場合は、言語置き換え対象としてRustが選ばれるケースはあると思う
2022/02/21(月) 17:12:56.49ID:RtL8dE4+
>>283
GCの問題じゃなくてパフォーマンスの問題でリプレースなの?
元言語何?
2022/02/21(月) 17:16:52.14ID:RtL8dE4+
年収3本って3000万ってことか?
内容から、フリーランスでRustへのリプレースを専門でやってる感じだが、個人特定されかねないぞw
2022/02/21(月) 17:17:29.45ID:k9jZTatR
>>283
レアだから現在のcobolみたいなもんか
2022/02/21(月) 17:18:15.19ID:Gf4lGfIx
聞いてもない年収語るような奴の相手すんなよ…
2022/02/21(月) 17:46:13.57ID:hWQuQvUr
Rustに置き換える理由はパフォーマンスより保守性とか堅牢性だと思う
開発者が少ない現状だと単純に保守性向上のためだけに外注するようなケースは少なそうだけど
今のシステムが不安定で改修もままならないからRustで作り直すってケースなら結構ありそう
2022/02/21(月) 17:56:15.16ID:9wSZ8YP/
トヨタなんかの車載システムはCとRustで開発してるとか聞いたことあるが
2022/02/21(月) 17:58:36.91ID:H7trbIGN
車でストップザワールドはまずいわな
2022/02/21(月) 18:02:07.18ID:LC1rF3os
>>281
今までGCありスクリプト言語をRustへ置き換えたり置き換えつつある
GCの有無は条件ではないのだけど速さ省メモリに安全性と書きやすさ等でRustとなった
2022/02/21(月) 18:07:56.53ID:NpsKB2au
9割嘘
2022/02/21(月) 18:30:22.78ID:Vy+crfrM
>>284
サービスの立ち上げ期にGC影響も見越してカリカリにチューニングするってのは早すぎる最適化なんじゃないのかね
rustで他の言語と同じくらいの早さでサービス作れる人材がそろってるなら良いが
2022/02/21(月) 18:32:07.53ID:kwaQcaho
スクリプトからの置き換えとして、VMを配布したくない(JVM/.NETが除外)、それなりに言語機能が欲しい(Goが除外)となるとRustくらいしか残らんのだよな
逆にそれらを許容できるなら別にRustじゃなくていいんだが
2022/02/21(月) 18:34:26.10ID:shT+MRih
Firefoxがいまだに勝てないのに速さとか言われてもな、省メモリならEdgeだし、自分たちがしたいだけでしょ
2022/02/21(月) 18:43:26.39ID:NpsKB2au
VMとかgoとかスレ違い
なんでC/C++/RustでGCとか出てきてんだよ
ム板ならGCの話をするならスレ立てて簡易実装くらい出して、有無の差異、モデルの差異、各言語の比較をしてほしい
前提の違う話を複数絡めて盛りすぎ
※明らかな嘘は論外
2022/02/21(月) 18:50:49.00ID:lBTJyZA6
うちはNode.jsからの移行先がRustになった
JavaScriptよりプログラミングしやすくなった
2022/02/21(月) 22:12:40.35ID:TSmsigpa
C vs C++ vs RustなんてRust圧勝で勝負ついてるんだから話すことなくない?
2022/02/21(月) 22:17:05.24ID:Gf4lGfIx
だったら黙ってれば?
2022/02/22(火) 00:25:06.07ID:5VMYN97O
>>300
なんだよ偉そうに
2022/02/22(火) 07:36:54.62ID:3cXa2TFM
>>299
言語機能としては圧勝なんだが、人やソフトなどの開発環境が惨敗だから困るんだよな
2022/02/22(火) 09:09:32.46ID:5VMYN97O
>>302
今一人勝ちのJavaだってそうなるまでに20年かかったんだから今判断しても意味なくね?
2022/02/22(火) 10:17:05.86ID:5VMYN97O
>>258
Lispとかいたらズコーってされたけど適材適所だと思うぞ
ルンバがLispで書かれているのは知ってるよね?
強力なメタプログラミング機能とインタラクティブな開発が必要なら採用してみてもいいのでは?
2022/02/22(火) 10:34:56.38ID:AiPUeoxY
>>304
セキュアなWebサービスはどうしたんだよw
2022/02/22(火) 11:24:36.79ID:FcgRLtLU
rustに置き換えようとして担当が逃げ出したプロジェクトがかなりあるわ。。これからその地獄がはじまる。
2022/02/22(火) 11:47:19.90ID:5VMYN97O
>>306
うちにもってきてよ。やってあげる。
308デフォルトの名無しさん
垢版 |
2022/02/22(火) 12:20:08.49ID:kvixU8HR
どうしたらLispでセキュアなwebサービス作れるん
2022/02/22(火) 12:37:25.61ID:5VMYN97O
>>308
作れないからRustにしたんだよ
2022/02/22(火) 12:41:08.18ID:fFHtSmjB
Lispだろうと多言語だろうと新しめの通信とかSSLとかのライブラリを探すとこからスタートじゃない?
311デフォルトの名無しさん
垢版 |
2022/02/22(火) 13:10:26.52ID:gqoJFVcX
Javaは言語登場から10年くらいで多くの人が利用してたし開発環境も続々でとような。
2022/02/22(火) 13:12:29.23ID:G6nBeheJ
明らかな嘘だけになったなw
2022/02/22(火) 13:38:49.42ID:FcgRLtLU
>>307
好きなの、残らず持ってってええぞ
ttps://jp.indeed.com/Rust%E9%96%A2%E9%80%A3%E3%81%AE%E6%B1%82%E4%BA%BA
2022/02/22(火) 21:22:01.94ID:y2qiytj8
>>306
置き換え元のコードが酷かったんじゃね。C++のコードとかだいたい酷いし。
2022/02/22(火) 21:38:20.03ID:Uj7UhjXB
現役プロダクトのコードを別言語に置き換えるのってrustに限らず大変なのでは
全面的な置き換えはプロダクト全体の再開発に等しい
特定の担当に押しつけるのではなくチーム全体で徐々に新規部分から置き換えた方が成功率高そう
2022/02/22(火) 21:54:32.13ID:B2H8wIkZ
>>314
> C++のコードとかだいたい酷いし。

×だいたい酷い
○すべてが酷い
◎すべてがゲロ以下に酷い
2022/02/22(火) 21:55:58.40ID:WirMN8li
一般的にコードを『置き換える』という気構えだと失敗
少なくとも移植先の言語に合わせて何らかの内部設計のし直しからが最低限のスタート
目的が効率アップにあるなら並行や並列が設計として入ってくるだろうし
目的がGC無くしてメモリ省力化だけであってもデータ構造の見直しは必須など
2022/02/22(火) 22:33:06.33ID:dVa/srT8
ねえねえ
ベクタの特定のターゲットの添え字を返すfind(v, target)を作ったとして、
ターゲットが見つからなかった場合のエラー処理はどうするのが良いと思う?
C/C++だと返り値を整数にして-1だったら見つからなかった、と言う感じが多いと思うんだけど
Result<usize, &str>とかにしてエラー内容を表す文字列を返しちゃう?
2022/02/22(火) 22:36:39.92ID:Uj7UhjXB
>>318
標準ライブラリの関数を使う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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