Rust part26

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/09/20(金) 22:18:38.38ID:c48cFuZJ
公式
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 part25
https://mevius.5ch.net/test/read.cgi/tech/1722354386/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
2024/10/03(木) 13:08:08.08ID:fMIIfXl3
繰り返し構文の直前だけで行うように最適化されたにしろ
Rustだと配列の範囲をはみ出してないかの検査が
リリース版アプリでも入り続けるのだろうが、
それで不合格になるとアプリはダウンするから、
自動運転では人が死ぬので意味無い。
2024/10/03(木) 14:18:38.46ID:J18SNG72
>>131
>>128の文章が足りてないだけで
そこはCargo.lockの担当範囲やろ
2024/10/03(木) 18:08:46.17ID:vqUXT4xx
おまいら愚痴ってないでcode書け
書いて書いて書き捲れ
135デフォルトの名無しさん
垢版 |
2024/10/03(木) 21:40:37.20ID:xd7ZayaC
>>124
C++で遅いというなら「どちらかというと速い言語」って何が残るんだ
2024/10/04(金) 17:31:48.28ID:8BYffXd4
ざっくり速い遅いとか言ってるやつは雑魚でしょ
相手しなくていい
2024/10/04(金) 22:11:50.25ID:DHhd1aGk
十倍とか百倍とかいうレベルで露骨に差があるものならざっくりした比較でいいよ。
細かい数値が必要になるのは差が微妙だからで、その微妙な差を素人が適切に評価できるんかって話だわ。
データを出したってどうせそのデータを適切に読み取るのは無理だ。

そりゃ Rust が実行時にも境界チェックをする場合がある (実行コストが上がる) のは本当だけど、
Rust のほうが C++ より最適化しやすい (エイリアス解析がやりやすいので) というのはあるし、
その一方ではまだ C++ の処理系のほうが歴史の積み重ねが多くて強いというのもある。

ざっくりは無意味だが細かい数値も要因が絡み合いすぎてどうせ意味わからんから無意味。
2024/10/04(金) 22:21:16.42ID:JAupTFkx
>>136が言ってるのはそういう「ざっくり」ではないと思われ
2024/10/04(金) 22:40:51.60ID:jgzzZHCa
ざっくりどころか明白にC++はCより遅いしRustはさらにもっと遅い
140デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:59:19.40ID:VBc4dd6u
C以外を全て「遅い部類」というならもうそれ部類って言葉が合わないんじゃないかな
2024/10/04(金) 23:37:34.19ID:cfR7b6v5
ほとんどのケースでRustはCと同程度の速さを出せる
安全性はもとよりモダンな抽象による開発効率と保守性の高さによりRustへの移行が進められている
142デフォルトの名無しさん
垢版 |
2024/10/05(土) 10:53:01.80ID:RULYnmJH
BoxやVecって、データを一旦スタックに書いてからヒープに渡されるよね
Bnx::new(でかい構造体)
のようなことをやる際に、直接ヒープに構築したいんだけど、unsafeを使えばできる?
2024/10/05(土) 11:04:55.83ID:tM0+DMRb
>>142
box演算子を使う
2024/10/05(土) 13:18:05.42ID:YtzMlx/f
>BoxやVecって、データを一旦スタックに書いてからヒープに渡されるよね
うそーん?
そのくらいは最適化されるやろ?
2024/10/05(土) 14:23:20.89ID:ntqlGNr5
>>141
そんなこと言う人は多いけど、その人たちはアルゴリズムを理解してない。
2024/10/05(土) 15:12:54.52ID:u1hwkRNd
Rustは境界検査ある分Cよりは遅くなるよね
境界検査オフにしたらベンチマークのスコア上がったみたいな記事がZennにあった気がする
2024/10/05(土) 15:18:00.36ID:Whmox1cd
そんなことしたらコーダーが勝手に最適化()するから駄目だろ。
2024/10/05(土) 16:20:58.85ID:SPb9kptA
>>146
Rustに境界検査オフにするオプションはないからそれは別の言動の話でしょう
Rustでは常に行われますが論理的に安全だと判定できる場合に最適化されて消えます

