公式
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 part20
https://mevius.2ch.net/test/read.cgi/tech/1677771928/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
Rust part21
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/08/15(火) 22:24:39.45ID:xzxy4cgp240デフォルトの名無しさん
2023/09/16(土) 09:55:59.18ID:ZJLR+eYH >>238
無理に一つにしようとすると条件分岐増えてごちゃごちゃしてわかりにくくなる、というのはありそう。知らんけど。
無理に一つにしようとすると条件分岐増えてごちゃごちゃしてわかりにくくなる、というのはありそう。知らんけど。
241デフォルトの名無しさん
2023/09/16(土) 10:40:22.96ID:FZJflFW6 >>239
もう現金化してアンインスコしてる
もう現金化してアンインスコしてる
242デフォルトの名無しさん
2023/09/16(土) 11:27:20.46ID:8u+hT5wA RustRoverを試してみる
https://zenn.dev/helloyuki/scraps/a0241df49b2556
https://zenn.dev/helloyuki/scraps/a0241df49b2556
243デフォルトの名無しさん
2023/09/16(土) 11:55:36.71ID:jG7brSLe ウェブ系の奴らがやけにJetBrains推してくるけどAndroid Studio使ったら如何にゴミIDEなのかよくわかった
しかも個人使用でも買い切り数百ドルもしたのに今はサブスク月額1300円とかぼったくりもいいところ
VSCodeがあって本当によかったVSもCEならデバッガに制限あるけど無料だしこれほどMSに感謝したことはないね
しかも個人使用でも買い切り数百ドルもしたのに今はサブスク月額1300円とかぼったくりもいいところ
VSCodeがあって本当によかったVSもCEならデバッガに制限あるけど無料だしこれほどMSに感謝したことはないね
244デフォルトの名無しさん
2023/09/16(土) 12:20:19.81ID:E7jGhtqP mut よりもShared XOR Mutableの方が難しいだろ。
245デフォルトの名無しさん
2023/09/16(土) 12:41:23.41ID:8u+hT5wA >>243
Android Studio は IntelliJ IDEA がベースになっていて無料の community 版があるが?
ていうか Android Studio の方は最初から無料じゃなかったか? 金取るやつあるの?
Android Studio は IntelliJ IDEA がベースになっていて無料の community 版があるが?
ていうか Android Studio の方は最初から無料じゃなかったか? 金取るやつあるの?
246デフォルトの名無しさん
2023/09/16(土) 12:57:41.63ID:RATZO/gi247デフォルトの名無しさん
2023/09/16(土) 13:00:07.59ID:XaZSJ/up >>244
lifetimeが難しいというのも大体がshared xor mutableの話だしな
lifetimeが難しいというのも大体がshared xor mutableの話だしな
248デフォルトの名無しさん
2023/09/16(土) 13:07:54.84ID:2emM+tnC >>246
それだとimmutableとなり変数値を書き換えできないから根本から違う
それだとimmutableとなり変数値を書き換えできないから根本から違う
249デフォルトの名無しさん
2023/09/16(土) 13:23:53.43ID:RATZO/gi 描き替え出来るから問題無い
250デフォルトの名無しさん
2023/09/16(土) 13:57:40.01ID:2emM+tnC251デフォルトの名無しさん
2023/09/16(土) 14:05:34.65ID:RATZO/gi うん
だから付ける必要無い所まで描く必要無いよね
だから付ける必要無い所まで描く必要無いよね
252デフォルトの名無しさん
2023/09/16(土) 14:06:34.42ID:XaZSJ/up refとmoveの区別がある言語とそうでない言語の構文比較しても仕方なかろう
253デフォルトの名無しさん
2023/09/16(土) 14:10:34.38ID:nUKpqsu7254デフォルトの名無しさん
2023/09/16(土) 14:24:43.82ID:RATZO/gi >>253
だから付ける必要無い所まで描く必要無いよね
だから付ける必要無い所まで描く必要無いよね
255デフォルトの名無しさん
2023/09/16(土) 14:32:47.40ID:F5t5l7vC >>239
絶対に試すべきだね。
絶対に試すべきだね。
256デフォルトの名無しさん
2023/09/16(土) 14:37:19.47ID:nUKpqsu7 >>254
mutabilityを必要とする分に応じてmutを付ける必覧vがあります
そのため以下4種類がコードに応じて使い分けされています
let mut x: &mut Type = ...
let x: &mut Type = ...
let mut x: &Type = ...
let x: &Type = ...
前者のmutは変数xの値を更新するならば不可欠です
後者のmutはType型の可変参照で参照先の値を更新するならば不可欠です
それぞれの値を更新するためにはそれぞれのmutを欠くことはできません
mutabilityを必要とする分に応じてmutを付ける必覧vがあります
そのため以下4種類がコードに応じて使い分けされています
let mut x: &mut Type = ...
let x: &mut Type = ...
let mut x: &Type = ...
let x: &Type = ...
前者のmutは変数xの値を更新するならば不可欠です
後者のmutはType型の可変参照で参照先の値を更新するならば不可欠です
それぞれの値を更新するためにはそれぞれのmutを欠くことはできません
257デフォルトの名無しさん
2023/09/16(土) 14:43:13.66ID:BFCePFCu ほんまジャップはアホやな
しょーもない重箱の隅をつつきあって知識自慢のマウント合戦
そして出来上がった成果物は誰も使わないクソゴミ
ジャップがオナニーしてる間にソフトウェアは中国に30年遅れているという現実
お前ら見てるとマジで日本人がソフトウェアで土人の未開レベルな理由がよーくわかる
しょーもない重箱の隅をつつきあって知識自慢のマウント合戦
そして出来上がった成果物は誰も使わないクソゴミ
ジャップがオナニーしてる間にソフトウェアは中国に30年遅れているという現実
お前ら見てるとマジで日本人がソフトウェアで土人の未開レベルな理由がよーくわかる
258デフォルトの名無しさん
2023/09/16(土) 17:08:24.37ID:DWW8ClN4 まともなプログラミング言語ならばそれら四つの区別がある
例えばC/C++ではこのように対応する
// 変数値は不変で参照先も不変
Rust: let p1: &i32 = ...
C/C++: const int* const p1 = ...
// 変数値は可変で参照先は不変
Rust: let mut p2: &i32 = ...
C/C++: const int* p2 = ...
// 変数値は不変で参照先は可変
Rust: let p3: &mut i32 = ...
C/C++: int* const p3 = ...
// 変数値は可変で参照先も可変
Rust: let mut p4: &mut i32 =...
C/C++: int* p4 = ...
つまり可変な時にmutを付けるか
不変な時にconstを付けるかの些細な違いにすぎない
例えばC/C++ではこのように対応する
// 変数値は不変で参照先も不変
Rust: let p1: &i32 = ...
C/C++: const int* const p1 = ...
// 変数値は可変で参照先は不変
Rust: let mut p2: &i32 = ...
C/C++: const int* p2 = ...
// 変数値は不変で参照先は可変
Rust: let p3: &mut i32 = ...
C/C++: int* const p3 = ...
// 変数値は可変で参照先も可変
Rust: let mut p4: &mut i32 =...
C/C++: int* p4 = ...
つまり可変な時にmutを付けるか
不変な時にconstを付けるかの些細な違いにすぎない
259デフォルトの名無しさん
2023/09/16(土) 17:14:29.95ID:AP//fjNl 参照の可変性という概念を持つ言語がそもそも少ない
260デフォルトの名無しさん
2023/09/16(土) 17:15:13.87ID:AP//fjNl 概念が異なるのに構文の話だけをしても仕方ない
261デフォルトの名無しさん
2023/09/16(土) 17:34:04.75ID:nlb2ovML 参照先の値がread onlyかwritableかはプログラミングで極めて重要だよね
間違えて意図せず書き換えてしまっていたバグなどの減少にも繋がるから必要な機能じゃないかな
間違えて意図せず書き換えてしまっていたバグなどの減少にも繋がるから必要な機能じゃないかな
262デフォルトの名無しさん
2023/09/16(土) 17:37:07.29ID:sqsrY/cP >>258
2番目と4番目はRustだとsmellyなのでリファクタリング検討候補
2番目と4番目はRustだとsmellyなのでリファクタリング検討候補
263デフォルトの名無しさん
2023/09/16(土) 19:41:48.63ID:OLEDwioO >>204が言ってるのはmutの区別が不要じゃなくて
良く使うmutable側でタイプさせんなってことでしょ
良く使うmutable側でタイプさせんなってことでしょ
264デフォルトの名無しさん
2023/09/16(土) 20:04:56.12ID:DWW8ClN4 ほとんどのプログラムではmutと記述すべきところが少ない
もしmutが多いならレアケースを除いてコードを改善すべき可能性が高い
もしmutが多いならレアケースを除いてコードを改善すべき可能性が高い
265デフォルトの名無しさん
2023/09/16(土) 20:10:22.45ID:TlXhcaWs266デフォルトの名無しさん
2023/09/16(土) 20:12:22.58ID:b0KnMHZf267デフォルトの名無しさん
2023/09/16(土) 20:31:44.89ID:/CtnFWfv268デフォルトの名無しさん
2023/09/16(土) 20:37:59.24ID:EG7NJZsJ 多い少ないの話したいなら定量的な根拠持ってきてくれ
根拠ないなら断言するのはやめて
根拠ないなら断言するのはやめて
269デフォルトの名無しさん
2023/09/16(土) 20:45:23.05ID:DWW8ClN4270デフォルトの名無しさん
2023/09/16(土) 20:50:47.30ID:bcC3Efve どちらがより目立つべきかを考えたら
mutable なほうが目立つべきだし
目立って欲しい方に指定をつける文法が自然だ。
良く使うほうが短く書けるべきという視点だって
もちろん間違いではないし、評価軸は無数にある。
定量化したところでそれぞれの重みをどう捉えるかは
感性の問題だろ。
mutable なほうが目立つべきだし
目立って欲しい方に指定をつける文法が自然だ。
良く使うほうが短く書けるべきという視点だって
もちろん間違いではないし、評価軸は無数にある。
定量化したところでそれぞれの重みをどう捉えるかは
感性の問題だろ。
271デフォルトの名無しさん
2023/09/17(日) 12:16:37.26ID:ju6VviWZ272デフォルトの名無しさん
2023/09/17(日) 13:48:53.24ID:4koi4/xu273デフォルトの名無しさん
2023/09/17(日) 17:36:59.55ID:FEktRC8x 毎日ちょっとずつ課題でてそれを解いていくようなRust勉強サイトってないの?
ナンプレ毎日1問クリアしていく感じなやつ
ナンプレ毎日1問クリアしていく感じなやつ
274デフォルトの名無しさん
2023/09/18(月) 01:48:58.76ID:u21D7vuy >>273
exercism.org どうかな
exercism.org どうかな
275デフォルトの名無しさん
2023/09/18(月) 10:51:29.83ID:+ud3D/1q276デフォルトの名無しさん
2023/09/18(月) 12:04:31.40ID:X+wkGtcX >>267
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。
mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。
エイリアス解析がやりやすくなって本質的に同じものなのか
複製が必須なのか自動で判断して最適化される。
プログラマが判断するよりたぶん賢い。
mut を付けるかどうかは性能じゃなくてロジック的な妥当さで決めるもんだよ。
277デフォルトの名無しさん
2023/09/18(月) 12:15:08.64ID:eKGbn4o/ techempowerベンチ見るとrustと比較してgoがしょぼいけど
こんなものなの?
こんなものなの?
278デフォルトの名無しさん
2023/09/18(月) 12:28:49.50ID:X+wkGtcX つよつよプログラマがチューニングすれば際限なく性能を挙げられるという意味での性能の良さと
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。
仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。
非プログラマがテキトーに書いても及第点程度の性能が出るというのは言語として両立しにくい。
仮にしょぼいのが本当だとしてもトレードオフになる何かがあったりするから
総合的な使用感は実際に使ってみないとよくわからん。
279デフォルトの名無しさん
2023/09/18(月) 12:39:00.83ID:b4Z9xD4H280デフォルトの名無しさん
2023/09/18(月) 12:44:14.37ID:AWdb6cD0 なんでもイミュータブルじゃなくて必要な時にミュータブルにしつつ安全性をコンパイラが保証してくれるのがいいんだよなぁ。
281デフォルトの名無しさん
2023/09/18(月) 13:13:11.65ID:eKGbn4o/ そもそも、goはc#にすら負けてね?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと
ななやむぐらいならわかりやすい1番にしとけばいいのか?
1番高速じゃなくても2番目あたりでいいかなと思ってるんだけど
どれがいいのかなと
ななやむぐらいならわかりやすい1番にしとけばいいのか?
282デフォルトの名無しさん
2023/09/18(月) 13:16:25.44ID:eKGbn4o/ goのgc調べてみましたが参照カウントとかじゃないのか
283デフォルトの名無しさん
2023/09/18(月) 13:54:07.10ID:1tuWbz8L Rustは見た目が汚いのが困る
もういっそCの方がきれいで安全で保守性が高いまである
もういっそCの方がきれいで安全で保守性が高いまである
284デフォルトの名無しさん
2023/09/18(月) 14:01:16.96ID:6k3cBrAf Cは大きなプロジェクトが汚すぎる
モジュールで名前空間分けられないから
モジュールで名前空間分けられないから
285デフォルトの名無しさん
2023/09/18(月) 14:04:02.95ID:DByXMqbY C言語は"安全装置のない銃"に徹しているからな
シンプルなだけに危険いっぱいだ
シンプルなだけに危険いっぱいだ
286デフォルトの名無しさん
2023/09/18(月) 14:43:26.49ID:EhgpbTsZ C#はunsafeやSpanがあるので頑張れば結構速い
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分
ネイティブコンパイルもできるようになってきたからとにかく速度を求めるようなアプリじゃなければ十分
287デフォルトの名無しさん
2023/09/18(月) 15:27:10.56ID:orcKBY2S Rustもcrateのダウンロード数に応じて
crate開発者が課金される時代か
メシウマじゃなかった胸熱
crate開発者が課金される時代か
メシウマじゃなかった胸熱
288デフォルトの名無しさん
2023/09/18(月) 15:57:52.35ID:qN+5vY8o 何の話かと思えばunityか
289デフォルトの名無しさん
2023/09/18(月) 16:04:36.29ID:2MGtTYvZ とりあえずミュータブルの話をするならshared xor mutable に触れなきゃ意味ないし、それなら元ネタのトランザクション分離レベルぐらいは勉強しとかんといかん。
290デフォルトの名無しさん
2023/09/18(月) 16:05:47.88ID:7BUJ27i/291デフォルトの名無しさん
2023/09/18(月) 17:52:28.36ID:yZdHYJJu292デフォルトの名無しさん
2023/09/18(月) 22:02:21.17ID:1tuWbz8L >>291
前置宣言だから綺麗に書けるまである
前置宣言だから綺麗に書けるまである
293デフォルトの名無しさん
2023/09/18(月) 22:29:41.23ID:b4Z9xD4H >>283
Rustは普通というか見た目キレイ側
Rustは普通というか見た目キレイ側
294デフォルトの名無しさん
2023/09/18(月) 23:41:51.16ID:X+wkGtcX >>290
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。
普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。
ロジックが正しくてもバイナリレベルでは脆弱性になることがある。
分かりやすい例では、言語の理屈では寿命を終えたはずのオブジェクトでも再利用される機会がなくて内容が残り続けるとかね。
そういうときにでもどうにかする知見が C/C++ では積み上がってる。
普通に書いて脆弱性が発生しにくいに越したことはないが、脆弱性が発生していることがわかったときに直せる確信があるというのはセキュリティが重要な場面で C/C++ を使う理由になる。
C/C++ が「自分の足を撃つ」ことになるなんてのは百も二百も承知の上で、「自分の足を撃つことも出来る」ことに価値を見いだしてるんだよ。
もともと自分の足を撃つというのは戦争に行かなくて済むようにわざと撃つことがあるというのを下敷きにした言い回しで、危険であると同時にそれが必要なこともあるというニュアンスを含んでいる。
295デフォルトの名無しさん
2023/09/18(月) 23:47:04.73ID:h2SSCK+Z296デフォルトの名無しさん
2023/09/19(火) 07:20:03.69ID:H6NF4sQp >>294
目的のために敢えてUB引き起こすってこと?
目的のために敢えてUB引き起こすってこと?
297デフォルトの名無しさん
2023/09/19(火) 11:44:23.57ID:B2l8DHRh >>294
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。
所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。
>そういうときにでもどうにかする知見が C/C++ では積み上がってる。
所謂、バッドノウハウね。
そりゃさんざん今までやりまくって、なんなら現在進行形だったりするんだからノウハウも積み上がるさ。
298デフォルトの名無しさん
2023/09/19(火) 13:23:13.06ID:Gn3exU3j データベースのデータファイルの中の構造は、
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。
C言語の「全部生メモリ」状態で、ポインタの
変わりにファイルポジションになっていて
普通に相互リンクトリンクやファイルポジション
をデータの位置を表現するのに使われていたりする。
だから、実行中のプログラムの RAM のメモリー安全
は確保されたとしても、ファイルの中は安全には
ならない。
299デフォルトの名無しさん
2023/09/19(火) 13:27:32.55ID:Gn3exU3j >>298
[補足]
・ポインターの代わりにファイルポジションが使用され、
古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
のように使用されており、非常に複雑な
配慮が必要なプログラミングになっている。
もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。
[補足]
・ポインターの代わりにファイルポジションが使用され、
古来の plain C と同様のプロググラミングが行なわれている。
・LockFile や fnctl で「部分ロック」が当たり前
のように使用されており、非常に複雑な
配慮が必要なプログラミングになっている。
もっといえば、DBMS を使うアプリケーションも、非常に
配慮が必要な場合も多く、どのようなテーブルやカラム構造
にするかは難しい。ID番号をリンクしたり、どうやって
データを参照しあうかなどが生ポインタと同様の難しさ
を持っていて、わずかでも間違えば、全データが論理破損
してしまう可能性を持っている。
300デフォルトの名無しさん
2023/09/19(火) 14:54:41.30ID:rHe1cSmV だれか巻き込まれてないか?
https://www.youtube.com/watch?v=SzpaDEhm-8Q
https://www.youtube.com/watch?v=SzpaDEhm-8Q
301デフォルトの名無しさん
2023/09/19(火) 15:58:16.52ID:H6NF4sQp 形式検証をrustに組み込むのってどれくらい現実的なんだろ
言語本体ではなくてproc macroで実現できるのかね
言語本体ではなくてproc macroで実現できるのかね
302デフォルトの名無しさん
2023/09/19(火) 16:39:15.02ID:p1GkLls0 >>299
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる
一般的なDBMSは中央集権でページアクセスを一元管理してるから生ポインタとは全く質が異なる
303デフォルトの名無しさん
2023/09/19(火) 17:37:47.80ID:/HqZkxNe >>302
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。
ただ、購入履歴などは「誰が購入したか」のIDを
購入項目テーブルとユーザーテーブルを結びつける
必要があるので、IDがポインタの役割になる。
わずかでも狂うと、別人が買った項目が結び付け
られてしまう。
値が1つ、または、行が一行でもずれるとほぼ全体が破綻する。
304デフォルトの名無しさん
2023/09/19(火) 18:14:50.54ID:mxtPnJ5/ DBでも何でもそうだけどshared xor mutableも必要
305デフォルトの名無しさん
2023/09/19(火) 18:23:26.80ID:/HqZkxNe 販売サイトなどのバグって怖くて、500円のものが
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。
バグれば5000円になったりする可能性ある。
そういうものは、プログラミングを気をつける
しかなくて、Rustの安全対策でも防げない。
306デフォルトの名無しさん
2023/09/19(火) 18:32:19.28ID:gvKDfDmE 「気を付ける」の内訳にはテストを書く習慣とかが含まれてる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。
気を付けないとしょうがないけど
気を付けるのに使える道具はそれなりに揃ってる。
307デフォルトの名無しさん
2023/09/19(火) 18:34:24.73ID:mxtPnJ5/ すべてのバグをなくせる言語がないのは当たり前
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実
データ競合により起こるそういう値のバグも現実にあるのだからRustでその手のバグをなくせるのも事実
308デフォルトの名無しさん
2023/09/19(火) 18:55:07.79ID:p1GkLls0 >>303
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)
そのレイヤーの話でもDBMSはトランザクション管理されてるから生ポインタとは状況が全く異なる
トランザクショナルメモリで管理された共有メモリと生ポインタの違い(実際はそれよりもまだ差がある)
309デフォルトの名無しさん
2023/09/19(火) 19:02:27.03ID:p1GkLls0 >>304
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御
同時実行制御には大きく楽観的制御と悲観的制御があるがshared xor mutableは後者
高い同時実行性能が求められる場合には楽観的同時実行制御を使うことが増えている
DBの話だけでなくロックフリーアルゴリズムも基本は楽観的制御
310デフォルトの名無しさん
2023/09/19(火) 19:54:07.45ID:/x1C5Bro >>309
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある
その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須
楽観的排他制御を用いることができる現実的ケースが狭い
衝突した時の処理やり直しコストも考慮する必要がある
その一般的な話とは別にポインタ(参照)の話の方は必ず衝突するためsingle writer xor multiple readersが必須
311デフォルトの名無しさん
2023/09/19(火) 21:00:27.72ID:BGD+Lo74 排他制御も凄く奥深い話ではあるが、そういう
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。
ものだけでなく、単なるプログラムミスで、
ID番号が1つずれたり、行がなんらかの事が
原因で1ぎょうずれたりしても、大変な問題
を巻き起こす。だからテストは必須。
312デフォルトの名無しさん
2023/09/19(火) 21:30:53.89ID:cyrWzrEE RDBMSで物理的な一行とか関係ない
テキストファイルに永続化してる素人だな
テキストファイルに永続化してる素人だな
313デフォルトの名無しさん
2023/09/19(火) 21:34:30.39ID:BGD+Lo74 >>312
DBMS自体をプログラムする場合には関係ある。
DBMS自体をプログラムする場合には関係ある。
314デフォルトの名無しさん
2023/09/19(火) 21:41:37.42ID:BGD+Lo74 それと、DBMSを使うに徹する場合でも、行に
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。
付ける ID 番号の管理がまた問題になる。
それも慎重に良く考える必要がある。
315デフォルトの名無しさん
2023/09/19(火) 21:50:10.01ID:LcWw/5IR それサロゲートキー義務で設計したらの話でしょ
316デフォルトの名無しさん
2023/09/19(火) 21:55:08.52ID:BGD+Lo74 >>315
色々な機能を実装する上で、色々有り得る。
色々な機能を実装する上で、色々有り得る。
317デフォルトの名無しさん
2023/09/19(火) 22:32:18.55ID:e2nf9Krk >それと、DBMSを使うに徹する場合でも、行に
>付ける ID 番号の管理がまた問題になる。
DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい
>付ける ID 番号の管理がまた問題になる。
DB板にもそういうのいるけどRDBにID必要と考えてるやつはもっかい勉強してこい
318デフォルトの名無しさん
2023/09/19(火) 22:44:03.77ID:5k6OZf8O >>310
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから
Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例
>楽観的排他制御を用いることができる現実的ケースが狭い
MVCCやCASが楽観的制御
分散非同期が前提の世界では楽観的制御がデフォルト
じゃないとスケールしないから
Rustがコンパイル時悲観的制御にしてるのは実行時の管理を無くしたいからであってポインタだとshared xor mutableが必須だからではない
トランザクショナルメモリがその一例
319デフォルトの名無しさん
2023/09/19(火) 22:57:59.75ID:cyrWzrEE DBMSをプログラムする場合には当然関係ある
でも1行ずれたら大変とかいう下手くそは任されないので関係ない
でも1行ずれたら大変とかいう下手くそは任されないので関係ない
320デフォルトの名無しさん
2023/09/19(火) 23:03:17.25ID:BGD+Lo74321デフォルトの名無しさん
2023/09/19(火) 23:06:22.84ID:r+harKS8 可変参照と不変参照に対してMVCCなんて使えないよ
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない
それはデータをコピーすることと同じになってしまう
ソフトウェアトランザクショナルメモリはどの環境でも使用可能なのに不利だからほぼ使われていない
さらにRustのshared xor mutableはそれらと独立した話であり共存できる話なのでshared xor mutable必須は問題ない
322デフォルトの名無しさん
2023/09/20(水) 01:44:31.66ID:16Zt41/R 会話のドッジボール
323デフォルトの名無しさん
2023/09/20(水) 09:31:56.94ID:R98wQa7Y >>303
マイニャンバーですね判ります
マイニャンバーですね判ります
324デフォルトの名無しさん
2023/09/20(水) 09:33:37.66ID:R98wQa7Y325デフォルトの名無しさん
2023/09/20(水) 09:37:31.04ID:R98wQa7Y >>313
いやいやωωω
いやいやωωω
326デフォルトの名無しさん
2023/09/20(水) 09:39:49.95ID:erhjcmms327デフォルトの名無しさん
2023/09/20(水) 09:41:04.74ID:erhjcmms328デフォルトの名無しさん
2023/09/20(水) 10:30:52.85ID:jgkdiTgC SQLiteはファイルロックに頼らざるを得ない仕組みなのでDBとしては特殊
329デフォルトの名無しさん
2023/09/20(水) 11:17:52.24ID:InZb605T 俺が高校生だった25年前頃、志木駅で500円分ぐらいのパンを買ったら4000円ぐらい請求されたぞ
330デフォルトの名無しさん
2023/09/20(水) 11:46:41.00ID:UfpBE+4Y まあ他のバグが減ればその分本質的な問題に注力出来るわな
そういうのはテストケースも綿密に行う必要がある
そういうのはテストケースも綿密に行う必要がある
331デフォルトの名無しさん
2023/09/20(水) 12:17:55.14ID:1SabZs8d >>317
むしろナチュラルキーにして詰んだりバグってる
むしろナチュラルキーにして詰んだりバグってる
332デフォルトの名無しさん
2023/09/20(水) 13:53:51.14ID:56axJTdd ナチュラルキーがプロジェクトの最後までユニーク保障されたことなんかマジで無いズラ
サロゲートキーは必須ズラ
サロゲートキーは必須ズラ
333デフォルトの名無しさん
2023/09/20(水) 14:13:13.56ID:I55f6i4N 今日入門した。ツアーやったらサンプルプログラムが80個ぐらいできた
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?
fn a(i: i32){ println!("{}",i) }
fn main(){ let x = 10; a(x); a(x) }
これは10が2回出力される
構造体引数だと2回よべずにエラーが出たけど
プリミティブ型?なら所有権がどうのとかなくてスタックにコピーされるだけであってる?
334333
2023/09/20(水) 14:30:53.92ID:I55f6i4N 別のチュートリアル始めて理解した
コピートレイトが実装されてるからなのか
コピートレイトが実装されてるからなのか
335デフォルトの名無しさん
2023/09/20(水) 15:53:12.11ID:R98wQa7Y #[derive(Copy)] 禁止
336デフォルトの名無しさん
2023/09/20(水) 18:16:56.45ID:52Xj2Gp1 >>328
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。
他のDBMSでもプロセス間の排他制御は
出来る方法が限られているのでファイルロックを
使っている可能性が高い。
他の方法だと、mkdir 法や、名前付きパイプが
あることがあるが、ファイルロックの方が便利。
一つのプロセスの中のスレッド間の排他制御は
色々な方法が有るが、プロセスを越えた排他制御
は意外と他に出来る方法が無いから。
337デフォルトの名無しさん
2023/09/20(水) 18:33:23.45ID:I55f6i4N338デフォルトの名無しさん
2023/09/20(水) 18:51:23.96ID:o02nl+od rustの名前の由来は?
339デフォルトの名無しさん
2023/09/20(水) 19:07:11.98ID:DDNbmZRy■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- お前らは“スカイマイルタワー”建設計画を知っているか?
- 万引きJC「すいません許してください!何でもしますから!」←どうする?
- 年増おまんこ見せろ!その勇姿!
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
