C vs C++ vs Rust Part.2

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/12/15(水) 12:35:50.91ID:biBE4xC0
競え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
2022/01/03(月) 17:32:24.16ID:20WoIOil
ワイじゃないけど必死に褒めてるのにアンチだとか、ウジ沸いてる
2022/01/03(月) 17:37:11.03ID:5oO4lVIX
Rustファンも、こんなスレに書き込みしないで初心者向け解説でも書けばいいのにな。
386デフォルトの名無しさん
垢版 |
2022/01/03(月) 17:41:11.19ID:nW60oOQF
https://seiya.me/this-website-is-now-powered-by-kerla
このOS Rustで書かれている割にはメモリリークで落ちたりするらしんだけどなんで?
2022/01/03(月) 17:50:43.83ID:gvPAh7hb
必須じゃないけど他の言語も知らないRust初心者が異常に増えてきているからトンチンカンな推しをするだけで
コミュニティの増加は良いことだが、初心者が書いた意味不明なコードを直すのはあんたら
Null安全系の推しをしてるのはド素人
2022/01/03(月) 18:13:06.37ID:V/HN/Yqp
メモリ安全が守れればすべてが安全と謳ってる連中は原発は止めれば安心安全とほざいてた奴等と瓜二つ
2022/01/03(月) 20:13:37.59ID:r29FUtSQ
>>386
そもそもRustはメモリリークが起きないことは保証してくれない
参照カウントが循環参照にならないようにしたり、不要になった参照が残り続けたりしないようにするのはプログラマの責任
なのでプラグラム側になんらかのバグがあったのではないかと

メモリ管理周りを標準ライブラリやOSに全部任せられる普通のアプリケーションとは違って
全部自分でやらなきゃいけない自作OSだからバグなく作るのは難しいというのはあるかと思う
2022/01/03(月) 21:09:45.15ID:Tjf/rOJw
COBOLならメモリーリーク起こらないよ
391デフォルトの名無しさん
垢版 |
2022/01/03(月) 21:31:36.31ID:Qq3YHLjM
>>389
結局C++と同じで習熟甘いやつが作れば問題起きまくりなの?
2022/01/03(月) 21:51:41.06ID:WCyHxUxt
>>387
Rustを含めていまどきの言語がnull安全なのは常識
むしろC++やJavaが古すぎて様々な点で時代遅れにすぎない
もちろんRustはもっとその先へダングリングポインタ排除とGC排除を両立した点にある
2022/01/03(月) 22:09:21.15ID:DUDgVZbY
このように攻撃性と倒錯を丸出しを両立してしまうと初心者っぽさが出てとても引っ掛かりやすい
どこで覚えたのかNull安全からダングリングポインタという関連性がない事を言い出す。
ゴミくずが降り積もっていく・・・
2022/01/03(月) 22:13:14.24ID:WCyHxUxt
>>391
一般的にメモリ関係諸問題のうちメモリリークのみはGC利用でしか解消と判明している
しかし一方でRustではメモリリークを起こすのも意図的にしか起こせない
Rustには所有権の概念があるため特別に複数の所有権を認める特別な参照を
自分で明示的に使用した上でさらに循環参照を生じさせた時のみメモリリークが生じうる
もちろんそのような場面でも通常は弱参照を併用するためメモリリークは起きない
2022/01/03(月) 22:14:15.40ID:/9oDM4ll
>>386
自分で独自OSのランタイムやGCを作って
その上で稼働させるアプリがリークを起こすかどうかは
アプリだけじゃなく作ったランタイムやGCのロジックに依存するよね
2022/01/03(月) 22:17:11.19ID:nLr3i6Wg
nullで落としてるようなバカがnull安全な言語使っても同じく死亡するコード作るだけにしか思えんがな。
あれで救えるコードなんてほとんどないと思うが。
2022/01/03(月) 22:35:34.97ID:pC8I0HuA
もっとその先へ!草
上のOS記事の作者はリークというかフラグメンテーションの発生だと推測してるが絶対読んでないね。
「意図的にしか起こせない」はい嘘
2022/01/03(月) 22:36:13.58ID:CMKqgYgE
nullで落としてるようなバカって例えばGoogleのChromeチームとかかな?
まぁ全人類バカなのでしょうがないね
2022/01/03(月) 22:54:33.28ID:fEzSC6xc
ポインタ(参照)になぜかnull値を許してしまう欠陥言語でのみnull問題が起きる
そうでない普通の言語にとってnull安全は当たり前でありそれを意識することすらない
欠陥言語の存在に対してのみnull安全なる言葉の存在意義がある
2022/01/03(月) 22:56:23.92ID:pwAwOJBp
>>395
そりゃランタイムやライブラリがバグってたらしゃーないわ

