公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part24
https://mevius.5ch.net/test/read.cgi/tech/1716759686/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
探検
Rust part25
レス数が950を超えています。1000を超えると書き込みができなくなります。
2024/07/31(水) 00:46:26.17ID:DBMWY2QT
866デフォルトの名無しさん
2024/09/13(金) 13:38:15.45ID:bblj+c3p >>863
ああ断りがあったわスマソωωω
ああ断りがあったわスマソωωω
867デフォルトの名無しさん
2024/09/13(金) 13:47:53.90ID:Q2/6uPpv なんていうか
質問が曖昧な時ってどういうことか問い直すだけで曖昧さが消えて勝手に解決することのほうが多いんじゃないかって
質問が曖昧な時ってどういうことか問い直すだけで曖昧さが消えて勝手に解決することのほうが多いんじゃないかって
868デフォルトの名無しさん
2024/09/13(金) 13:49:36.00ID:bblj+c3p moveされたものはともかく
copyされたものが可変になっても嬉しくないパターンが多い
copyされたものが可変になっても嬉しくないパターンが多い
869デフォルトの名無しさん
2024/09/13(金) 13:51:25.85ID:bblj+c3p unsafe {
参照は
可変参照→不変参照は可能
不変参照→可変参照も可能
}
参照は
可変参照→不変参照は可能
不変参照→可変参照も可能
}
870デフォルトの名無しさん
2024/09/13(金) 14:55:43.09ID:HD5QYSk4 OpenAIが複雑な推論能力をもつAIモデル「OpenAI o1」と「OpenAI o1-mini」を発表、プログラミングや数学で高い能力を発揮
https://gigazine.net/news/20240913-openai-o1/
https://gigazine.net/news/20240913-openai-o1/
871デフォルトの名無しさん
2024/09/13(金) 16:25:09.37ID:9KFHzeXz >>617
>NimはCより2倍速いと主張している人がまずはその比較コードとベンチ結果を示す義務がありますよ
下記のNim2.0ベンチマークより速くできなかったら、今度こそ本当にRustはNim2.0より劣る言語と理解してもよろしいでしょうか?
Rustは変数の所有権や借用を開発時に考慮する必要があり、とても学習コストが高いです。
Nim2.0ではコンパイラがソースコードを解析し、スコープと所有権に基づくメモリ管理を開発者が考える必要がなく自動で行います。
Nim2.0では開発者はプログラムをスクリプト言語のように書け、所有権や変数の寿命を意識する必要はありません。
しかし内部ではRustと同じメカニズムでメモリ管理を行っています。
フィボナッチ数列(回帰関数)のベンチマークはNim 2.0がダントツの速さでした
fibonacci(44)の計算
Nim 2.0.0 + gcc HEAD 14.0.0 -O2 (44はコマンドライン引数)
https://wandbox.org/...ink/cpYesJtnlRNJiu7Z
>Time= 0.197s Result=701408733
Nim(44はコマンドライン引数)
https://wandbox.org/...ink/WoYP0STRKxaRBGCY
>Time= 0.240s Result=701408733
C/gcc(44はソース直書き)
https://wandbox.org/...ink/9OYZBH14tYooZHF7
> Time: 0.89583 seconds
C/clang(44はソース直書き)
https://wandbox.org/...ink/U97PecZYrzymnfH4
>Time=1.58712s Result=701408733
>NimはCより2倍速いと主張している人がまずはその比較コードとベンチ結果を示す義務がありますよ
下記のNim2.0ベンチマークより速くできなかったら、今度こそ本当にRustはNim2.0より劣る言語と理解してもよろしいでしょうか?
Rustは変数の所有権や借用を開発時に考慮する必要があり、とても学習コストが高いです。
Nim2.0ではコンパイラがソースコードを解析し、スコープと所有権に基づくメモリ管理を開発者が考える必要がなく自動で行います。
Nim2.0では開発者はプログラムをスクリプト言語のように書け、所有権や変数の寿命を意識する必要はありません。
しかし内部ではRustと同じメカニズムでメモリ管理を行っています。
フィボナッチ数列(回帰関数)のベンチマークはNim 2.0がダントツの速さでした
fibonacci(44)の計算
Nim 2.0.0 + gcc HEAD 14.0.0 -O2 (44はコマンドライン引数)
https://wandbox.org/...ink/cpYesJtnlRNJiu7Z
>Time= 0.197s Result=701408733
Nim(44はコマンドライン引数)
https://wandbox.org/...ink/WoYP0STRKxaRBGCY
>Time= 0.240s Result=701408733
C/gcc(44はソース直書き)
https://wandbox.org/...ink/9OYZBH14tYooZHF7
> Time: 0.89583 seconds
C/clang(44はソース直書き)
https://wandbox.org/...ink/U97PecZYrzymnfH4
>Time=1.58712s Result=701408733
872デフォルトの名無しさん
2024/09/13(金) 16:48:36.51ID:9KFHzeXz >>871
リンク訂正
fibonacci(44)の計算
Nim 2.0.0 + gcc HEAD 14.0.0 -O2 (44はコマンドライン引数)
https://wandbox.org/permlink/cpYesJtnlRNJiu7Z
>Time= 0.197s Result=701408733
Nim 2.0.0 + gcc 12.2.0 -O2 (44はコマンドライン引数)
https://wandbox.org/permlink/RVJ4eHKKl5DARK3u
>Time= 0.250s Result=701408733
C/gcc -O2 (44はソース直書き)
https://wandbox.org/permlink/9OYZBH14tYooZHF7
> Time: 0.89583 seconds
C/clang -O2 (44はソース直書き)
https://wandbox.org/permlink/U97PecZYrzymnfH4
>Time=1.58712s Result=701408733
リンク訂正
fibonacci(44)の計算
Nim 2.0.0 + gcc HEAD 14.0.0 -O2 (44はコマンドライン引数)
https://wandbox.org/permlink/cpYesJtnlRNJiu7Z
>Time= 0.197s Result=701408733
Nim 2.0.0 + gcc 12.2.0 -O2 (44はコマンドライン引数)
https://wandbox.org/permlink/RVJ4eHKKl5DARK3u
>Time= 0.250s Result=701408733
C/gcc -O2 (44はソース直書き)
https://wandbox.org/permlink/9OYZBH14tYooZHF7
> Time: 0.89583 seconds
C/clang -O2 (44はソース直書き)
https://wandbox.org/permlink/U97PecZYrzymnfH4
>Time=1.58712s Result=701408733
873デフォルトの名無しさん
2024/09/13(金) 18:49:24.01ID:Q2/6uPpv これは荒れるぞ…!
874デフォルトの名無しさん
2024/09/13(金) 18:54:08.50ID:XNZ3+5G0 C言語よりNimが4倍速いと確定
メモリ管理に優れたNimはフィボナッチ計算でも速い
メモリ管理に優れたNimはフィボナッチ計算でも速い
875デフォルトの名無しさん
2024/09/13(金) 20:47:19.98ID:0tvxUAPp 低知能さんは即NGされるだけやで
876デフォルトの名無しさん
2024/09/13(金) 21:30:58.64ID:3+j4DpP0 https://wandbox.org/permlink/EZG1tVHViP2HfZsH
Time=0.00000s Result=701408733
シンプルな書き方ではなくなるけど、ちゃんと最適化すると早くなるぞ
(nimでも同じことはできるかもしれないが)
元のコードでもCの方はインライン化されてるのかが気になった
inline 付けるとエラーになる (wandbox の仕様?不具合?) から試せなかったけど
Time=0.00000s Result=701408733
シンプルな書き方ではなくなるけど、ちゃんと最適化すると早くなるぞ
(nimでも同じことはできるかもしれないが)
元のコードでもCの方はインライン化されてるのかが気になった
inline 付けるとエラーになる (wandbox の仕様?不具合?) から試せなかったけど
877デフォルトの名無しさん
2024/09/13(金) 22:25:18.35ID:Q2/6uPpv う~ん高知能
878デフォルトの名無しさん
2024/09/13(金) 22:29:46.65ID:XNZ3+5G0 普通に書いてCの4~5倍速いNimが最速プログラミング言語でよろしいでしょうか?
879デフォルトの名無しさん
2024/09/13(金) 22:42:17.50ID:7dvxgxgq マイクロベンチマークは特性の把握に使うものであって優劣を決めるものじゃないよ。
単純な再帰の速度を計測してわかるのは単純な再帰のときの速度だ。
それが想定するユースケースにマッチしてるならそれでもいいけど……。
フィボナッチ数を計算するのが Nim の典型的な用途ってわけじゃないだろ?
単純な再帰の速度を計測してわかるのは単純な再帰のときの速度だ。
それが想定するユースケースにマッチしてるならそれでもいいけど……。
フィボナッチ数を計算するのが Nim の典型的な用途ってわけじゃないだろ?
881デフォルトの名無しさん
2024/09/13(金) 22:56:11.85ID:3+j4DpP0 Nimはメモリ管理が良いという話なら、ヒープを使わないコードで比較しても意味がないと思う
再起呼び出しの速さだけ見て何になるんだ
再起呼び出しの速さだけ見て何になるんだ
882デフォルトの名無しさん
2024/09/13(金) 23:00:41.14ID:FL81G/Fa883デフォルトの名無しさん
2024/09/13(金) 23:12:47.89ID:z8SS7FBe Cの4-5倍も速いのに全く普及する気配がないのは何故かを気にしたほうがいいと思うけど…
884デフォルトの名無しさん
2024/09/13(金) 23:13:27.70ID:36xg6fYR 俺環(Nim2.0.8)だと-d: dangerで-O3になる
Cを同じ-O3にすると所要時間はほぼ同じになる(ややCのほうが高速)
-d:releaseと-O2で比べるとNimのほうが有意に遅い
pragmaとコンパイルオプションと環境を揃えればそんな差が出るわけがない
Cを同じ-O3にすると所要時間はほぼ同じになる(ややCのほうが高速)
-d:releaseと-O2で比べるとNimのほうが有意に遅い
pragmaとコンパイルオプションと環境を揃えればそんな差が出るわけがない
885デフォルトの名無しさん
2024/09/13(金) 23:18:25.01ID:36xg6fYR 生成されたCのコードはNimのコンパイラ作ってる人間ならともかく普通の人間が読むのはキツイな
886デフォルトの名無しさん
2024/09/14(土) 00:15:56.82ID:tADrZaHu https://wandbox.org/permlink/MN8P2xOdeXQRYrEB
関数呼び出しコストの話とはあんま関係ないけど、小さな再帰関数なら数段分を別関数に分けると爆速になるという気づきを得た
たぶん数段分がひとつの関数内にインライン展開されてる
関数呼び出しコストの話とはあんま関係ないけど、小さな再帰関数なら数段分を別関数に分けると爆速になるという気づきを得た
たぶん数段分がひとつの関数内にインライン展開されてる
887デフォルトの名無しさん
2024/09/14(土) 01:41:16.01ID:vw4ahZGC structoptクレート外したら、リリースビルドで2.5MB小さくなった
たかがオプション解析でコードサイズでかすぎだろ
たかがオプション解析でコードサイズでかすぎだろ
888デフォルトの名無しさん
2024/09/14(土) 13:43:40.74ID:o3f0Ddoe >>872
糞リンク貼ってると誰の自演かバレるなω
糞リンク貼ってると誰の自演かバレるなω
889デフォルトの名無しさん
2024/09/14(土) 13:46:57.51ID:FiNQTETj Nimが、Cのトランスパイラのままなら、
Cを超えることは、出来ないんだけど。
C以外との比較なら、まだわかる。
Cを超えることは、出来ないんだけど。
C以外との比較なら、まだわかる。
890デフォルトの名無しさん
2024/09/14(土) 14:59:24.39ID:5H/bnNk9 Rust の std::sync::atomic::fence って C++ の std::atomic_thread_fence 相当?
891デフォルトの名無しさん
2024/09/14(土) 18:16:26.88ID:/jwt/PtH C/C++コードをパクろうとしているか?
RustでGPLロンダリングするな
RustでGPLロンダリングするな
892デフォルトの名無しさん
2024/09/14(土) 18:32:44.15ID:5H/bnNk9 メモリモデルが C++ のパクリだしそっちのほうが資料が豊富なんだからしょうがないじゃん
893デフォルトの名無しさん
2024/09/14(土) 19:17:14.39ID:zKyrbT+d そんなことよりCarbon Languageの話をしようぜ
894デフォルトの名無しさん
2024/09/14(土) 20:13:02.31ID:AKZgRAxV スレチ
895デフォルトの名無しさん
2024/09/15(日) 09:30:53.13ID:xw1jp1Zr Rustでreplaceするとロンダ楽なのか
良い話を教えてもらった
良い話を教えてもらった
896デフォルトの名無しさん
2024/09/15(日) 13:04:00.82ID:hg9QOZOF specialization って unsound なんですか?
897デフォルトの名無しさん
2024/09/15(日) 14:09:53.01ID:IQt0DXZr full specializationはunsoundな問題を抱えている
それが君の言う「specializationはunsound」の定義なら答えはyes
それが君の言う「specializationはunsound」の定義なら答えはyes
898デフォルトの名無しさん
2024/09/15(日) 14:54:57.41ID:O4LroQh3 Nimって初めて聞いたけどCのコード出力するんか
ならNimがCより早い、じゃなくてNimがおまえより早い、じゃね?
ならNimがCより早い、じゃなくてNimがおまえより早い、じゃね?
899デフォルトの名無しさん
2024/09/15(日) 15:02:55.04ID:hg9QOZOF >>897
あっうん、それは分かってて聞いたんだ
具体的にどういうコードだと UB になるのか
それを回避しているらしい min_specialization はどういう制約が付いたサブセットなのか
そういうのが知りたかったかな……
あっうん、それは分かってて聞いたんだ
具体的にどういうコードだと UB になるのか
それを回避しているらしい min_specialization はどういう制約が付いたサブセットなのか
そういうのが知りたかったかな……
900デフォルトの名無しさん
2024/09/15(日) 18:34:12.34ID:3FvPGoq2 >>899
Tracking Issueを読んでね
特にまとめ的なこの2つのコメントを
https://github.com/rust-lang/rust/issues/31844#issuecomment-1712327948
https://github.com/rust-lang/rust/issues/31844#issuecomment-1707023896
Tracking Issueを読んでね
特にまとめ的なこの2つのコメントを
https://github.com/rust-lang/rust/issues/31844#issuecomment-1712327948
https://github.com/rust-lang/rust/issues/31844#issuecomment-1707023896
901デフォルトの名無しさん
2024/09/15(日) 23:40:25.17ID:TlrO/i0R >>6
トヨタもRustかよ
トヨタもRustかよ
902デフォルトの名無しさん
2024/09/15(日) 23:50:17.65ID:D8okZ/+L Rustのビルド中間ファイルってなんであんなにでかくなるの?
Tauri使ったちょっとしたツールで20GBぐらい行ったりする
LLVM使ってる言語はみんなそうなの?
Tauri使ったちょっとしたツールで20GBぐらい行ったりする
LLVM使ってる言語はみんなそうなの?
903デフォルトの名無しさん
2024/09/16(月) 14:06:23.46ID:KZuryTv7 cargo clean
cargo update
これ毎回やってる
cargo update
これ毎回やってる
904デフォルトの名無しさん
2024/09/16(月) 14:06:47.97ID:KZuryTv7 Tauriは特に糞
905デフォルトの名無しさん
2024/09/17(火) 23:55:54.51ID:fQRlhwbL >>829
そこまで使い勝手が違うならshared_ptrとは別物と認識した方がよさそうだ
そこまで使い勝手が違うならshared_ptrとは別物と認識した方がよさそうだ
906デフォルトの名無しさん
2024/09/18(水) 11:56:36.10ID:vGGDuA6m Zigだんとつやんけ
ver1.0早う
github.com/kostya/benchmarks?tab=readme-ov-file#primes
ver1.0早う
github.com/kostya/benchmarks?tab=readme-ov-file#primes
907デフォルトの名無しさん
2024/09/18(水) 12:51:56.38ID:Vqc4Tj2+ >>906
ソース見たらコストの高いハッシュ衝突安全性を必要としない計算ベンチでそれを使っているいつもの話だった
知識がないとそういうミスをしてしまいがち
他にもVecをインデックスでシーケンシャルアクセスしたりRustに不慣れすぎ
ソース見たらコストの高いハッシュ衝突安全性を必要としない計算ベンチでそれを使っているいつもの話だった
知識がないとそういうミスをしてしまいがち
他にもVecをインデックスでシーケンシャルアクセスしたりRustに不慣れすぎ
908デフォルトの名無しさん
2024/09/18(水) 13:01:04.32ID:vQRPyR7n それより>>890ってどうなの
909デフォルトの名無しさん
2024/09/18(水) 13:54:44.95ID:3YdRpzvH910デフォルトの名無しさん
2024/09/18(水) 14:41:44.76ID:Qk7JHPx8 >>906
Rsutってインタープリター言語だっけ?
Rsutってインタープリター言語だっけ?
911デフォルトの名無しさん
2024/09/18(水) 15:08:51.57ID:TO48nZmb >>906
Rustは二重ループ内(141行目)の
let new_prefix = prefix.clone() + &ch.to_string();
が負担になってそう
他の言語と比べてないけどcloneはいらないはず
Rustは二重ループ内(141行目)の
let new_prefix = prefix.clone() + &ch.to_string();
が負担になってそう
他の言語と比べてないけどcloneはいらないはず
912デフォルトの名無しさん
2024/09/18(水) 15:25:03.39ID:TO48nZmb zigの実装に寄せるなら
let new_prefix = format!("{prefix}{ch}");
でいいのかな
全部見てないから動くか分からんけど
let new_prefix = format!("{prefix}{ch}");
でいいのかな
全部見てないから動くか分からんけど
913デフォルトの名無しさん
2024/09/18(水) 15:26:20.88ID:SWVF2jAZ914デフォルトの名無しさん
2024/09/18(水) 19:11:45.89ID:mTxD41RC >> 909
Go & trie-rs 追加
Go 0.845
Rust 1.306 (trie-rs)
>> 912
影響ないっぽい、ブレの範囲内だった
Go & trie-rs 追加
Go 0.845
Rust 1.306 (trie-rs)
>> 912
影響ないっぽい、ブレの範囲内だった
915デフォルトの名無しさん
2024/09/18(水) 22:13:43.11ID:nFxNUCWE >>906
意図的なのかわからないがそのコード
ZigではArenaAllocatorつまりアリーナを用いている
C++ではmonotonic_buffer_resorceつまりアリーナを用いている
Rustではなぜかアリーナが使われていない
その差が速度差となっている
前にもこのアリーナ利用の有無で速度が全く異なる話がこのスレで出ていたような
意図的なのかわからないがそのコード
ZigではArenaAllocatorつまりアリーナを用いている
C++ではmonotonic_buffer_resorceつまりアリーナを用いている
Rustではなぜかアリーナが使われていない
その差が速度差となっている
前にもこのアリーナ利用の有無で速度が全く異なる話がこのスレで出ていたような
916デフォルトの名無しさん
2024/09/19(木) 03:23:22.25ID:NqtXmLsQ >>915
GoはアリーナアロケータなしでRustより速い
GoはアリーナアロケータなしでRustより速い
917デフォルトの名無しさん
2024/09/19(木) 03:57:37.37ID:kiFDdu85 そもそも Rust のアリーナアロケータってなんで全部独自コンテナみたいな感じで実装されてんの?
allocator_api がまだ unstable だから?
allocator_api がまだ unstable だから?
918デフォルトの名無しさん
2024/09/19(木) 04:11:09.43ID:kiFDdu85 真面目に改善しようと思うなら、プロファイル取った上で alloc/dealloc が本当にボトルネックだったのか、そこから検証しなきゃ
919デフォルトの名無しさん
2024/09/19(木) 04:44:55.41ID:99kJCx26 >>916
Goはガベージコレクタ依存言語だから
アリーナを使用するか否かでそれほど大きくは変わらない
特に今回はGCが起きる前に終わるため影響は限りなく小さい
アリーナを使用するか否かで非常に大きく影響を受けるのはGCを前提としない言語
Goはガベージコレクタ依存言語だから
アリーナを使用するか否かでそれほど大きくは変わらない
特に今回はGCが起きる前に終わるため影響は限りなく小さい
アリーナを使用するか否かで非常に大きく影響を受けるのはGCを前提としない言語
920デフォルトの名無しさん
2024/09/19(木) 07:08:15.45ID:+8pHe+Yd 一般にガベコレ言語はalloc/freeが速い
特にfreeが速い
さらに小さなプログラムでは、遅延させたfreeを結局実行しないまま終わるのでさらに速い
特にfreeが速い
さらに小さなプログラムでは、遅延させたfreeを結局実行しないまま終わるのでさらに速い
921デフォルトの名無しさん
2024/09/19(木) 09:38:22.33ID:10l+f26H > アリーナ利用の有無
×
> アリーナを使用するか否か
×
○ Rustはアリーナアロケーターなトライ木をポンと書ける程に整備されてない
×
> アリーナを使用するか否か
×
○ Rustはアリーナアロケーターなトライ木をポンと書ける程に整備されてない
922デフォルトの名無しさん
2024/09/19(木) 10:26:52.55ID:v0DA15Jd Sorena
923デフォルトの名無しさん
2024/09/19(木) 12:34:03.58ID:bzcz+C1u アリーナ関係ない前段のsieve部分もrustが遅い
programming-language-benchmarks.vercel.app/problem/nsieve
前まで最適化に熱心だった信者がZigに移ったんかな
programming-language-benchmarks.vercel.app/problem/nsieve
前まで最適化に熱心だった信者がZigに移ったんかな
924デフォルトの名無しさん
2024/09/19(木) 12:48:12.80ID:kiFDdu85925デフォルトの名無しさん
2024/09/19(木) 13:03:22.18ID:FghkJ/1s >>923
BunでZigが始まった感ある
BunでZigが始まった感ある
926デフォルトの名無しさん
2024/09/19(木) 16:25:47.59ID:ZuBUnHjP >>925
1.0に達してから出直してくれ
1.0に達してから出直してくれ
927デフォルトの名無しさん
2024/09/19(木) 17:04:35.08ID:W7Rw00sD いい加減ベンチでHashMap使うのやめてくれんかな
928デフォルトの名無しさん
2024/09/19(木) 17:04:45.88ID:AQ9Jto0I929デフォルトの名無しさん
2024/09/19(木) 17:18:19.21ID:kiFDdu85 Zig 1.0 は 2025 年にリリース予定らしいので、その後はどうなるかね
930デフォルトの名無しさん
2024/09/19(木) 18:00:30.55ID:5zXjGsxJ931デフォルトの名無しさん
2024/09/19(木) 18:00:52.16ID:99kJCx26 Zigはasync/awaitなどの非同期対応を捨てたまま狭い領域でやっていくのかな
932デフォルトの名無しさん
2024/09/19(木) 18:04:31.95ID:5zXjGsxJ Zigはstd.DynamicBitSet
C++はvector<bool>
を使っている
C++はvector<bool>
を使っている
933デフォルトの名無しさん
2024/09/19(木) 21:18:23.55ID:js953yg3934デフォルトの名無しさん
2024/09/19(木) 21:23:20.81ID:js953yg3 それと一番最初Zigはコンパイルエラーだったので>>909の段階でstd.TailQueueはstd.DoublyLinkedListにした
935デフォルトの名無しさん
2024/09/19(木) 22:39:32.91ID:Ar0pN/Hy >>115
Zigはそんな安全性無視なことをして速さを得ているの?
Zigはそんな安全性無視なことをして速さを得ているの?
936デフォルトの名無しさん
2024/09/19(木) 23:08:32.65ID:O+mD9PcY 範囲外チェックに突っ込むならC/C++もそうですがな
RustはC/C++ほどには速さを優先してなくて、安全性の方を重視してる
HashMapがデフォルトで「遅いけど安全」なハッシュアルゴリズムを使うのもそう
Rustが良いのは安全性や型による表現力の高さが提供されてて、その上で十分に速いところ
純粋な速さだけであれば、よりCに近いZigの方が上というのも妥当といえば妥当
RustはC/C++ほどには速さを優先してなくて、安全性の方を重視してる
HashMapがデフォルトで「遅いけど安全」なハッシュアルゴリズムを使うのもそう
Rustが良いのは安全性や型による表現力の高さが提供されてて、その上で十分に速いところ
純粋な速さだけであれば、よりCに近いZigの方が上というのも妥当といえば妥当
937デフォルトの名無しさん
2024/09/19(木) 23:24:05.93ID:a7Zco7ef そういう方針のZigを採用する企業は極少数になりそう
アメリカ政府が安全な言語に置き換えよう!と言ってるけどZigはNG側だね
アメリカ政府が安全な言語に置き換えよう!と言ってるけどZigはNG側だね
938デフォルトの名無しさん
2024/09/19(木) 23:46:52.22ID:AQ9Jto0I 「言語が」というだけでなく「デフォルトでは」という前提が付く。
広く使われるようになるとカスい判断をする人も出てくるし、比較的マシなほうをデフォルトにしておくのは合理的な判断だ。
Zig はまだ言語をよく理解しようとする好事家 (いわゆるアーリーアダプタ) のものであってしょうもないユーザは参加してない段階 (なので低能なユーザを考慮してない) というだけかもしれない。
状況や用途によって判断は違ってくるので単純な良し悪しでは測れない。
広く使われるようになるとカスい判断をする人も出てくるし、比較的マシなほうをデフォルトにしておくのは合理的な判断だ。
Zig はまだ言語をよく理解しようとする好事家 (いわゆるアーリーアダプタ) のものであってしょうもないユーザは参加してない段階 (なので低能なユーザを考慮してない) というだけかもしれない。
状況や用途によって判断は違ってくるので単純な良し悪しでは測れない。
939デフォルトの名無しさん
2024/09/19(木) 23:56:50.81ID:H7B6P1++ ホワイトハウスの意向で今は安全な言語への移行を推奨という状況だけど近いうちにもっと厳しくなる
その時にZigの立場はない
その時にZigの立場はない
940デフォルトの名無しさん
2024/09/19(木) 23:57:18.58ID:O+mD9PcY unsafe Rustを使う分野だとRustも安全だと言い切れなくない?
RustほどではないけどZigもCに比べれば安全なコードを書きやすいし、Better Cとしての価値は十分にあると思う
将来的に採用が増えるかは分からないけど、C開発者にとって移植しやすい・学習コストが小さいという理由でZigを選ぶケースはありそう
RustほどではないけどZigもCに比べれば安全なコードを書きやすいし、Better Cとしての価値は十分にあると思う
将来的に採用が増えるかは分からないけど、C開発者にとって移植しやすい・学習コストが小さいという理由でZigを選ぶケースはありそう
941デフォルトの名無しさん
2024/09/20(金) 00:04:52.33ID:/FW0+jsA いくら悪いと主張したところで低レイヤは C が支配している (OS やデバイスドライバは大抵の場合に C で書かれている) という現実があるのは変わらんからな。
過渡的な措置として (充分に安全ではなくても) C から移植しやすい言語に出番がありうるというのはわかる。
過渡的な措置として (充分に安全ではなくても) C から移植しやすい言語に出番がありうるというのはわかる。
942デフォルトの名無しさん
2024/09/20(金) 00:12:09.61ID:nStvhCnF とはいえ最近のLinuxカーネルメンテナの話とか見るに彼ら(の一部)はC以外に移行する気は一切なさそうだよね
あと組み込み系でC使っている人は多いけど、あっちはあっちでコンパイラ認証必須だったりして
Zigが使い物になるにはまだ10年とかかかりそう
そこまでZigがちゃんと生きているかというと結構難しいところなんでは…
あと組み込み系でC使っている人は多いけど、あっちはあっちでコンパイラ認証必須だったりして
Zigが使い物になるにはまだ10年とかかかりそう
そこまでZigがちゃんと生きているかというと結構難しいところなんでは…
943デフォルトの名無しさん
2024/09/20(金) 00:20:40.07ID:zHznArWB >>940
そのスレにいるならそろそろ学習しようよ
「unsafe Rustを使う分野」というものは存在しない
標準ライブラリがunsafeで作られているためどんな分野であろうとunsafeのお世話になる
しかしunsafeは特定の関数やモジュールに閉じ込められていてそれ以外の部分の安全性をRust(コンパイラ)が保証してくれる
新たな分野であろうとこの原理は同じ
プログラムのほとんどの部分は自動的に安全性が保証される
どうしても必要な極一部のunsafe部分のみに人間の監視リソースを集中できる
この原理によりRustは安全であるとされて選ばれている
そのスレにいるならそろそろ学習しようよ
「unsafe Rustを使う分野」というものは存在しない
標準ライブラリがunsafeで作られているためどんな分野であろうとunsafeのお世話になる
しかしunsafeは特定の関数やモジュールに閉じ込められていてそれ以外の部分の安全性をRust(コンパイラ)が保証してくれる
新たな分野であろうとこの原理は同じ
プログラムのほとんどの部分は自動的に安全性が保証される
どうしても必要な極一部のunsafe部分のみに人間の監視リソースを集中できる
この原理によりRustは安全であるとされて選ばれている
944デフォルトの名無しさん
2024/09/20(金) 02:06:23.53ID:hHX3CUd7946デフォルトの名無しさん
2024/09/20(金) 08:14:15.43ID:ombgsYO5 走行中に連結器が外れたら
そのまま走り続けるのがC言語
緊急停止がabort
そもそも外れないのがRust
でFA?
そのまま走り続けるのがC言語
緊急停止がabort
そもそも外れないのがRust
でFA?
947デフォルトの名無しさん
2024/09/20(金) 08:19:24.68ID:ombgsYO5 >>940
unsafe Rust は安全だ
unsafe Rust は安全だ
948デフォルトの名無しさん
2024/09/20(金) 08:22:06.57ID:ombgsYO5949デフォルトの名無しさん
2024/09/20(金) 08:26:57.74ID:+urgn5Bc Cから移植するのはZig
C++から移植するのはRust
明快だ
C++から移植するのはRust
明快だ
950デフォルトの名無しさん
2024/09/20(金) 08:36:43.29ID:0kwaWsQC というより充分に安全でないならわざわざCから移植する必要がないんだよな
Rustは安全というメリットがあるから移植コストを払える(人もいる)けど
Zigがbetter Cであるのはわかるけど、現実にはCを使い続ける人がほとんどじゃないかと思う
Rustは安全というメリットがあるから移植コストを払える(人もいる)けど
Zigがbetter Cであるのはわかるけど、現実にはCを使い続ける人がほとんどじゃないかと思う
951デフォルトの名無しさん
2024/09/20(金) 08:41:47.73ID:0kwaWsQC ZigはDとかNimと同じ匂いがするんだよね
確かに便利になってる部分はいろいろあるんだけど、すでに慣れ親しんだ言語から移行するだけの強力なモチベーションがないというか
確かに便利になってる部分はいろいろあるんだけど、すでに慣れ親しんだ言語から移行するだけの強力なモチベーションがないというか
952デフォルトの名無しさん
2024/09/20(金) 09:54:00.87ID:ZOd0SPdk C/C++より安全でC/++から移植し易いのはNim
953デフォルトの名無しさん
2024/09/20(金) 09:57:45.63ID:ZOd0SPdk954デフォルトの名無しさん
2024/09/20(金) 10:26:50.19ID:U1w7xIBY Rustは管理者・経営者という強力な味方がいるから、コーダーに強制するのは簡単だな。
かつてのJavaの流れになれるかどうか。
かつてのJavaの流れになれるかどうか。
955デフォルトの名無しさん
2024/09/20(金) 10:47:55.86ID:SuyVRk3R956デフォルトの名無しさん
2024/09/20(金) 11:17:57.80ID:/FW0+jsA 問題は想定しないところから出てくる。
想定されるところは対処済みだから。
想定漏れを潰すには実際に運用して、出てきた問題を潰してというループを繰り返すしかない。
実務者の考えはそういうものだ。
運用実績があることが保証の裏付けなんだよ。
Rust の保証が C に比べて強力なのはメモリアクセスまわりの違反検出くらいなので
Rust で書きなおすなら他の要素は検証しなおしになる。
OS が保証しなけりゃならないのはメモリアクセス違反がないことだけじゃないんだぞ。
想定されるところは対処済みだから。
想定漏れを潰すには実際に運用して、出てきた問題を潰してというループを繰り返すしかない。
実務者の考えはそういうものだ。
運用実績があることが保証の裏付けなんだよ。
Rust の保証が C に比べて強力なのはメモリアクセスまわりの違反検出くらいなので
Rust で書きなおすなら他の要素は検証しなおしになる。
OS が保証しなけりゃならないのはメモリアクセス違反がないことだけじゃないんだぞ。
957デフォルトの名無しさん
2024/09/20(金) 11:24:36.15ID:ZOd0SPdk Rustは清書用(キリっ
958デフォルトの名無しさん
2024/09/20(金) 11:35:22.91ID:Z+QjUDB+ 組み込み系はMISRA Cとかあるがお作法レイヤーだからな。
rustの場合は言語レベルの層で対応できるのがメリットでかい。
rustの場合は言語レベルの層で対応できるのがメリットでかい。
959デフォルトの名無しさん
2024/09/20(金) 11:36:34.54ID:iYhQa7Jy960デフォルトの名無しさん
2024/09/20(金) 11:48:11.57ID:KtEON28z >>956
モダンな言語を使ったことがない時代遅れの人から見るとそういう間違った勘違いをしてしまいがちだけど
C言語と比較するとモダンな言語はいずれも驚くほど様々なことを保証してくれていたりミスが減ったりするよ
Rustはさらにメモリ競合なども防止してくれて強力だよ
モダンな言語を使ったことがない時代遅れの人から見るとそういう間違った勘違いをしてしまいがちだけど
C言語と比較するとモダンな言語はいずれも驚くほど様々なことを保証してくれていたりミスが減ったりするよ
Rustはさらにメモリ競合なども防止してくれて強力だよ
962デフォルトの名無しさん
2024/09/20(金) 13:06:37.11ID:/FW0+jsA963デフォルトの名無しさん
2024/09/20(金) 13:13:40.32ID:/FW0+jsA964デフォルトの名無しさん
2024/09/20(金) 13:22:45.84ID:ihDm1oNN965デフォルトの名無しさん
2024/09/20(金) 13:38:51.47ID:hHX3CUd7 >>963
全体の文意を読まないで「デバイスドライバは大抵の場合に C で書かれている」の部分だけ拾って反応しちゃったんだと思う
全体の文意を読まないで「デバイスドライバは大抵の場合に C で書かれている」の部分だけ拾って反応しちゃったんだと思う
966デフォルトの名無しさん
2024/09/20(金) 13:47:00.37ID:F4gFpM7i >>827
C++はそのようなデータ競合を見逃すけど
Rustはコンパイルエラーにしてくれる
let mut v = vec![0, 1, 2, 3, 4, 5, 6, 7];
let p5 = &v[5];
v.push(8);
assert!(*p5 == 5);
error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable
| let p5 = &v[5];
| - immutable borrow occurs here
| v.push(8);
| ^^^^^^^^^ mutable borrow occurs here
| assert!(*p5 == 5);
| --- immutable borrow later used here
C++はそのようなデータ競合を見逃すけど
Rustはコンパイルエラーにしてくれる
let mut v = vec![0, 1, 2, 3, 4, 5, 6, 7];
let p5 = &v[5];
v.push(8);
assert!(*p5 == 5);
error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable
| let p5 = &v[5];
| - immutable borrow occurs here
| v.push(8);
| ^^^^^^^^^ mutable borrow occurs here
| assert!(*p5 == 5);
| --- immutable borrow later used here
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【!?】高市早苗「靖国神社電撃参拝プラン」浮上!これもう戦争だろ… [481941988]
- 【実況】博衣こよりのえちえち朝こよ🧪
- カカロット、腰痛い
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
