競え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
探検
C vs C++ vs Rust Part.2
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2021/12/15(水) 12:35:50.91ID:biBE4xC0305デフォルトの名無しさん
2021/12/31(金) 12:10:32.68ID:M33hR7ol >>304
まあrustの方がc++よりパターンマッチング楽なのは認めるよ間違いない
まあrustの方がc++よりパターンマッチング楽なのは認めるよ間違いない
306デフォルトの名無しさん
2021/12/31(金) 21:01:38.85ID:7OQCq2Au C++と比べてRustだとメモリ安全にできるから、スレッドセーフなコードも誰でも書けるよ
そういったメモリ安全関連の利点がなきゃ存在意義のない言語だよね
書いたコードが高速に動作するかどうか、とかはまた別の話だけど
そういったメモリ安全関連の利点がなきゃ存在意義のない言語だよね
書いたコードが高速に動作するかどうか、とかはまた別の話だけど
307デフォルトの名無しさん
2021/12/31(金) 21:30:26.51ID:Cc3nB8ek308デフォルトの名無しさん
2021/12/31(金) 21:55:39.97ID:2Zk/vij+ http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1371r3.pdf
パターンマッチング構文が提案されてる。
パターンマッチング構文が提案されてる。
309デフォルトの名無しさん
2021/12/31(金) 21:55:45.65ID:0hDlQtG+ >>298
C++で書けることは全てRustで書ける
C++が優位な点は過去実績しかない
これは両方やればはっきりと認識できる
そのスクリプト言語的な記述や利便性がRustにあるという認識は正しい
かゆいところにも手が届くスクリプト言語という側面もある
C++で書けることは全てRustで書ける
C++が優位な点は過去実績しかない
これは両方やればはっきりと認識できる
そのスクリプト言語的な記述や利便性がRustにあるという認識は正しい
かゆいところにも手が届くスクリプト言語という側面もある
310デフォルトの名無しさん
2021/12/31(金) 22:00:54.10ID:2Zk/vij+ Rustはスクリプト言語なのか。
311デフォルトの名無しさん
2021/12/31(金) 22:02:16.06ID:tc6fCfYn >>306
CやC++と同等の性能特性を持つ言語の選択肢は限られてるから安全性以外の理由でRustが採用されることもあると思うよ
CやC++と同等の性能特性を持つ言語の選択肢は限られてるから安全性以外の理由でRustが採用されることもあると思うよ
312デフォルトの名無しさん
2021/12/31(金) 22:03:31.93ID:XhcmshbG Rustって循環参照安全に書けないんじゃなかったけ?
313デフォルトの名無しさん
2021/12/31(金) 22:11:10.66ID:Cc3nB8ek314デフォルトの名無しさん
2021/12/31(金) 22:18:59.59ID:tc6fCfYn315デフォルトの名無しさん
2021/12/31(金) 22:24:28.60ID:tc6fCfYn316デフォルトの名無しさん
2022/01/01(土) 00:53:57.74ID:xczakg94 Rustのmatch式はScalaの後追いパクリw
317デフォルトの名無しさん
2022/01/01(土) 01:00:44.48ID:193tzZ58318デフォルトの名無しさん
2022/01/01(土) 01:12:03.78ID:jvk1ETyF プログラミング言語としての比較結果は明瞭
適用可能な範囲は同じかつ最速
いずれもGCがなく低レベル操作も可能
Rust = C++ = C
したがって勝負は他の点
コード記述が楽に簡潔に書けるか
Rust > C++ > C
安全なコードを書けるか保証できるか
Rust > C++ > C
適用可能な範囲は同じかつ最速
いずれもGCがなく低レベル操作も可能
Rust = C++ = C
したがって勝負は他の点
コード記述が楽に簡潔に書けるか
Rust > C++ > C
安全なコードを書けるか保証できるか
Rust > C++ > C
319デフォルトの名無しさん
2022/01/01(土) 01:22:01.85ID:193tzZ58 >>318
> いずれもGCがなく低レベル操作も可能
これはRustはnightly使うこと前提?
低レベルな機能についてはまだまだunstableなものが多いので少なくともstableなRustではC/C++でできること (処理系依存なものも含む) がすべてできるとは言えないのでは
https://doc.rust-lang.org/stable/unstable-book/
新たな(pre-)RFCも日々提案されてるし現状で十分とあぐらをかくべきではないと思う
> いずれもGCがなく低レベル操作も可能
これはRustはnightly使うこと前提?
低レベルな機能についてはまだまだunstableなものが多いので少なくともstableなRustではC/C++でできること (処理系依存なものも含む) がすべてできるとは言えないのでは
https://doc.rust-lang.org/stable/unstable-book/
新たな(pre-)RFCも日々提案されてるし現状で十分とあぐらをかくべきではないと思う
320デフォルトの名無しさん
2022/01/01(土) 01:33:41.15ID:KzNGE8bI ということは、RustはC++よりJavaと比較する言語なのでは?
321デフォルトの名無しさん
2022/01/01(土) 01:41:42.07ID:193tzZ58 >>309の
> C++で書けることは全てRustで書ける
を念頭に置いた話で "全て" は言い過ぎ、C++でないとできないこともあるだろうと言いたかった
CやC++の低レベル操作は Rust でも "だいたい" できて大抵のユースケースでは困らない
と言うのが正確だと思う
Java は GC あり VM 言語だから低レベル操作の観点でのRustとの類似度で言ったらCやC++の方が近い
> C++で書けることは全てRustで書ける
を念頭に置いた話で "全て" は言い過ぎ、C++でないとできないこともあるだろうと言いたかった
CやC++の低レベル操作は Rust でも "だいたい" できて大抵のユースケースでは困らない
と言うのが正確だと思う
Java は GC あり VM 言語だから低レベル操作の観点でのRustとの類似度で言ったらCやC++の方が近い
322デフォルトの名無しさん
2022/01/01(土) 01:44:00.63ID:KzNGE8bI メモリーの安全性を強調する言語と言えばJavaが筆頭に挙げられるのでは?
Javaは実行時最適化を行うのでC++より速いと主張されます。
この点もRustと酷似している。
Javaは実行時最適化を行うのでC++より速いと主張されます。
この点もRustと酷似している。
323デフォルトの名無しさん
2022/01/01(土) 01:45:59.28ID:KzNGE8bI JavaもRustもC++と比較した優位性を主張するのですが、JavaとRustならどちらが優れているのでしょう?
324デフォルトの名無しさん
2022/01/01(土) 01:46:52.68ID:jvk1ETyF325デフォルトの名無しさん
2022/01/01(土) 01:50:45.71ID:KzNGE8bI Javaは組み込みにも使われ、それどころかpico javaというJavaを効率よく実行できる組み込み用プロセッサのアーキテクチャ迄あるんですよ。
完全にRustと一致するじゃないですか。
実績を考えたらRustを完全に包含しています。
なぜJavaとの比較を嫌がるのですか?
完全にRustと一致するじゃないですか。
実績を考えたらRustを完全に包含しています。
なぜJavaとの比較を嫌がるのですか?
326デフォルトの名無しさん
2022/01/01(土) 01:51:16.51ID:KzNGE8bI もしかしてRustはJavaに負けているのですか?
327デフォルトの名無しさん
2022/01/01(土) 02:00:04.72ID:LNkbwGBY GCがあってデータ競合も起きないマルチパラダイム言語で、C,C++以上の爆速で動く処理系があるとするならそら優秀だろうと思うわ
Javaは実際にはそんなに爆速じゃないだろうし、データ競合の対策がしやすい言語とも思えんけど
Javaは実際にはそんなに爆速じゃないだろうし、データ競合の対策がしやすい言語とも思えんけど
328デフォルトの名無しさん
2022/01/01(土) 02:05:29.52ID:KzNGE8bI 活気があったころは、C++と比較して20倍速いと主張するサイトもありましたよ。
まさに爆速です。
Rustと似ています。
まさに爆速です。
Rustと似ています。
329デフォルトの名無しさん
2022/01/01(土) 02:07:14.76ID:KzNGE8bI 安全性という観点では、RustはHaskellと似ているように思います。
熱心なHaskellユーザーはコンパイルが終わればバグが無いことを保証されると主張します。
Rustと全く同じです。
熱心なHaskellユーザーはコンパイルが終わればバグが無いことを保証されると主張します。
Rustと全く同じです。
330デフォルトの名無しさん
2022/01/01(土) 02:10:16.54ID:jvk1ETyF Javaを含めるとこうなる
安全なコードを書けるか保証できるか
Rust > Java > C++ > C
Javaはヌルポインタによる参照でエラー例外が実行時に起き得る
Rustはそれさえも起きない
したがって速さだけでなくメモリ安全の点でも Rust > Java が確定済
Javaが勝てる点がない
そのためJavaを捨ててRustへ移行するプロジェクトもある
安全なコードを書けるか保証できるか
Rust > Java > C++ > C
Javaはヌルポインタによる参照でエラー例外が実行時に起き得る
Rustはそれさえも起きない
したがって速さだけでなくメモリ安全の点でも Rust > Java が確定済
Javaが勝てる点がない
そのためJavaを捨ててRustへ移行するプロジェクトもある
331デフォルトの名無しさん
2022/01/01(土) 02:11:02.91ID:KzNGE8bI Haskellもまた、C++と比較して優位性が主張されることの多い言語のひとつです。
しかし、JavaやRustと比較されることは一切在りません。
Java、Rust、Haskellでは、どれが最も優れているのでしょう?
しかし、JavaやRustと比較されることは一切在りません。
Java、Rust、Haskellでは、どれが最も優れているのでしょう?
332デフォルトの名無しさん
2022/01/01(土) 02:13:26.08ID:KzNGE8bI でもRustはJavaより遅いですよね?
Javaは実行時最適化によりC++より20倍速いことがbenchmarkで判明していますよ。
10年以上も前に。
Javaは実行時最適化によりC++より20倍速いことがbenchmarkで判明していますよ。
10年以上も前に。
333デフォルトの名無しさん
2022/01/01(土) 02:15:29.86ID:KzNGE8bI C++を改良したD言語もあります。
DとRustならどちらが優れているのでしょう?
DとRustならどちらが優れているのでしょう?
334デフォルトの名無しさん
2022/01/01(土) 02:16:49.60ID:KzNGE8bI 出自からして、D言語もまたC++と比較して優位性が述べられる言語のひとつです。
しかし、RustやHaskellと比較されることは在りませんね。
どちらが優れているのでしょう?
しかし、RustやHaskellと比較されることは在りませんね。
どちらが優れているのでしょう?
335デフォルトの名無しさん
2022/01/01(土) 02:25:43.18ID:jvk1ETyF まずは決定的な違いを勉強しなさい
GCのない言語 Rust C++ C
GCのある言語 Java D C# Go Haskell Python Ruby JavaScript ...
GCのない言語 Rust C++ C
GCのある言語 Java D C# Go Haskell Python Ruby JavaScript ...
336デフォルトの名無しさん
2022/01/01(土) 02:31:24.00ID:KzNGE8bI >>335
GCの有無で何が変わりますか?
JavaやRuby、Pythonは組み込みにも使われますし、宇宙にだって行きます。
Rustよりずっと広範囲に使われています。
Rustで作られた実用的なソフトウェアはFirefoxしかないじゃないですか。
しかも、そのFirefoxだって熱心な信者以外誰も使わない。
それと比較したら、これらの言語は実用的に使われています。
GCが在ろうとなかろうと。
GCの有無で何が変わりますか?
JavaやRuby、Pythonは組み込みにも使われますし、宇宙にだって行きます。
Rustよりずっと広範囲に使われています。
Rustで作られた実用的なソフトウェアはFirefoxしかないじゃないですか。
しかも、そのFirefoxだって熱心な信者以外誰も使わない。
それと比較したら、これらの言語は実用的に使われています。
GCが在ろうとなかろうと。
337デフォルトの名無しさん
2022/01/01(土) 02:32:19.06ID:193tzZ58 >>324
大体代替手段があるのはそうだと思います
例えばnaked functionやglobal_asmは別途asmなりCなりからオブジェクトファイル生成してリンクするという代替手段があります (これがありならC-FFIできる言語は皆同等になってしまいますが...)
もともと C++ でできることは "全て" できるというかなり強い主張をされてた人がいたのでそれは言い過ぎじゃないかと言いたかっただけです
>>332
ご参考まで
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/java.html
他の言語との比較もありますよ
大体代替手段があるのはそうだと思います
例えばnaked functionやglobal_asmは別途asmなりCなりからオブジェクトファイル生成してリンクするという代替手段があります (これがありならC-FFIできる言語は皆同等になってしまいますが...)
もともと C++ でできることは "全て" できるというかなり強い主張をされてた人がいたのでそれは言い過ぎじゃないかと言いたかっただけです
>>332
ご参考まで
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/java.html
他の言語との比較もありますよ
338デフォルトの名無しさん
2022/01/01(土) 02:33:17.91ID:LNkbwGBY Rustのポジションに取って変わりたいなら、RustみたいにLinuxのKernelコードに取り込まれていってくれるとわかりやすいんだけどね
なぜC++を含む他の言語はLinux Kernelに採用されないのか、って考えると差が明瞭になってきそうだ
なぜC++を含む他の言語はLinux Kernelに採用されないのか、って考えると差が明瞭になってきそうだ
339デフォルトの名無しさん
2022/01/01(土) 02:34:00.98ID:KzNGE8bI Firefoxのバグの多さを考えても、Rustはバグを生産する言語のように思います。
340デフォルトの名無しさん
2022/01/01(土) 02:35:06.26ID:KzNGE8bI >>338
ドライバにクラスは必要ないからでは?
ドライバにクラスは必要ないからでは?
341デフォルトの名無しさん
2022/01/01(土) 02:39:59.20ID:jvk1ETyF342デフォルトの名無しさん
2022/01/01(土) 02:42:24.09ID:193tzZ58 そういえば Windows 10にRust使う話ってどうなったんだろうか
>>336
以下の記事にメモリ安全な既存の言語ではだめでCやC++やRustでないといけない理由
それらの中でもRustが良いとされる理由が書かれていますよ
https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
>>336
以下の記事にメモリ安全な既存の言語ではだめでCやC++やRustでないといけない理由
それらの中でもRustが良いとされる理由が書かれていますよ
https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
343デフォルトの名無しさん
2022/01/01(土) 02:57:17.29ID:193tzZ58 >>339
FirefoxについてC++コードをRustに書き換えたらセキュリティに関わる脆弱性数がどうなるか分析した記事がありました
https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/
結論としては完璧ではないけどRustの方がバグを減らせるということのようです
MS ResearchやGoogleのAndroidチームも類似の調査をやっていてRust採用は効果有りと判断しているみたいです
FirefoxについてC++コードをRustに書き換えたらセキュリティに関わる脆弱性数がどうなるか分析した記事がありました
https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/
結論としては完璧ではないけどRustの方がバグを減らせるということのようです
MS ResearchやGoogleのAndroidチームも類似の調査をやっていてRust採用は効果有りと判断しているみたいです
344デフォルトの名無しさん
2022/01/01(土) 04:08:48.59ID:KzNGE8bI JavaやHaskellも多くの人がC++より優れていると分析しています。
速く容易で安全なのです。
全ての点でC++を上回っています。
では、それらの言語を比較した場合、どれが最も優れているのでしょう?
速く容易で安全なのです。
全ての点でC++を上回っています。
では、それらの言語を比較した場合、どれが最も優れているのでしょう?
345デフォルトの名無しさん
2022/01/01(土) 04:11:14.25ID:KzNGE8bI ほとんどすべての言語がC++より優れていると主張します。
という事は、C++はもっとも劣った言語のひとつなのです。
Rustはもっとも劣った言語より優れていると主張しますが、優れた言語、例えばJavaやHaskellと比較したら、かなり劣っているのでは?
という事は、C++はもっとも劣った言語のひとつなのです。
Rustはもっとも劣った言語より優れていると主張しますが、優れた言語、例えばJavaやHaskellと比較したら、かなり劣っているのでは?
346デフォルトの名無しさん
2022/01/01(土) 07:34:43.36ID:JYrmLBPV 多くの人がRustとC++と比較している
比較するなら優れたもの同士を突き合わせるはずだ
なのにJavaやHaskellは影も形もないつまり論外ってことだ
全ての言語がC++に対して優位性を主張するのも
C++が最も現実的で優れた言語だと認めているからであって
わざわざ劣っているものと比較する必要なんてないからだ
比較するなら優れたもの同士を突き合わせるはずだ
なのにJavaやHaskellは影も形もないつまり論外ってことだ
全ての言語がC++に対して優位性を主張するのも
C++が最も現実的で優れた言語だと認めているからであって
わざわざ劣っているものと比較する必要なんてないからだ
347デフォルトの名無しさん
2022/01/01(土) 09:08:27.19ID:193tzZ58 >>344
JavaやHaskellがC++より常に高速というのは明確に誤りです
https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html
ではC++がこれらの言語より優れているかというとそうではありません
言語にはそれぞれ得手不得手があります
唯一絶対の尺度で優劣を決めようとするのではなく、ある特定の用途に対してどの言語が適しているかという観点で議論した方が生産的かと思います
JavaやHaskellがC++より常に高速というのは明確に誤りです
https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html
ではC++がこれらの言語より優れているかというとそうではありません
言語にはそれぞれ得手不得手があります
唯一絶対の尺度で優劣を決めようとするのではなく、ある特定の用途に対してどの言語が適しているかという観点で議論した方が生産的かと思います
348デフォルトの名無しさん
2022/01/01(土) 09:44:43.30ID:a+oD+kQK スレタイ読め。
349デフォルトの名無しさん
2022/01/01(土) 10:50:55.11ID:E1HNnq3M いつもの人の自作自演
350デフォルトの名無しさん
2022/01/01(土) 19:02:54.41ID:n4zdCVCH GitHub・Cookpad などは、遅いRuby on Rails から、Go・Rust などへ移行している
2021年10月には、GitHubのコピーのGitLab が上場し、時価総額は約1.9兆円!
こんな大きい時価総額でも、Railsを使い続ける宣言をしている
基本、Railsは中小ベンチャーが、高品質なサービスを作るツール。
2億レコード・取引先が2万社みたいな規模でも、問題ないと言ってた
他には、組み込みのmruby の本も出た。
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
2021年10月には、GitHubのコピーのGitLab が上場し、時価総額は約1.9兆円!
こんな大きい時価総額でも、Railsを使い続ける宣言をしている
基本、Railsは中小ベンチャーが、高品質なサービスを作るツール。
2億レコード・取引先が2万社みたいな規模でも、問題ないと言ってた
他には、組み込みのmruby の本も出た。
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
351デフォルトの名無しさん
2022/01/01(土) 21:35:42.72ID:1mMbmyWc C++もJavaも実行時にnull pointerによる参照が起きる可能性があるためどちらも安全性に劣るよね
Rustではenum Option使用でnull pointerによる参照が絶対に起きないことをコンパイル時点で保証した上で
コンパイル後は最適化でOptionがNoneの時にnull pointerを使うという二段構えにより
Rustはコストをかけずに無駄なく安全性の保証を実現しているところに感動した
Rustではenum Option使用でnull pointerによる参照が絶対に起きないことをコンパイル時点で保証した上で
コンパイル後は最適化でOptionがNoneの時にnull pointerを使うという二段構えにより
Rustはコストをかけずに無駄なく安全性の保証を実現しているところに感動した
352デフォルトの名無しさん
2022/01/01(土) 21:45:09.34ID:s+QWpk3m null安全ぐらいはモダン言語なら当たり前の機能なので、もはやメリットとは感じないわ
例えばTypeScript、Swift、Kotlin、Haskellとか
例えばTypeScript、Swift、Kotlin、Haskellとか
353デフォルトの名無しさん
2022/01/01(土) 21:56:26.71ID:jvk1ETyF C++とJavaが前近代的でダメな言語なだけだよな
354デフォルトの名無しさん
2022/01/01(土) 21:59:01.05ID:KzNGE8bI Javaは速度を追求した言語だから。
355デフォルトの名無しさん
2022/01/01(土) 22:39:11.50ID:KzNGE8bI Haskellは安全性と並列化を追求した言語です。
356デフォルトの名無しさん
2022/01/01(土) 22:58:31.22ID:1mMbmyWc RustはHaskellの長所である型クラスをトレイトとトレイト境界で採り入れていたり
HaskellのMaybeモナドやEitherモナドを採り入れてRustの型の核としているところにも感動した
HaskellのMaybeモナドやEitherモナドを採り入れてRustの型の核としているところにも感動した
357デフォルトの名無しさん
2022/01/01(土) 23:02:32.16ID:15i3uJ8f システムプログラミングでCに代替となれるほどRustがイケてるのは、
null安全やメモリ安全はモダンな言語だから当然として、データ競合が起きないことも保証しつつ、実行速度もCに劣らなくて、
それでいてRustと多少のアセンブラだけ使えば、OSや組み込みソフトウェアも普通に記述できるほどフットプリントの小さい低レベルな言語だから
null安全やメモリ安全はモダンな言語だから当然として、データ競合が起きないことも保証しつつ、実行速度もCに劣らなくて、
それでいてRustと多少のアセンブラだけ使えば、OSや組み込みソフトウェアも普通に記述できるほどフットプリントの小さい低レベルな言語だから
358デフォルトの名無しさん
2022/01/01(土) 23:08:54.95ID:KzNGE8bI システムプログラミングにはJavaのほうが向いています。
単純に速いからです。
Javaは宇宙でさえ使われる安全で実績のある言語です。
しかも速い。
実行時最適化を行わない言語では無理な速さです。
単純に速いからです。
Javaは宇宙でさえ使われる安全で実績のある言語です。
しかも速い。
実行時最適化を行わない言語では無理な速さです。
359デフォルトの名無しさん
2022/01/01(土) 23:23:23.09ID:KzNGE8bI 結局RustはHaskellの真似をするだけの偽物言語にすぎません。
Haskellの並列性、安全保証を移植するには、結局Haskellになるしかないのです。
RustはいずれHaskellになるでしょう。
その時もまだRustと呼び続けるのでしょうか。
Haskellの並列性、安全保証を移植するには、結局Haskellになるしかないのです。
RustはいずれHaskellになるでしょう。
その時もまだRustと呼び続けるのでしょうか。
360デフォルトの名無しさん
2022/01/01(土) 23:45:51.79ID:L78WNXLf361デフォルトの名無しさん
2022/01/02(日) 01:31:01.49ID:uZMhOgW6 rustのnull安全?はクリティカルコンテキストでも保証されるんか?
362デフォルトの名無しさん
2022/01/02(日) 02:22:18.22ID:TQn3/Mee もちろんです。
363デフォルトの名無しさん
2022/01/02(日) 08:42:35.10ID:/2Hc/nxf 現状でRustの欠陥は指摘なしなのか
まあ優れた言語だから主流になるとも限らんけど
ここはRust礼賛が多くて参考にならんな
まあ優れた言語だから主流になるとも限らんけど
ここはRust礼賛が多くて参考にならんな
364デフォルトの名無しさん
2022/01/02(日) 08:43:38.07ID:i5Las0bb >>360
キチの相手するならメールかなんかでやってくれ
キチの相手するならメールかなんかでやってくれ
365デフォルトの名無しさん
2022/01/02(日) 12:04:39.89ID:7Z2MEM4u キチの相手するスレやぞ
366デフォルトの名無しさん
2022/01/02(日) 14:18:19.00ID:TQn3/Mee 良いという人だって使ったことないんだから、欠点なんか出てこないよ。
367デフォルトの名無しさん
2022/01/02(日) 14:52:25.82ID:gJq1EeIU >>361
クリティカルセクションのこと?
クリティカルセクションのこと?
368デフォルトの名無しさん
2022/01/02(日) 19:27:00.77ID:ryp06yJk int型(32ビット)でyy/MM/dd/HH/mmの形で日時を実装しているプログラムは、2022年1月1日0時0分(2201010001)に32ビットの最大値(2147483647)を越えてしまい、エラーが発生する。そういう実装をしているMicrosoft Exchangeでは既に問題が発生中。
みんな仕事始めになって気づいて大騒ぎに
みんな仕事始めになって気づいて大騒ぎに
369デフォルトの名無しさん
2022/01/02(日) 19:33:55.23ID:3fzUeLHI DosDateTime爆死確認w
370デフォルトの名無しさん
2022/01/02(日) 20:28:27.33ID:yz2mFgPr371デフォルトの名無しさん
2022/01/02(日) 21:12:20.77ID:l2HAFLEV >>361
Rustのポインタ(参照)および実体にはnull/nil/undefined等が一切ない
そのためnull問題が起きることはなく所謂null安全が保証されている
nullになる可能性がある場合は汎用のオプション型であるenum Option<T>型を用いる
このOption<T>はenumとしてSome(T)とNoneの二値を取り型Tは任意な型
つまり所謂NullはenumのNoneで表現され型Tとは異なるためnull問題が起きようがない
これで効率やコストはどうなるのか?
null(RustではNone)が使われない時は型Tのまま扱うので従来と同じ
null(RustではNone)が使われうる時は型Option<T>として扱う
型Option<T>から型Tを使うにはNoneでない確認が必要だがこれこそ必須な確認コスト
ポインタ(参照)の場合は値がnullすなわち0になることがないためコンパイル後はNoneが0で表現される最適化となる
つまり結果的にはC/C++と同じになるのだがRustは上述のようにコンパイル時点でnull安全を保証できる点で異なる
Rustのポインタ(参照)および実体にはnull/nil/undefined等が一切ない
そのためnull問題が起きることはなく所謂null安全が保証されている
nullになる可能性がある場合は汎用のオプション型であるenum Option<T>型を用いる
このOption<T>はenumとしてSome(T)とNoneの二値を取り型Tは任意な型
つまり所謂NullはenumのNoneで表現され型Tとは異なるためnull問題が起きようがない
これで効率やコストはどうなるのか?
null(RustではNone)が使われない時は型Tのまま扱うので従来と同じ
null(RustではNone)が使われうる時は型Option<T>として扱う
型Option<T>から型Tを使うにはNoneでない確認が必要だがこれこそ必須な確認コスト
ポインタ(参照)の場合は値がnullすなわち0になることがないためコンパイル後はNoneが0で表現される最適化となる
つまり結果的にはC/C++と同じになるのだがRustは上述のようにコンパイル時点でnull安全を保証できる点で異なる
372デフォルトの名無しさん
2022/01/02(日) 22:09:32.73ID:TQn3/Mee Javaのほうが安全。
373デフォルトの名無しさん
2022/01/02(日) 22:11:45.12ID:TQn3/Mee ぬるぽ例外が発生するから安全じゃないとか言う書き込みがあった。
これはウソ。
ないほうが良いならCはヌルポを検出できないから安全って事になる。
Javaは検出して例外を発生させるから安全なのです。
キチガイに騙されるな。
これはウソ。
ないほうが良いならCはヌルポを検出できないから安全って事になる。
Javaは検出して例外を発生させるから安全なのです。
キチガイに騙されるな。
374デフォルトの名無しさん
2022/01/02(日) 22:18:47.48ID:i8dUNFkB >ないほうが良いならCはヌルポを検出できないから安全って事になる。
発生したことを検出できないことと発生しないことを意図的に混同している
発生したことを検出できないことと発生しないことを意図的に混同している
375デフォルトの名無しさん
2022/01/02(日) 23:11:16.20ID:TQn3/Mee Firefoxの惨状を見れば全然安全でないことがわかるのに。
なぜ安全と言い張るのか。
なぜ安全と言い張るのか。
376デフォルトの名無しさん
2022/01/02(日) 23:20:08.47ID:Uu3cvt4h CもC++もJavaも実行時にヌルポ発生するからいずれもダメ
Rustは実行時にヌルポ発生しないことが保証されているから安全
Rustは実行時にヌルポ発生しないことが保証されているから安全
377デフォルトの名無しさん
2022/01/02(日) 23:22:44.87ID:TQn3/Mee RustアンチがRustを称賛してるのではないか。
378デフォルトの名無しさん
2022/01/03(月) 05:19:23.74ID:Tjf/rOJw その可能性高いかも
379デフォルトの名無しさん
2022/01/03(月) 06:00:15.35ID:V/HN/Yqp 学会が自らキチガイを演出する手口に栗卒
380デフォルトの名無しさん
2022/01/03(月) 16:10:29.79ID:mJ9yMonw RustはC++と同じ匂いがする
381デフォルトの名無しさん
2022/01/03(月) 17:15:54.33ID:20WoIOil このようにRustをやってる奴は性格が捻じ曲がってる
382デフォルトの名無しさん
2022/01/03(月) 17:22:00.01ID:4XbgYwR9 rustってc++より難解だよな
こんな言語が流行るとは思わない
こんな言語が流行るとは思わない
383デフォルトの名無しさん
2022/01/03(月) 17:25:50.42ID:ZyFGqp6z 他の言語と比べればめちゃくちゃ難解だし、Rustコミュニティでもどうすれば簡単になるのかいろいろ議論されている
384デフォルトの名無しさん
2022/01/03(月) 17:32:24.16ID:20WoIOil ワイじゃないけど必死に褒めてるのにアンチだとか、ウジ沸いてる
385デフォルトの名無しさん
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で書かれている割にはメモリリークで落ちたりするらしんだけどなんで?
このOS Rustで書かれている割にはメモリリークで落ちたりするらしんだけどなんで?
387デフォルトの名無しさん
2022/01/03(月) 17:50:43.83ID:gvPAh7hb 必須じゃないけど他の言語も知らないRust初心者が異常に増えてきているからトンチンカンな推しをするだけで
コミュニティの増加は良いことだが、初心者が書いた意味不明なコードを直すのはあんたら
Null安全系の推しをしてるのはド素人
コミュニティの増加は良いことだが、初心者が書いた意味不明なコードを直すのはあんたら
Null安全系の推しをしてるのはド素人
388デフォルトの名無しさん
2022/01/03(月) 18:13:06.37ID:V/HN/Yqp メモリ安全が守れればすべてが安全と謳ってる連中は原発は止めれば安心安全とほざいてた奴等と瓜二つ
389デフォルトの名無しさん
2022/01/03(月) 20:13:37.59ID:r29FUtSQ >>386
そもそもRustはメモリリークが起きないことは保証してくれない
参照カウントが循環参照にならないようにしたり、不要になった参照が残り続けたりしないようにするのはプログラマの責任
なのでプラグラム側になんらかのバグがあったのではないかと
メモリ管理周りを標準ライブラリやOSに全部任せられる普通のアプリケーションとは違って
全部自分でやらなきゃいけない自作OSだからバグなく作るのは難しいというのはあるかと思う
そもそもRustはメモリリークが起きないことは保証してくれない
参照カウントが循環参照にならないようにしたり、不要になった参照が残り続けたりしないようにするのはプログラマの責任
なのでプラグラム側になんらかのバグがあったのではないかと
メモリ管理周りを標準ライブラリやOSに全部任せられる普通のアプリケーションとは違って
全部自分でやらなきゃいけない自作OSだからバグなく作るのは難しいというのはあるかと思う
390デフォルトの名無しさん
2022/01/03(月) 21:09:45.15ID:Tjf/rOJw COBOLならメモリーリーク起こらないよ
391デフォルトの名無しさん
2022/01/03(月) 21:31:36.31ID:Qq3YHLjM >>389
結局C++と同じで習熟甘いやつが作れば問題起きまくりなの?
結局C++と同じで習熟甘いやつが作れば問題起きまくりなの?
392デフォルトの名無しさん
2022/01/03(月) 21:51:41.06ID:WCyHxUxt >>387
Rustを含めていまどきの言語がnull安全なのは常識
むしろC++やJavaが古すぎて様々な点で時代遅れにすぎない
もちろんRustはもっとその先へダングリングポインタ排除とGC排除を両立した点にある
Rustを含めていまどきの言語がnull安全なのは常識
むしろC++やJavaが古すぎて様々な点で時代遅れにすぎない
もちろんRustはもっとその先へダングリングポインタ排除とGC排除を両立した点にある
393デフォルトの名無しさん
2022/01/03(月) 22:09:21.15ID:DUDgVZbY このように攻撃性と倒錯を丸出しを両立してしまうと初心者っぽさが出てとても引っ掛かりやすい
どこで覚えたのかNull安全からダングリングポインタという関連性がない事を言い出す。
ゴミくずが降り積もっていく・・・
どこで覚えたのかNull安全からダングリングポインタという関連性がない事を言い出す。
ゴミくずが降り積もっていく・・・
394デフォルトの名無しさん
2022/01/03(月) 22:13:14.24ID:WCyHxUxt >>391
一般的にメモリ関係諸問題のうちメモリリークのみはGC利用でしか解消と判明している
しかし一方でRustではメモリリークを起こすのも意図的にしか起こせない
Rustには所有権の概念があるため特別に複数の所有権を認める特別な参照を
自分で明示的に使用した上でさらに循環参照を生じさせた時のみメモリリークが生じうる
もちろんそのような場面でも通常は弱参照を併用するためメモリリークは起きない
一般的にメモリ関係諸問題のうちメモリリークのみはGC利用でしか解消と判明している
しかし一方でRustではメモリリークを起こすのも意図的にしか起こせない
Rustには所有権の概念があるため特別に複数の所有権を認める特別な参照を
自分で明示的に使用した上でさらに循環参照を生じさせた時のみメモリリークが生じうる
もちろんそのような場面でも通常は弱参照を併用するためメモリリークは起きない
395デフォルトの名無しさん
2022/01/03(月) 22:14:15.40ID:/9oDM4ll396デフォルトの名無しさん
2022/01/03(月) 22:17:11.19ID:nLr3i6Wg nullで落としてるようなバカがnull安全な言語使っても同じく死亡するコード作るだけにしか思えんがな。
あれで救えるコードなんてほとんどないと思うが。
あれで救えるコードなんてほとんどないと思うが。
397デフォルトの名無しさん
2022/01/03(月) 22:35:34.97ID:pC8I0HuA もっとその先へ!草
上のOS記事の作者はリークというかフラグメンテーションの発生だと推測してるが絶対読んでないね。
「意図的にしか起こせない」はい嘘
上のOS記事の作者はリークというかフラグメンテーションの発生だと推測してるが絶対読んでないね。
「意図的にしか起こせない」はい嘘
398デフォルトの名無しさん
2022/01/03(月) 22:36:13.58ID:CMKqgYgE nullで落としてるようなバカって例えばGoogleのChromeチームとかかな?
まぁ全人類バカなのでしょうがないね
まぁ全人類バカなのでしょうがないね
399デフォルトの名無しさん
2022/01/03(月) 22:54:33.28ID:fEzSC6xc ポインタ(参照)になぜかnull値を許してしまう欠陥言語でのみnull問題が起きる
そうでない普通の言語にとってnull安全は当たり前でありそれを意識することすらない
欠陥言語の存在に対してのみnull安全なる言葉の存在意義がある
そうでない普通の言語にとってnull安全は当たり前でありそれを意識することすらない
欠陥言語の存在に対してのみnull安全なる言葉の存在意義がある
400デフォルトの名無しさん
2022/01/03(月) 22:56:23.92ID:pwAwOJBp401デフォルトの名無しさん
2022/01/03(月) 23:21:21.46ID:T+WwhkSI null安全はマジで当たり前すぎてメリットでもなんでもないから
nullの話なんてしたくないわ
nullの話なんてしたくないわ
402デフォルトの名無しさん
2022/01/03(月) 23:22:53.63ID:T+WwhkSI そもそもnullのある言語でもnull参照で死ぬなんてのは
よっぽどのクソコードでテストもしてないときだけだろ
よっぽどのクソコードでテストもしてないときだけだろ
403デフォルトの名無しさん
2022/01/03(月) 23:26:20.57ID:r29FUtSQ 関数の定義からnullableが否かが分かるのがOption<T> のうれしいところと思う
加えて引数や戻り値の所有権が分かるのもRustのうれしいポイントかと
加えて引数や戻り値の所有権が分かるのもRustのうれしいポイントかと
404デフォルトの名無しさん
2022/01/03(月) 23:28:42.03ID:r29FUtSQ fool proofの話をすると Option<T> でも闇雲に unwrap はできるので考えなしのプログラムだとクラッシュする点は変わらない
SEGVじゃなくpanicになるとか、落ちる可能性のある箇所が明示される点でnullよりはマシだが
SEGVじゃなくpanicになるとか、落ちる可能性のある箇所が明示される点でnullよりはマシだが
■ このスレッドは過去ログ倉庫に格納されています