>>396
いや、コンパイルエラーになるからそこでちゃんと直せばいい
まあバカがコンパイルエラーを回避することが目的になって余計ひどいことになる未来もあるけどw
2022/01/03(月) 23:21:21.46ID:T+WwhkSI
null安全はマジで当たり前すぎてメリットでもなんでもないから
nullの話なんてしたくないわ
2022/01/03(月) 23:22:53.63ID:T+WwhkSI
そもそもnullのある言語でもnull参照で死ぬなんてのは
よっぽどのクソコードでテストもしてないときだけだろ
2022/01/03(月) 23:26:20.57ID:r29FUtSQ
関数の定義からnullableが否かが分かるのがOption<T> のうれしいところと思う
加えて引数や戻り値の所有権が分かるのもRustのうれしいポイントかと
2022/01/03(月) 23:28:42.03ID:r29FUtSQ
fool proofの話をすると Option<T> でも闇雲に unwrap はできるので考えなしのプログラムだとクラッシュする点は変わらない
SEGVじゃなくpanicになるとか、落ちる可能性のある箇所が明示される点でnullよりはマシだが
2022/01/03(月) 23:34:21.19ID:T+WwhkSI
ほんま、そういうことやな
null安全で助かるケースなんてそもそもわずかしかないんだ
unwrapだとかゼロ除算だとかいろんなロジックミスで結局は落ちる

borrow checkerのおかげでデータ競合が起きない、とからへんが重要なメリットと思う
2022/01/03(月) 23:35:17.83ID:QWHqEk/O
いやいやww
2022/01/04(火) 00:27:33.52ID:bkmFGqSu
>>402
> よっぽどのクソコードでテストもしてないときだけだろ
そう言うのがボロボロ転がってますけどw
2022/01/04(火) 00:32:09.36ID:SqHXhMR8
こちらはNull安全協会です、今なら3,000円お支払い頂くとより安全になり免許証入れまでついてます。
本協会ではNullは許しませんが、DBなどの道路にNullが転がっています。
また外部値など入力が無いことを示すのはResult::Errや特異値:-1やNaNなどで表すものではありませんので
クソ設計はやめてください、Option::NoneでNullを示し、ほかの言語と同じく必ずmatchで検査してください。
unwrapもダメです。Null安全協会では皆様に頂いたご声援でド素人が語れてゴリラのマウントのように
ウッホウッホホと潤っています。またNull安全語り部Rusterの攻撃性は以上ですので近づかないでください
2022/01/04(火) 10:11:55.33ID:GnZE9ial
C++の利点は何だろ?
2022/01/04(火) 10:32:59.80ID:qi/CVito
>>409
自由であること
2022/01/04(火) 10:52:02.62ID:eYWJvdmr
Rustはコーディング刑務所
2022/01/04(火) 11:03:52.07ID:g6u5uJtl
Null安全性はまともなUXを提供したい場合に生産性を改善する道具
なくても落ちることはほとんどないみたいな視点でしか捉えてないなら価値を理解してない
2022/01/04(火) 12:02:58.31ID:ri86vl0z
誰のUXやねん
誰の生産性やねん
2022/01/04(火) 13:26:40.47ID:gSVIkeEa
>>386
GCはメモリーリークおこすし
どこで起こすかが実装によって変わる

GCはゴミなんよ
2022/01/04(火) 13:32:57.78ID:gSVIkeEa
>>409
もっとも健全なアプリを作りうること
2022/01/04(火) 14:39:07.88ID:h92/V+9B
>>409
鼻から悪魔が出てきたりしても言語仕様を逸脱していないこと
417デフォルトの名無しさん
垢版 |
2022/01/04(火) 17:56:16.15ID:llSa7WOy
Rustはコンパイルできたら問題は起きないみたいに思ってたけど違うのね
これじゃやっぱり初心者に毛が生えたようなのがゴミコード量産するのかな
2022/01/04(火) 18:04:30.86ID:eYWJvdmr
ゴミコーダ矯正所
2022/01/04(火) 18:35:43.62ID:mgG32sq7
それはそう
たとえPrologを使ってもバグはなくならない

でもコンパイラのチェックでなくせる類のバグならなくしたいよね
420デフォルトの名無しさん
垢版 |
2022/01/04(火) 19:10:18.46ID:llSa7WOy
コンパイルを通すために問題の発生するコードを書くとかも考えられるんじゃねーの
そっちのほうが分かりにくいような気がする
2022/01/04(火) 19:35:35.54ID:aGnbM+4r
>>417
あらゆる問題が起きないかというとそうではない(というかそんなプログラミング言語存在しないと思う)けど
大部分のコードのメモリ安全性がコンパイル時に保証されるのはかなり大きなメリットだと思う