一方で境界検査がない言語では必要な境界検査をプログラマーが手動でする必要があります
それを忘れると深刻なセキュリティホールになる可能性があります
レアな特殊な状況が揃って初めて発生することもあるためサニタイザーでは見つけることが困難です
149デフォルトの名無しさん
垢版 |
2024/10/05(土) 17:01:50.15ID:RULYnmJH
>>143
詳しく
"box operator" のような単語でググってみたけど、それらしいものを見つけられてない
2024/10/05(土) 17:08:36.51ID:7dJZ4c51
>>148
get_uncheckedとかあるやろ
2024/10/05(土) 17:33:09.63ID:MY6FIQ9N
>>149
少なくとも stable には無い。
現時点では box が予約語扱いになってるが、将来に使用するための予約であって現時点では使ってないと名言されてる。
https://doc.rust-lang.org/reference/keywords.html

以前に検討したけど取り下げた記録はある。
https://rust-lang.github.io/rfcs/0809-box-and-in-for-stdlib.html
今はどうなってるんやろね?
2024/10/05(土) 17:40:46.65ID:MY6FIQ9N
× 名言
〇 明言
2024/10/05(土) 17:53:26.30ID:YGXhd2d0
>>146
分かりやすさから境界検査だけの遅さは分かっている
人が多いが、実は境界検査は些細な違いに過ぎない。
それ以上の事は言わない。各自で考えろ。
分かる人だけが分かっていればいい。
2024/10/05(土) 22:25:00.84ID:nBMiTSwQ
https://github.com/rust-lang/rust/pull/97293
https://github.com/rust-lang/rust/pull/108471
現状なんかな?
2024/10/05(土) 23:58:02.93ID:aBfTO+dT
たしかbox記法をやめて
#[rustc_box]へ変えたはず
2024/10/06(日) 02:23:22.08ID:Fc/J32B0
>>142
今は
let mut b = Box::<BigStruct>::new_uninit();
とする
2024/10/06(日) 02:59:36.25ID:Uy2TM6oP
ボツになった box キーワードを使ったやりかただと C++ でいう new みたいなのを想定していたんだと思う。
同じコンストラクタでスタック上にもヒープにもオブジェクトを構築できるようにってことね。
今の Rust の stable 内でやろうとすると未初期化のヒープ領域を確保してからそれに書き込むという段階を踏む必要があって同じ生成関数をキーワードひとつで切り替えてつかうということは出来ない。
そういうちょっとした不恰好さを呑む必要はある。
2024/10/06(日) 10:41:43.35ID:pGBP5yto
>>156
コンパイラや標準ライブラリの開発者は#[rustc_box] + Box::new()を使うのに一般開発者はBox::new_uninit() + unsafeブロックで手動初期化しなきゃいけないというのはなんとも微妙だね
2024/10/06(日) 11:07:22.09ID:jCq2z3ec
>>153
わかってないやつが言っても説得力ないよ

境界検査を外す話はこれかな
https://proc-cpuinfo.fixstars.com/2019/09/rust-wins-cpp/
2024/10/06(日) 13:00:12.28ID:RTiROZJD
>>159
実行毎に数十msはブレる処理でC++より数ms速くなりましたとか微妙すぎるな
2024/10/06(日) 14:13:57.31ID:WBd7Gzjc
>>160
同感、20~40msはぶれる

>>159
Rustシングルスレッド版のcommit:23807a67df266ac8c6ba065801616a4012555344に戻して
単一実装毎に10回計測した最速値

SequentialNative, PreProcess, 3.328, Solve, 767.845, PostProcess, 0.521 <- C++/g++
SequentialNative, PreProcess, 3.679, Solve, 785.951, PostProcess, 0.502 <- C++/clang++
Rust, PreProcess, 3.407, Solve, 796.38, PostProcess, 0.599 <- Rust
2024/10/06(日) 14:32:01.49ID:SXFzPwbD
一番下の方にリンクしてあるQiitaの追試記事も読むといい
2024/10/06(日) 14:47:13.76ID:x2YI0jj4
>>159
「検査例外は些細な違いに過ぎない」
と言ったのは、Rustには、もっと非効率な部分があるからだぞ。
逆に捉えた人がいるかもしれないが。
2024/10/06(日) 14:48:25.28ID:x2YI0jj4
>>163
誤:検査例外
正:境界検査
2024/10/06(日) 22:43:06.06ID:yDkn3TVj
Rustコンパイラが通常の機能として論理的に安全と解析できた時は境界検査を省略しているのに加えて
プログラマーがさらにヒントを与えることで境界検査を安全に無くしたり減少させたりする方法もありかなりをカバーできる
それでもカバーできない範囲は人間が安全性を保証する形でunsafeを用いて関数やモジュール内に閉じ込める最後の手段がある
プログラムのそれ以外の部分は依然としてRustが安全性を保証するためRustを用いたほうが断然に有利
2024/10/06(日) 22:58:46.94ID:xpAyDRS+
相変わらず非論理的やな
2024/10/07(月) 01:41:44.93ID:q99irmJP
基本をどっち側に倒してるかって話だわな。
チェックするのを基本にする (けど必要ならチェックを除くことも出来る) のか
チェックしないのを基本にする (けど必要ならチェックすることも出来る) のかって話で、
やりやきゃどっちも出来るんだから場合によって自分で判断しろよ。
2024/10/07(月) 02:43:52.62ID:X74uBgxx
これはさすがに釣りだよね
2024/10/07(月) 04:55:29.89ID:JLiQrglj
もしかしてRustってコンパイルめちゃくちゃ遅い?
2024/10/07(月) 10:41:01.74ID:AsZpJSRX
一回コンパイル済みなら、2回目はそれなりの時間