例えばuse-after-freeやバッファオーバーフロー、データ競合なんかは問題が発生してもプログラムかその場でクラッシュするとは限らず、しばらく正しく動くように見えてしまう場合もある
この手の異常の原因特定は難しいので、rustでコンパイルエラーや実行時の問題発生時のpanicなどで即問題箇所が分かるようになっているのはかなり嬉しい
2022/01/04(火) 19:41:25.66ID:aGnbM+4r
初心者に毛の生えたようなのがゴミコード量産しないようなプログラミング言語ってそもそもどういったものなんだろうか
記述に自由度がなく誰がどう書いても同じになるような言語?
2022/01/04(火) 19:51:44.75ID:GnZE9ial
それpythonがうたってたきがする
2022/01/04(火) 19:52:02.24ID:pbb561T/
386みるとメモリリークの原因が不明っぽいんだけど
言語処理系にメモリ関連任せられるにしても結局原因不明のバグが残るんじゃ意味ないんでわ
2022/01/04(火) 20:04:11.59ID:jb/bub5S
>>424
OS書いてるのに言語処理系にメモリ管理任せられるわけないだろ
自作したメモリアロケータのバグとしか思えんが
2022/01/04(火) 20:06:56.90ID:KYGdyDbS
>>424
バグの数が0じゃなきゃ意味がないというのは違うのでは
100個バグがあるのと1個しかないのでは開発効率が全然違う
2022/01/04(火) 20:50:34.04ID:/2oFrrnl
>>409
C++の利点は過去資産
既にバグが枯れた過去資産を活用するのが得策
その他の点ではRustが全て完全に有利
2022/01/04(火) 20:53:09.33ID:hAXWFplk
Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2022/01/04(火) 21:18:13.95ID:eYWJvdmr
C++でうまくかけないヤツとか構造化の仕方がヘタクソなだけだろ
2022/01/04(火) 21:26:13.33ID:XgtuTErn
>>424
そう思うんならそれでいいじゃない
意味ないってことで
2022/01/04(火) 22:20:27.31ID:3laoj6Oq
>>430
それでいいということを認めるなら、>>424にもちゃんと反論しろ
2022/01/04(火) 22:35:39.57ID:e2VKtfmk
>>428
で、バグが減ったか?まるで変わらんやろ。馬鹿馬鹿しい。
2022/01/04(火) 22:39:34.49ID:NZNEJALT
C++の存在意義がゼロになったわけではない
C++で作られた過去の莫大なライブラリは今後も併用される
C++しか使えない過去のプログラマーの活用のためにC++を用いる案件もしばらくは残る
2022/01/04(火) 22:40:33.65ID:f+4ZfnKj
議論したいならまず相手を選ぼうね
ルサンチさんを相手にしても理性的な議論にはならんから
2022/01/04(火) 22:57:10.37ID:llSa7WOy
個人的には大規模なC/C++の組み込み開発で散々メモリ破壊系の不具合に泣かされてきたから組み込みでRustを使う流れがきてるのに期待してる
国産RTOSだとKMCのToppersベースのOS、SOLIDが最近Rustに対応し始めた
2022/01/04(火) 23:30:25.45ID:C7kM4kmV
>>435
メモリ破壊ってそんな起きる?
lock,off,len,remainさえ揃ってたら破壊なんて起きなくね?
2022/01/05(水) 00:36:25.86ID:PXsSrjEd
>>436
そんなには起きないけど1,2機種に1個ぐらいは難問と言われるような不具合があるかな?
共通してるのは再現性がとても低いかつランダムな領域のメモリを破壊する
でもいざ何週間もかけて仕込み入れて再現されて原因特定するとしょーもない不具合だったりする
それこそRustじゃコンパイル通らないような初歩的な原因だったこともある
静的解析ツールは回してるけどどうしても漏れることはある
2022/01/05(水) 07:47:37.79ID:IIKhgKt4
嘘くせえwメモリ破壊を理由にRustに期待とか意味わからん
MMUがちゃんと設定できてないか、スタック不足でリークしてるだけとか、あるいはスレッド競合に見えるし
比べてる対象がOS前提のRustと、そんなもの無い開発を比べてないか
2022/01/05(水) 07:48:29.43ID:jCayWhDI
>>436
同意だな
Cなんて学習の過程でなんぼでもメモリ壊すもんだから
逆説的だけどメモリなんて壊し慣れてるんだよ
どうやって壊してるのかどうやったから壊れたのか
だからだんだん目新しい壊し方が無くなってきてスリルは無くなる
2022/01/05(水) 10:11:35.03ID:RHFS+zMh
バカだろおまえ
441デフォルトの名無しさん
垢版 |
2022/01/05(水) 12:14:32.80ID:R1aBhW/Q
このスレがム板内で一番勢いあるのが笑える
C++やRustの本スレより勢いあるやん
2022/01/05(水) 17:00:20.32ID:D7gzVahT
>>437
すまん、よく分からんわ…

>>439
分かる
壊し方も調査方法もパターン化してくるし、熟れてくると糞コードセンサーが働いて「この辺じゃね?」って見当つくしな
ログもコアもダンプもないなら難しいけども
2022/01/05(水) 17:48:42.80ID:od0+oW4W
本当に調査が難しいのは、並列処理があって競合状態が起きてるときかなあ
2022/01/05(水) 18:37:34.29ID:5WkA2q2d
ランダムな領域のメモリを破壊が毎回起きて組み込みやってます!キリッ
445デフォルトの名無しさん
垢版 |
2022/01/05(水) 19:21:52.17ID:bh75XIUs
HaskellとRustはコンパイル出来た時点でバグが無いことを保証される。
2022/01/05(水) 19:36:29.51ID:N7h+YsNa
釣り針見えてますよ
447デフォルトの名無しさん
垢版 |
2022/01/05(水) 20:15:39.00ID:bh75XIUs
これが釣りに見えるのか。
驚きです。
448デフォルトの名無しさん
垢版 |
2022/01/05(水) 21:37:09.44ID:hbslRCuW
HaskellとRustのバグはバグじゃなくて仕様と呼ぶからなw
2022/01/05(水) 22:15:33.82ID:/CcLnr/X
どうせバカが使ってもRc、RefCellばっかのコードで全く所有権なんて活かせないコードにしかならんよ。
2022/01/06(木) 14:37:54.75ID:eeb9qMHg
>>447
rustのコンパイラって不等号の向き間違ってますよとか教えてくれるの?
2022/01/06(木) 15:02:23.63ID:rC5yvWMp
日付比較で不等号の向きで古いファイルが消されるか新しいファイルが消されるか決まることもあるしな
ふるい分けファイルの方が日にち稼いでいるからデカいはずだと錯覚するヤツが必ずでてきてデススパイラル撒き散らしたりな
2022/01/06(木) 15:03:56.77ID:rC5yvWMp
×ふるい分け
○古い
2022/01/06(木) 16:49:55.21ID:eeb9qMHg
仲介イテレータ君かな
「バグ」という言葉すら独自解釈
2022/01/06(木) 16:54:48.74ID:/n5h7nDr
釣りじゃなくてマジだったらアカンやつだ
2022/01/06(木) 18:00:28.75ID:XfL6smUL
でかい釣り針は不都合なものから注意をそらせるために使うもの
2022/01/06(木) 21:02:54.57ID:WPtX8f+v
>>338
リーナスが例外(パニック含む)を受け入れないから
2022/01/06(木) 23:56:10.56ID:Q5dnJVm5
Rustなら例外機構がそもそも無いし
パニックを引き起こさないチェック付きの代替も揃っているからな
2022/01/07(金) 00:30:02.39ID:cXPu1ueH
SanitizerなしでCやC++書ける人にはRust不要かもね
逆に必要な人はRust使った方が幸せになりそうです
2022/01/07(金) 00:44:00.42ID:yZQL1qV+
例外機構≠パニックという主張はGoでもあるが無理がある。チェックも近代的な言語ならほぼある
2022/01/07(金) 01:15:29.54ID:9qeGIYdY
Rustは標準ライブラリの条件付きコンパイルをサポートしてるしそのうちpanic-freeな標準ライブラリも作れるようになるんじゃね。知らんけど
2022/01/07(金) 01:18:46.69ID:KVbSetTk
Rustで特別に安全っていうのはあくまでメモリらへんの事なんだよね
ダングリングポインタ、データ競合、未初期化の変数を読んでしまう、とかみたいなのは起きない
こういうのはC/C++だと巨大プロジェクトではどうしても抜け漏れが出るし、よく脆弱性になるからこれが保証されるだけでもめちゃくちゃ心強い