初回のsdk-ec2は遅すぎて何度中断しようかと思ったわ
171デフォルトの名無しさん
垢版 |
2024/10/07(月) 15:40:05.30ID:m+p7ApSZ
cargo update するとすぐ破綻する
2024/10/07(月) 16:27:42.48ID:meOfPwUY
sccacheで二度目以降はもう少し改善した
コンパイル速度はC++同様遅い部類だと思う
2024/10/07(月) 17:01:46.54ID:89HfDe1C
>>163
それの具体例を示せてない時点でね…
2024/10/07(月) 23:19:03.68ID:TZwLk8HD
安全に境界検査不要をassert!でRustコンパイラに伝える方法が意外に効くね
2024/10/07(月) 23:26:15.84ID:dfTx2VFf
>>173
馬鹿には示す必要ない。
2024/10/08(火) 08:44:17.05ID:eFef5p6V
>>174
詳しく
2024/10/08(火) 09:34:58.32ID:+McDiVVz
自分で定義してないtrait(T)を自分で定義してないstruct(S)に定義したい
impl T for S {
}
2024/10/08(火) 10:04:39.98ID:A/U5l8w3
>>177
できないのでどちらかをwrapして下さい
2024/10/08(火) 10:36:24.86ID:8N0aYuJN
>>177
orphan rule と呼ばれる制限。
どうしてこの制限が必要なのか、対処法のイディオムなどはググればいっぱい説明されてるよ。
180デフォルトの名無しさん
垢版 |
2024/10/08(火) 21:24:47.85ID:pQ+vP70p
>>175
知らないだけw
2024/10/08(火) 21:26:47.09ID:CJF5aBIv
>>180
やっぱり本当に馬鹿なんだな。
それに説明しても理解できない。
2024/10/08(火) 23:19:20.44ID:0gkuNx2u
>>176
https://nnethercote.github.io/perf-book/bounds-checks.html
2024/10/09(水) 08:10:07.07ID:6t9Q00Al
>>182
thx
184デフォルトの名無しさん
垢版 |
2024/10/09(水) 14:24:59.18ID:SE80KZZv
慈円乙
2024/10/09(水) 18:17:45.48ID:9TrJQGOx
>>175
あーあ,反ワクが自分で調べてくださいっていうのと同じか
自分で説明するとボロが出るから
2024/10/09(水) 21:57:24.09ID:O1I2MdzM
実験と質問の境界がなくなりかけている
質問なら自己解決もありうる
実験の場合、自分で考えた実験結果というのはただのデータ改竄
2024/10/09(水) 22:10:40.53ID:cHg2rcow
>>185
もしかして7回も打ってるの?
2024/10/09(水) 23:54:32.05ID:uqNnLm2k
米ホワイトハウス「ソフトウェアはメモリ安全でなければならない」との声明を発表:「C」「C++」よりも「Rust」などの言語を推奨
https://atmarkit.itmedia.co.jp/ait/articles/2403/18/news045.html
2024/10/10(木) 02:18:50.02ID:zQjmpUKF
>>188
Rustには権力による圧力が入ってきている。
市場経済、自由選択への権力介入だ。
2024/10/10(木) 02:21:09.33ID:zQjmpUKF
コンピュータの分野は権力介入が少なかったので、面白かったのに、
政治家やマスコミが入り込んできてめちゃくちゃになってきている。
2024/10/10(木) 07:08:10.03ID:UwcyK+WZ
与党が介入するなら野党に投票すればいい
192デフォルトの名無しさん
垢版 |
2024/10/10(木) 09:15:33.28ID:bwO1aVtU
コンピュータープログラムのアルゴリズムごときでノーベル賞とか
最近はホント可笑しい
2024/10/10(木) 09:54:14.90ID:UItC3qRM
ソフトウェア特許がろくでもないのでノーベル賞みたいな形のほうがマシだと思う。
良いとは言えんが。
2024/10/10(木) 21:54:50.97ID:7tvKCAT1
>>189
米政府は危険なC/C++を早く捨てて安全なプログラミング言語を使うことを推奨するとして、Rustを含めた複数の安全な言語を挙げているので大丈夫だよ。
ただしRust以外はガベージコレクション言語なので、C/C++と同等の速さやメモリ使用量を望むならばRustしか安全な言語の選択肢がない。
2024/10/11(金) 00:11:00.19ID:anwjy38M
AIと人間が競争するみたいな文脈では危険といえば相手に負けることしか思いつかなくなる
それ以外の安全性がどうでもよくなる
2024/10/11(金) 01:44:19.33ID:TjHLE0iw
>>194
結局、C/C++だけが潰される。
2024/10/11(金) 09:35:58.81ID:4zAbwXut
rustはガベコレはないけど、オブジェクトのライフタイムをコンパイル時にチェックして c++でいう deleteを自動でセットしてくれるのですか?
コンパイラはそんな複雑なことができて、結果も信頼できるのでしょうか
それとも、開発者が自由に書けないくらい、書き方に制約を設けてコンパイラにとって既知のパターンとなるようにしているのですかね
2024/10/11(金) 10:48:59.08ID:KVaSEz2e
>>197
まずはChatGPTにでも聞いて概要を理解しろ
2024/10/11(金) 13:50:24.29ID:fZFoy1Go
>>197
これはプログラム経験が浅いマネージャに聞かれそうな質問
まずC++のデストラクタを理解してるかどうかがポイントだな