そんで例外っていう危うい仕組みはなくても、他にも気をつけなきゃいけない事はいくらでもある
例えば内部部割り込み、デッドロック、競合状態、メモリリークとかはunsafe使ってなくても普通に起こるので、
プログラマがちゃんと理解して考えて制御しなければいけない
2022/01/07(金) 08:07:46.87ID:qbYUQ+0I
>>445が明らかに嘘八百なのに、そのことを無視して>>447とか>>453とか言うのはさすがに無能すぎない?
2022/01/07(金) 11:19:37.80ID:OPgAeAPs
>>462
445 = 447だし、何いってるかわかんない
2022/01/07(金) 11:31:20.72ID:HBPsUOSr
>>463
「HaskellとRustはコンパイル出来た時点でバグが無いことを保証される。」
が大嘘ということ。
こんなことを言うのは無能か詐欺師。
2022/01/07(金) 11:36:10.44ID:SxdBDGb9
誰でも知ってる常識を鬼の首を取ったように言うなよ
見てるほうが恥ずかしくなる
466デフォルトの名無しさん
垢版 |
2022/01/07(金) 11:38:11.47ID:lEqOkEly
>例外っていう危うい仕組み
この捉え方のほうが危うい
2022/01/07(金) 11:46:55.77ID:9qeGIYdY
>>466
ここで言う例外はプログラミング言語の機能としての例外(大域脱出)のことで一般的な例外処理のことではないのでは
468デフォルトの名無しさん
垢版 |
2022/01/07(金) 12:40:14.57ID:syLxl2NY
>>435
組み込みでRustを使う流れがきてるのに期待してる

同意
2022/01/07(金) 13:12:58.77ID:qCXwEiOj
>>467
「一般的な例外処理」の定義をしないで語られても
2022/01/07(金) 13:46:09.88ID:OPgAeAPs
>>464
お前一人だけこのスレで浮いてるわw
黙っとけ
2022/01/07(金) 13:54:43.45ID:pFd15XiZ
再帰から一気にジャンプ出来る例外案件
472デフォルトの名無しさん
垢版 |
2022/01/07(金) 14:57:02.30ID:0CT3Il9G
Rustの勉強も始めたが
驚き感動することが多くてはまりそうだ
try/throw/catchがないのに同じことが出来てる仕組みに感動した
?一文字でエラーを上位へ委ねることができたり
単なるenumに過ぎないはずのResult型が巧妙に使えるヤツだったり
2022/01/07(金) 15:04:16.53ID:d3CBVc0r
>>472
おまえいい加減にしろよ
2022/01/07(金) 15:07:55.28ID:sUYYT/1a
>>467
一般的な例外処理で大域脱出でないのがあればそう言えるけど、そんなのあったっけ。
2022/01/07(金) 15:48:22.19ID:oWk93qwk
>>472
enumといっても値付きenumだからな
値付きenumとマッチング機構のせいでRustにC++が敗北したとみている
2022/01/07(金) 16:14:22.26ID:9qeGIYdY
>>469
>>474
https://ja.m.wikipedia.org/wiki/%E4%BE%8B%E5%A4%96%E5%87%A6%E7%90%86
この意味での例外
確かに言語でサポートするなら大域脱出になるか
2022/01/07(金) 17:12:07.47ID:NadPmQt/
>>476
そのwikiの定義はめちゃくちゃ曖昧だな
回復不能なエラーのことだったり、業務エラーに対するシステムエラーのことだったり
さらには設計で想定されてない問題と言いつつ
ユーザーの入力間違いや他システムと疎通が取れない場合が含まれてたり
2022/01/07(金) 17:20:41.93ID:TtYC21gO
>>477
なら例外(処理)の明確な定義ってなんだ?
2022/01/07(金) 17:49:08.57ID:CgdU4kfS
>>478
話の意図や文脈によっていろんな定義がありえる言葉なんだから
自分の定義を話せばいいじゃん
2022/01/07(金) 17:57:58.23ID:htF+iGlC
>>478
まぁ、ここはプログラミング言語を取り扱っているので、各言語ごとの例外機構のことなんじゃないかな
481デフォルトの名無しさん
垢版 |
2022/01/07(金) 17:58:11.94ID:0CT3Il9G
GoやRustなどの言語には例外処理がないと一般的に言われているけど
これはtry/throw/catchといった特別な枠組みが存在しないことを意味してる
2022/01/07(金) 18:14:31.53ID:BlSvqzvB
いやまず>>477が定義を示すべきだろw

> そのwikiの定義はめちゃくちゃ曖昧だな

じゃあはっきりしたやつよろしく
2022/01/07(金) 18:40:25.34ID:zxQaNr2W
結局いつもの気持ち悪い自演コース
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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