「c++でいうdeleteを自動でセット」というフレーズから不穏なオーラを感じる
2024/10/11(金) 13:54:54.08ID:W/ZPwHBO
>>197
別に複雑なことはしていない
所有権の移動に厳密なだけ
2024/10/11(金) 14:05:51.40ID:anwjy38M
喩え話や類推で理解できてしまったら驚き屋の仕事が奪われるだろ
2024/10/11(金) 14:16:31.54ID:A4LeYzGx
>>197
言語機能は全部が絡み合って機能するので単純には言えない。
入門の文書が用意されてるんだから読みなさいよ。
きちんと使いこなそうと思わずに流し読みするくらいなら一日で読めるから。
2024/10/11(金) 14:26:39.61ID:onrBNldo
アメリカは、自由や市場経済を大事にする、と謳っておきながら、C/C++言語除外を官製強制するような国。どこが自由や市場経済なんだか。
2024/10/11(金) 16:56:32.95ID:Go9IkusF
せいぜい政府調達から外すとかでしょ
気にしすぎ
2024/10/11(金) 17:49:21.57ID:anwjy38M
足し算の交換法則なんかは永久に守られるのになぜC++の文法を守らないのか
これ需給とか政府とかチャチなもんじゃなくてもっと怖ろしい強制力だろ
2024/10/11(金) 18:19:53.55ID:A4LeYzGx
>>203
政府が顧客の一人として言ってるだけで、市場に対する強制じゃないよ。
影響力が強くはあるけども。
2024/10/11(金) 21:39:44.20ID:52UfM0Gk
民間は先行して既に自らRustへシフトが進んでいる状況を踏まえて
政府が報告書をまとめたものだから
2024/10/11(金) 23:15:15.82ID:anwjy38M
ルールの例外を理解すれば自由度が上がる
たとえば猫と牛の違いが分かった奴は牛肉を食べる
分からん奴は菜食主義を強制されていると思い込むかも
209デフォルトの名無しさん
垢版 |
2024/10/12(土) 00:34:02.68ID:qdhjRNO+
交換法則は人間の関与の余地がない
C++の文法は所詮は禿が定義したもの
Rustも含めて換えて良い
2024/10/12(土) 01:14:45.15ID:gm00SVZq
「Security状問題である」と言われると人間には逆らえなくなる法則を利用し、
「衰退させたいライバル商品」を市場から消す商法がアメリカでは多用されている。
2024/10/12(土) 01:21:49.75ID:gm00SVZq
>>210
Security状 --> Security上
2024/10/12(土) 01:28:42.28ID:gm00SVZq
強力なC++開発環境が生まれる兆しを感じ、それを抑えるためにRustを推奨し出したのかもしれない。
213デフォルトの名無しさん
垢版 |
2024/10/12(土) 01:29:35.88ID:qdhjRNO+
Rustもそのうち排除されるよ
2024/10/12(土) 01:29:58.11ID:gm00SVZq
SNSでは、Wasmが、Rustと組み合わせる場合だけが強調される。
それは、そうでないと都合の悪い何かが出現したからではないか。
2024/10/12(土) 01:32:52.29ID:gm00SVZq
しかも、RustはJSやPythonやC#などを置き換える可能性も有るにもかかわらず、
C++の置き換えだけが強調されるのは、C++を絶対的に排除しなければならない
何かが彼らの中で起きているのではないか。WasmとC++の組み合わせが特に
排除されようとしている。
2024/10/12(土) 05:10:31.55ID:RKNycNvy
思い込み激しすぎ
2024/10/12(土) 06:57:43.97ID:IpPc9zS0
>>215
>RustはJSやPythonやC#などを置き換える可能性も有る

c++より学習難易度高いのに、置き換える可能性があるわけ無いだろ。
2024/10/12(土) 07:44:30.22ID:MfW7RByH
採用はRFPに記載されるようになってからだよね~
指定が無いからと言って、「Rustで書きます。生産性良く無いのでC++の1.n倍の費用がかかります!」
の提案書が通るとは思えない。
219デフォルトの名無しさん
垢版 |
2024/10/12(土) 07:50:17.08ID:qdhjRNO+
RustがC++の置き換えになるとかほざいてるのは
RustもC++も使えないアホだけだろ
2024/10/12(土) 07:51:04.20ID:DET419zt
blog.rust-lang.org/2024/09/05/impl-trait-capture-rules.html
> We surveyed crates on crates.io and found that the vast majority of cases
> involving return-position impl trait and generics had bounds that were too
> strong and which could lead to unnecessary errors (though often they were
> used in simple ways that didn't trigger an error).

わはは、結局大部分はちゃんと理解してないし使いこなせてもいないってこった
221デフォルトの名無しさん
垢版 |
2024/10/12(土) 07:51:41.07ID:qdhjRNO+
>>c++より学習難易度高い

これはC++の闇を知らんから言えるんだ
2024/10/12(土) 07:51:53.90ID:DET419zt
あ、やっと書けた
なんか最近5chはよく分からん規制入れとるね
2024/10/12(土) 08:03:30.55ID:MfW7RByH
せやな
2024/10/12(土) 08:20:08.48ID:hSwwQxA2
>>217
学習難易度が高いのは無駄に仕様が大きすぎるC++
Rustはモダンな抽象化も綺麗にまとまっていて仕様も小さい
2024/10/12(土) 09:32:07.50ID:DTlX8R5X
闇が嫌なら使わなければいい
使わない自由にこだわる理由がこれ

だが闇を認識できなければ、使うか使わないか検討する自由はほぼない
ないものをあると誤認しているだけ
元々自由がない状態なら、政府が介入しても、ないものを奪い取る心配はないってこと
2024/10/12(土) 10:14:12.54ID:o9Hly54Z
>>224
公式も認めている激烈絶壁の学習障壁を、あえて言わずにその主張をするのは詐欺ですな。

初心者向けのまともな学習書は出たのかしらん?
2024/10/12(土) 11:04:13.10ID:DTlX8R5X
学習時間が固定相場ならまともにはならない
昔の人がいうように修行は10年かかるとかいうレベルで時間が変動することを認めないと
2024/10/12(土) 11:56:03.05ID:pKFLyiMR
Rust 2024 editionっていつ出るの?
2024/10/12(土) 12:06:55.87ID:PWeoTkee
C++ のあかんところはわかってても間違う (間違いをコンパイラやランタイムサポートが検出しない) ところ。
わかってないときに自分がわかってないということに気づけないところ。

このつらさと難易度を天秤にかけたら Rust のほうがマシ。
2024/10/12(土) 12:33:44.48ID:qdhjRNO+
>>225
ごめんなにいってるかわかんない
Rustの闇の話?
231デフォルトの名無しさん
垢版 |
2024/10/12(土) 13:30:21.66ID:2nOFyk8I
中学生が好みそうなワード
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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