「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていうスレ。
前スレ: 結局C++とRustってどっちが良いの?
https://mevius.5ch.net/test/read.cgi/tech/1677286186/
探検
結局C++とRustってどっちが良いの? 2traits
■ このスレッドは過去ログ倉庫に格納されています
2023/04/02(日) 00:42:57.53ID:W9/nq+tL
337デフォルトの名無しさん
2023/04/21(金) 05:31:12.23ID:7fROJFuD 具体的に誰が頑張ったのか全然わからない
いまさら英雄化してももう遅い
いまさら英雄化してももう遅い
338デフォルトの名無しさん
2023/04/21(金) 09:34:15.68ID:Jt0l0JSP339デフォルトの名無しさん
2023/04/21(金) 10:24:01.60ID:YWjwap1N play.rust-lang.org で
use rstk::*; とか
use wx; とか
もちろん出来ない訳だが
use したときに一瞬一覧で選べるものが出て来るので
これの一覧をテキストファイルで欲しいんだが
どこで観れますか?
use rstk::*; とか
use wx; とか
もちろん出来ない訳だが
use したときに一瞬一覧で選べるものが出て来るので
これの一覧をテキストファイルで欲しいんだが
どこで観れますか?
340デフォルトの名無しさん
2023/04/21(金) 10:33:13.77ID:YWjwap1N >C++に勝ってると主張するために普段はunsafeのことを脇に置いてメリットばっかり語ってるのに
>性能で負けてるって言われて悔しいからって急にget_uncheckedの話持ち出す
ほんそれ
>性能で負けてるって言われて悔しいからって急にget_uncheckedの話持ち出す
ほんそれ
341デフォルトの名無しさん
2023/04/21(金) 11:32:23.34ID:obBiE3Vg342デフォルトの名無しさん
2023/04/21(金) 15:41:39.16ID:YWjwap1N343デフォルトの名無しさん
2023/04/21(金) 16:08:14.43ID:e/N20Lgf >>342
それは自分の環境でどうぞ
それは自分の環境でどうぞ
344デフォルトの名無しさん
2023/04/21(金) 21:37:21.45ID:AfLtEamq 控えめに言って Rust は超マゾ言語
345デフォルトの名無しさん
2023/04/21(金) 23:59:16.40ID:LZBHeARm C++もRustも基本的には変わらん
C++で常に安全に書ける人にとってライフタイムなんてすぐ理解できて困らん普通のことだった
Rustでいいと思ったのはイテレータメソッドチェーンのシンプルさとか
あらゆる部分でパターンマッチングできる点とか
C++で常に安全に書ける人にとってライフタイムなんてすぐ理解できて困らん普通のことだった
Rustでいいと思ったのはイテレータメソッドチェーンのシンプルさとか
あらゆる部分でパターンマッチングできる点とか
346デフォルトの名無しさん
2023/04/22(土) 00:04:17.51ID:L3G+XloM GC言語は良いと思うし使いけど可視化する気にならない
GC言語が多過ぎるから
Python並みの人気でも過半数に支持されるとは思えない
GC言語が多過ぎるから
Python並みの人気でも過半数に支持されるとは思えない
347デフォルトの名無しさん
2023/04/22(土) 01:08:10.55ID:6MRD/fZf ライフタイム付き再帰構造体を再帰関数で回してlifetimeのvarianceで苦しむまでがボローチェッカチュートリアルです
348デフォルトの名無しさん
2023/04/22(土) 05:11:35.36ID:ve/ll5uR Rustの弱点突きまくり
349デフォルトの名無しさん
2023/04/22(土) 07:15:46.36ID:iD47eBZH 言語(Rust含む)がせっかく親切にしてくれてるのに、その虚を突く
…っていうか、虚を天然で踏み抜いちゃうのが、シロウトなんだよなあ 俺含む(自戒
…っていうか、虚を天然で踏み抜いちゃうのが、シロウトなんだよなあ 俺含む(自戒
350デフォルトの名無しさん
2023/04/22(土) 07:19:16.96ID:UYc1nlSd PythonのAI系のライブラリを
rustで作り直したら爆速になるのかな?
rustで作り直したら爆速になるのかな?
351デフォルトの名無しさん
2023/04/22(土) 07:23:17.49ID:iD47eBZH 大人気のCUDA版は、CUDAでできてるから Pythonで操ってるだけ
352デフォルトの名無しさん
2023/04/22(土) 09:44:15.55ID:UBHQks3G C++のライフタイムが本当に簡単ならライフタイム系のバグを100%検知できるツールなんて簡単に作れるはずだよね?
353デフォルトの名無しさん
2023/04/22(土) 09:50:17.61ID:OMpDwvP8 >>352
そういう意味ではなく逆だろ
C++でもともなコードを書けているプログラマーはRustでライフタイムをすぐ習得してしまう話だろう
逆にライフタイムを難しいと言ってるプログラマーはC++で込み入ってくると正しいコードを書けない
そういう意味ではなく逆だろ
C++でもともなコードを書けているプログラマーはRustでライフタイムをすぐ習得してしまう話だろう
逆にライフタイムを難しいと言ってるプログラマーはC++で込み入ってくると正しいコードを書けない
354デフォルトの名無しさん
2023/04/22(土) 10:40:59.94ID:iD47eBZH355デフォルトの名無しさん
2023/04/22(土) 10:48:04.53ID:/en2DlgL varianceをOOPにたとえると
変数の型を宣言できないが基底クラスなら宣言できる
という理解でいいんでしょ
変数の型を宣言するツールを簡単に作れるかが問題なのでは
変数の型を宣言できないが基底クラスなら宣言できる
という理解でいいんでしょ
変数の型を宣言するツールを簡単に作れるかが問題なのでは
356デフォルトの名無しさん
2023/04/22(土) 10:54:03.92ID:8hXabeY8 ポインタと同じでライフタイムも概念を理解するのは何も難しいことはない
バグなしで使いこなすのが難しいだけ
それだからRustは厳しめのルールにしてコンパイラでチェックする
C++が脆弱性を量産してきた負の遺産を継承しないためにね
バグなしで使いこなすのが難しいだけ
それだからRustは厳しめのルールにしてコンパイラでチェックする
C++が脆弱性を量産してきた負の遺産を継承しないためにね
357デフォルトの名無しさん
2023/04/22(土) 11:23:28.94ID:XW9UuYWq358デフォルトの名無しさん
2023/04/22(土) 12:09:24.25ID:SKSgk+MB 少し前にvectorの再配置の例が出てたけど
他で参照してる間にデータを操作して参照がおかしくなる事故が後を絶たないから仕方ない
普通のイテレータで走査してる最中に要素を削除したりとか
他で参照してる間にデータを操作して参照がおかしくなる事故が後を絶たないから仕方ない
普通のイテレータで走査してる最中に要素を削除したりとか
359デフォルトの名無しさん
2023/04/22(土) 12:57:45.65ID:/en2DlgL360デフォルトの名無しさん
2023/04/22(土) 13:13:05.95ID:XW9UuYWq >>358
それはどういう状況かな?
それはどういう状況かな?
361デフォルトの名無しさん
2023/04/22(土) 13:44:44.50ID:3JkCsMe2 RustはまだMicrosoftがVisualRust出してないしなあ…
362デフォルトの名無しさん
2023/04/22(土) 15:25:53.88ID:V6k8LZu5 Microsoft方言なRustとかはいらん
363デフォルトの名無しさん
2023/04/22(土) 15:57:35.73ID:nX3yaBf6 >>357
所有権システムはC++もRustも基本的に同じで難しいところはない
表記方法は両者で異なるがRustの方がシンプルに整理されていてわかりやすいだろう
そのインスタンスの挙動についてもRustは新たな型宣言時に特に指定しなければムーブ型になるが
コピー型にしたいならばこう宣言すれば挙動がムーブではなくコピーとなる
#[derive(Copy, Clone)]
struct Foo(i32, i32);
let mut p = Foo(123, 456);
let q = p;
p.0 = 789;
assert!(p.0 != q.0);
assert!(p.1 == q.1);
所有権システムはC++もRustも基本的に同じで難しいところはない
表記方法は両者で異なるがRustの方がシンプルに整理されていてわかりやすいだろう
そのインスタンスの挙動についてもRustは新たな型宣言時に特に指定しなければムーブ型になるが
コピー型にしたいならばこう宣言すれば挙動がムーブではなくコピーとなる
#[derive(Copy, Clone)]
struct Foo(i32, i32);
let mut p = Foo(123, 456);
let q = p;
p.0 = 789;
assert!(p.0 != q.0);
assert!(p.1 == q.1);
364デフォルトの名無しさん
2023/04/22(土) 17:41:44.05ID:+yUQZ3bR >>359
実行時に参照カウントが2以上ならエラーとなる型もRustでは作れるよ
でももっと便利な仕様「実行時に(可変でない)参照カウントはいくつ増えてもOKだけど、可変参照を得る時だけは独占的つまり参照カウントが0でないとエラー」がもっと便利
標準ライブラリRefCell<T>がその仕様そのままで
RefCell<T>自体の可変参照を持っていなくて(非可変)参照を持ってるだけでもTを書き換えることができちゃう
Rustの厳しい可変参照ルールを無視できるから便利だね
いわゆる内部可変性と呼ばれる型の一つ
実行時に参照カウントが2以上ならエラーとなる型もRustでは作れるよ
でももっと便利な仕様「実行時に(可変でない)参照カウントはいくつ増えてもOKだけど、可変参照を得る時だけは独占的つまり参照カウントが0でないとエラー」がもっと便利
標準ライブラリRefCell<T>がその仕様そのままで
RefCell<T>自体の可変参照を持っていなくて(非可変)参照を持ってるだけでもTを書き換えることができちゃう
Rustの厳しい可変参照ルールを無視できるから便利だね
いわゆる内部可変性と呼ばれる型の一つ
365デフォルトの名無しさん
2023/04/22(土) 18:24:59.90ID:/en2DlgL >>364
Rc<T>とRefCell<T>に互換性のようなものはないから「もっと便利」というのは違和感がある
Rc<T>とRefCell<T>に互換性のようなものはないから「もっと便利」というのは違和感がある
366デフォルトの名無しさん
2023/04/22(土) 18:42:18.67ID:+yUQZ3bR367デフォルトの名無しさん
2023/04/22(土) 18:45:43.59ID:pFB+K5t4 話が専門的になってきているけれども、「メモリー関連バグ」はバグの一部に
過ぎず、それが完全に防げたとしてもバグが入り込む余地はたくさんある。
例えば、JSやJava、C#、BASIC、Pythonなどの言語はメモリー関連バグは
入り込まないが、バグはいくらでも入り込む。
過ぎず、それが完全に防げたとしてもバグが入り込む余地はたくさんある。
例えば、JSやJava、C#、BASIC、Pythonなどの言語はメモリー関連バグは
入り込まないが、バグはいくらでも入り込む。
368デフォルトの名無しさん
2023/04/22(土) 18:51:49.24ID:iD47eBZH Javaはぬるぽぬるぽいってたけどねえ いまさらだけど、あれなんだったんだろう (nullptrは使ってます
369デフォルトの名無しさん
2023/04/22(土) 19:01:05.60ID:pFB+K5t4 >>367
追加として、Ruby、PHP、Perl なども同様。
メモリー関連バグは入らないが、論理バグはいくらでも入り込む。
だから、ネットショッピングサイトをこれらの言語で作っても、
データ漏洩や、データ消失(顧客情報の間違った削除など)、
インターフェースのバグ、買いたいものが買えない、別人のアカウントで
買った事になってしまう、あるいは、セキュリティーホールなどは、
入り込む余地はいくらでもある。
15 番の人が購入しているのに、16番の人を購入したことにしてしまったりとか。
または、ボタンを一回押したのに、2回購入したことになってしまったとか。
キャンセルボタンを押しても動作しないとか。
または、キャンセルすると、14番の人の購入がキャンセルしてしまったりとか。
そういうのは基本的に論理バグであり、メモリー関連バグとは別に発生しうる。
追加として、Ruby、PHP、Perl なども同様。
メモリー関連バグは入らないが、論理バグはいくらでも入り込む。
だから、ネットショッピングサイトをこれらの言語で作っても、
データ漏洩や、データ消失(顧客情報の間違った削除など)、
インターフェースのバグ、買いたいものが買えない、別人のアカウントで
買った事になってしまう、あるいは、セキュリティーホールなどは、
入り込む余地はいくらでもある。
15 番の人が購入しているのに、16番の人を購入したことにしてしまったりとか。
または、ボタンを一回押したのに、2回購入したことになってしまったとか。
キャンセルボタンを押しても動作しないとか。
または、キャンセルすると、14番の人の購入がキャンセルしてしまったりとか。
そういうのは基本的に論理バグであり、メモリー関連バグとは別に発生しうる。
370デフォルトの名無しさん
2023/04/22(土) 19:24:40.58ID:2MwGVm8+ >>367
GC言語を含めた多くの言語で発生する普遍的なバグがデータ競合
データ競合は様々なものがあってマルチスレッドでは当然発生するだけでなく
スレッドを利用しなくても部分参照が可能な言語ではデータ競合が容易に発生してしまう
後者の例はこのスレ既出でベクター型においてその何番目かの要素の参照を持っているときに
要素追加が行われると再配置によりダングリングを引き起こしたり
要素挿入が行われると再配置がなくてもズレて意図せず異なる要素を指してしまうデータ競合が起きる
>>369の例の別の人の購入データになってしまったりするバグも様々なデータ競合により引き起こされることが多い
このように色々なデータ競合がプログラミングで発生するが
Rustではデータ競合が発生せずコンパイルエラーとなる
これは非常に大きな強み
GC言語を含めた多くの言語で発生する普遍的なバグがデータ競合
データ競合は様々なものがあってマルチスレッドでは当然発生するだけでなく
スレッドを利用しなくても部分参照が可能な言語ではデータ競合が容易に発生してしまう
後者の例はこのスレ既出でベクター型においてその何番目かの要素の参照を持っているときに
要素追加が行われると再配置によりダングリングを引き起こしたり
要素挿入が行われると再配置がなくてもズレて意図せず異なる要素を指してしまうデータ競合が起きる
>>369の例の別の人の購入データになってしまったりするバグも様々なデータ競合により引き起こされることが多い
このように色々なデータ競合がプログラミングで発生するが
Rustではデータ競合が発生せずコンパイルエラーとなる
これは非常に大きな強み
371デフォルトの名無しさん
2023/04/22(土) 19:37:17.80ID:pFB+K5t4 >>370
> 369の例の別の人の購入データになってしまったりするバグも様々なデータ競合により引き起こされることが多い
データ競合が発生しなくても、単なる論理ミスでも発生するから、Rustでも
ちゃんと正しい論理を書かなければ発生する。
> 369の例の別の人の購入データになってしまったりするバグも様々なデータ競合により引き起こされることが多い
データ競合が発生しなくても、単なる論理ミスでも発生するから、Rustでも
ちゃんと正しい論理を書かなければ発生する。
372デフォルトの名無しさん
2023/04/22(土) 19:40:54.01ID:iD47eBZH ポインタは究極の共有オブジェクトだから、同様に管理する習慣が付けば、データ競合のミスは減りそうだよね
373デフォルトの名無しさん
2023/04/22(土) 19:50:59.03ID:2MwGVm8+ >>371
それはビジネスロジックの論理バグ
プログラミング言語が何であろうと関係なく生じるのでこのスレの目的である言語の比較に無関係
そしてプログラミングのデータの取り扱いで発生する論理バグがデータ競合
データ競合はバグを引き起こしうるためプログラマーが回避しなければならない
Rustはコンパイルが通ればデータ競合がないことが保証される
任意のプログラミング言語に対してRustが有利
それはビジネスロジックの論理バグ
プログラミング言語が何であろうと関係なく生じるのでこのスレの目的である言語の比較に無関係
そしてプログラミングのデータの取り扱いで発生する論理バグがデータ競合
データ競合はバグを引き起こしうるためプログラマーが回避しなければならない
Rustはコンパイルが通ればデータ競合がないことが保証される
任意のプログラミング言語に対してRustが有利
374デフォルトの名無しさん
2023/04/22(土) 20:01:02.96ID:pFB+K5t4 メモリやデータ競合に関係したバグの送りにくさRustは有利ではある。
ただ、言語に求められるのはそれだけではない。
ただ、言語に求められるのはそれだけではない。
375デフォルトの名無しさん
2023/04/22(土) 20:07:00.96ID:2MwGVm8+376デフォルトの名無しさん
2023/04/22(土) 20:10:28.97ID:YMOkCFj1 Visual Studio でC++のMFCや C#のWPFのようにGUI開発がサポートされたら新規ソフトはRustになっていきそう
逆に現状のままなら開発元のMozilla以外はLinuxカーネルみたいなマニアックな用途だけで終わりそう
逆に現状のままなら開発元のMozilla以外はLinuxカーネルみたいなマニアックな用途だけで終わりそう
377デフォルトの名無しさん
2023/04/22(土) 20:13:15.69ID:pFB+K5t4378デフォルトの名無しさん
2023/04/22(土) 20:17:17.43ID:ZakZodsv let mut hoge: Vec<Vec<String>> = vec![Vec::with_capacity(3); 4];
のとき
hoge.len() は 4
hoge[0].len() は 0
hoge[0].capacity() は 3 を期待していたのですが何故か常に 0 になってしまいます
Why?
のとき
hoge.len() は 4
hoge[0].len() は 0
hoge[0].capacity() は 3 を期待していたのですが何故か常に 0 になってしまいます
Why?
379デフォルトの名無しさん
2023/04/22(土) 20:58:04.53ID:SKSgk+MB vec![expr; n]は内部でclone使うんだけど、Vecのcloneはcapacityまでは複製しないみたい
複製はできるだけ余剰メモリをカットしたい気がするから仕様だろうな
fn main() {
let a: Vec<String> = Vec::with_capacity(10);
let b = a.clone();
println!("{}, {}", a.capacity(), b.capacity()); // 10, 0
}
複製はできるだけ余剰メモリをカットしたい気がするから仕様だろうな
fn main() {
let a: Vec<String> = Vec::with_capacity(10);
let b = a.clone();
println!("{}, {}", a.capacity(), b.capacity()); // 10, 0
}
380デフォルトの名無しさん
2023/04/22(土) 20:58:54.89ID:+yUQZ3bR データ競合を防ぐのは簡単で「multiple readers or single writer」を守れば防げる
どの言語でもそのような形になるようにプログラマーが解決する
ただしRust以外の言語はデータ競合があっても検出できずに競合を起こしたまま動いてしまいバグとなる
>>377
存在しない
>>378
vec!は回数分のcloneするだけ
そしてcloneはcapacityを保持しない
だからその0となる挙動は仕様通りで正しい
その3となる挙動にしたいなら例えば
Vec::from_iter((0..4).map(|_| Vec::with_capacity(3)));
あるいはrepeat_withでtake(4)
どの言語でもそのような形になるようにプログラマーが解決する
ただしRust以外の言語はデータ競合があっても検出できずに競合を起こしたまま動いてしまいバグとなる
>>377
存在しない
>>378
vec!は回数分のcloneするだけ
そしてcloneはcapacityを保持しない
だからその0となる挙動は仕様通りで正しい
その3となる挙動にしたいなら例えば
Vec::from_iter((0..4).map(|_| Vec::with_capacity(3)));
あるいはrepeat_withでtake(4)
381デフォルトの名無しさん
2023/04/22(土) 21:09:18.75ID:iios9sCz やっぱりC++のstd::variant欲しいっすな
Refに対応したCow作ったけどなかなかだるい(というか標準で対応してくれの感が激しかった)し
こんどはRc<RefCell<T>>と&Tのenumが欲しい
わざわざ作るのもだるい
Refに対応したCow作ったけどなかなかだるい(というか標準で対応してくれの感が激しかった)し
こんどはRc<RefCell<T>>と&Tのenumが欲しい
わざわざ作るのもだるい
382デフォルトの名無しさん
2023/04/22(土) 21:09:58.95ID:XW9UuYWq 制約は安全性を高めるためなんだろうけど率直に言ってウザいからな
他人に書かせるならRustを選ぶかもしれんがw
自分で書くものにはRustは不要かな
他人に書かせるならRustを選ぶかもしれんがw
自分で書くものにはRustは不要かな
383デフォルトの名無しさん
2023/04/22(土) 21:26:41.96ID:suBXXmuN マルチスレッドの主な用途は数値計算なんだけど、数値計算だと
データ競合が起きるような場合はシミュレーション結果がおかしくなるので
テスト段階で分かることが多い。また、脆弱性とも関係無い。
脆弱性が問題になるのは、主にブラウザ。
自分のマシンのセキュリティーホールに悪さをするアホはいない。
つまり、脆弱性とはネットと関係する場合にのみおきると言っても過言ではない。
だから、シミュレーションとかは脆弱性とは関係が無いので、
データ競合が起きたら、結果がおかしくなるだけ。
データ競合が起きるような場合はシミュレーション結果がおかしくなるので
テスト段階で分かることが多い。また、脆弱性とも関係無い。
脆弱性が問題になるのは、主にブラウザ。
自分のマシンのセキュリティーホールに悪さをするアホはいない。
つまり、脆弱性とはネットと関係する場合にのみおきると言っても過言ではない。
だから、シミュレーションとかは脆弱性とは関係が無いので、
データ競合が起きたら、結果がおかしくなるだけ。
384デフォルトの名無しさん
2023/04/22(土) 21:26:48.13ID:2MwGVm8+ >>377
ついに嘘つき敗北宣言『あるけど言わない。』を出したのか
ついに嘘つき敗北宣言『あるけど言わない。』を出したのか
385デフォルトの名無しさん
2023/04/22(土) 21:29:51.72ID:2MwGVm8+386デフォルトの名無しさん
2023/04/22(土) 21:30:53.79ID:suBXXmuN >>384
いや、有る。
いや、有る。
387デフォルトの名無しさん
2023/04/22(土) 21:36:25.12ID:suBXXmuN ここの人達は、自分と意見が合わない人を馬鹿だと思ってる気がするけど、
それは違うぞ。
俺は貴重な意見を言っている。
まあ、日本全国探しても貴重だろう。
だけど、全部は大事なところは言わん。
それは違うぞ。
俺は貴重な意見を言っている。
まあ、日本全国探しても貴重だろう。
だけど、全部は大事なところは言わん。
388デフォルトの名無しさん
2023/04/22(土) 21:38:49.06ID:2MwGVm8+389デフォルトの名無しさん
2023/04/22(土) 21:39:07.62ID:OFX5zT+6 無能である上に突っ込まれるのが怖くて意見表明すらできない
負け犬極まれりだな
負け犬極まれりだな
390デフォルトの名無しさん
2023/04/22(土) 21:41:53.93ID:suBXXmuN >>388
>データ競合はタイミングなどで稀にしか発生しないものも多い
数学的に考えているから、細かいミスが取れた後は大丈夫。
脳内で証明済みのアルゴリズムを使うから。
才能の無い人は誰かが考えたアルゴリズムを真似て使うのだろう。
俺はそんなことはしてない。
>データ競合はタイミングなどで稀にしか発生しないものも多い
数学的に考えているから、細かいミスが取れた後は大丈夫。
脳内で証明済みのアルゴリズムを使うから。
才能の無い人は誰かが考えたアルゴリズムを真似て使うのだろう。
俺はそんなことはしてない。
391デフォルトの名無しさん
2023/04/22(土) 21:42:53.35ID:suBXXmuN392デフォルトの名無しさん
2023/04/22(土) 21:46:36.12ID:XW9UuYWq393デフォルトの名無しさん
2023/04/22(土) 21:49:17.49ID:suBXXmuN >>392
姿を隠して情報収集ってか。
姿を隠して情報収集ってか。
394デフォルトの名無しさん
2023/04/22(土) 21:50:20.64ID:+yUQZ3bR >>390
データ競合を引き起こしてきたプログラマーたちは皆そのように言っている
「自分はデータ競合を引き起こさないように(アルゴリズムを考えて)コードを書いた」
しかし実際にはデータ競合が起きた
データ競合はRustのようにプログラミング言語で防いだほうが好ましい
データ競合を引き起こしてきたプログラマーたちは皆そのように言っている
「自分はデータ競合を引き起こさないように(アルゴリズムを考えて)コードを書いた」
しかし実際にはデータ競合が起きた
データ競合はRustのようにプログラミング言語で防いだほうが好ましい
395デフォルトの名無しさん
2023/04/22(土) 21:51:10.61ID:suBXXmuN >>394
俺とそいつらの頭脳は同じではない。
俺とそいつらの頭脳は同じではない。
396デフォルトの名無しさん
2023/04/22(土) 21:54:28.66ID:suBXXmuN Mozillaは、凡庸な技術者しかいないからRustが必要になった。
それだけの話。
もっとも、普通の企業はそんなもんだろうが。
それだけの話。
もっとも、普通の企業はそんなもんだろうが。
397デフォルトの名無しさん
2023/04/22(土) 21:55:58.32ID:XW9UuYWq データ競合起きたら意図と異なりデタラメな結果になるので
すぐ分かると思うよ
すぐ分かると思うよ
398デフォルトの名無しさん
2023/04/22(土) 21:57:39.05ID:XW9UuYWq399デフォルトの名無しさん
2023/04/22(土) 22:00:29.73ID:SKSgk+MB >>385
文字列全体(String)とその一部の参照(&str)を同じ構造体に詰めないとか
オブジェクト指向言語に慣れた人だと辛いと思う
厳密にはC++でも難しい(&strの初期値で悩む)けどこっちはまだごまかせるし
上の方でもちょっと書いたけど行ロックを意識したDBのテーブル設計に近い印象
とりあえず全項目を1つのテーブルに突っ込むみたいな方法だと途中で引っ掛かるから
大雑把な人には面倒な言語かもしれない
文字列全体(String)とその一部の参照(&str)を同じ構造体に詰めないとか
オブジェクト指向言語に慣れた人だと辛いと思う
厳密にはC++でも難しい(&strの初期値で悩む)けどこっちはまだごまかせるし
上の方でもちょっと書いたけど行ロックを意識したDBのテーブル設計に近い印象
とりあえず全項目を1つのテーブルに突っ込むみたいな方法だと途中で引っ掛かるから
大雑把な人には面倒な言語かもしれない
400デフォルトの名無しさん
2023/04/22(土) 22:03:16.47ID:suBXXmuN >>397
俺の経験から言ってもそう思う。
テスト時に働かないような「if 文」を入れたりしない限りは。
バグが取れない人は、変なところに if 文を入れている。
数学的な理想世界では基本的には if は存在しないことがおおい。最小と最大の
付近以外では。
だから、数学的に考えられる人は if 文は最低限しか入れないで済む。
このルールを守っていれば、滅多なことで妙なバグは入らない。
俺の経験から言ってもそう思う。
テスト時に働かないような「if 文」を入れたりしない限りは。
バグが取れない人は、変なところに if 文を入れている。
数学的な理想世界では基本的には if は存在しないことがおおい。最小と最大の
付近以外では。
だから、数学的に考えられる人は if 文は最低限しか入れないで済む。
このルールを守っていれば、滅多なことで妙なバグは入らない。
401デフォルトの名無しさん
2023/04/22(土) 22:11:27.43ID:+yUQZ3bR402デフォルトの名無しさん
2023/04/22(土) 22:15:02.54ID:suBXXmuN >>401
いや、Microsoftは、「凡庸な技術者」もいるが、優秀なのも居る。
いや、Microsoftは、「凡庸な技術者」もいるが、優秀なのも居る。
403デフォルトの名無しさん
2023/04/22(土) 22:19:29.86ID:2MwGVm8+ >>399
それはString内容が変わったり空になったら意味のないデータになったり無効メモリを指すから、非GC言語でその設計はよくないね
Rust本スレで話題があったようにもう少し詳細な用途毎にstring_cacheやtyped_arenaを使ったりそういう自作設計をして安全と効率を両立させるべきかと
それはString内容が変わったり空になったら意味のないデータになったり無効メモリを指すから、非GC言語でその設計はよくないね
Rust本スレで話題があったようにもう少し詳細な用途毎にstring_cacheやtyped_arenaを使ったりそういう自作設計をして安全と効率を両立させるべきかと
404デフォルトの名無しさん
2023/04/22(土) 22:35:35.61ID:XW9UuYWq405デフォルトの名無しさん
2023/04/22(土) 22:41:58.79ID:DWNDga3I406デフォルトの名無しさん
2023/04/22(土) 22:42:49.07ID:Bx6uBAXU 「数学的」な人だったかww
407デフォルトの名無しさん
2023/04/22(土) 22:42:53.24ID:/en2DlgL rustcがソースコードを採点してくれるのに
なぜ採点結果ではなく書いた文字の量を競っているんだ
なぜ採点結果ではなく書いた文字の量を競っているんだ
408デフォルトの名無しさん
2023/04/23(日) 00:09:49.30ID:XReMgABv409デフォルトの名無しさん
2023/04/23(日) 00:35:50.04ID:s119dOFU >>408
例えばURL全体を受け取ってパースした結果の部分文字列を保持する場合とか
JavaとC#は全部Stringにするから関係ないけどRustで同じことをしようとしたときに
本体のStringと一緒に部分文字列の&strを持ちたいと考えるかもしれない
あと?を2つ重ねるとなんか頭悪そうに感じるからやめたほうが…
例えばURL全体を受け取ってパースした結果の部分文字列を保持する場合とか
JavaとC#は全部Stringにするから関係ないけどRustで同じことをしようとしたときに
本体のStringと一緒に部分文字列の&strを持ちたいと考えるかもしれない
あと?を2つ重ねるとなんか頭悪そうに感じるからやめたほうが…
410デフォルトの名無しさん
2023/04/23(日) 00:46:01.33ID:XReMgABv411デフォルトの名無しさん
2023/04/23(日) 00:52:26.01ID:hjyESha+ オブジェクト指向全く関係ないな
412デフォルトの名無しさん
2023/04/23(日) 03:53:33.10ID:a38AwUhr413デフォルトの名無しさん
2023/04/23(日) 08:58:13.51ID:XDoVkNXv414デフォルトの名無しさん
2023/04/23(日) 09:05:15.73ID:mbhtlP00 デッドロックはデータ競合ではなく無関係
デッドロックはロック順序を守ることで防ぐ
デッドロックはロック順序を守ることで防ぐ
415デフォルトの名無しさん
2023/04/23(日) 09:57:26.70ID:yqsq+eY1 rustコンパイラじゃ防げない
416デフォルトの名無しさん
2023/04/23(日) 10:01:44.66ID:bH2G2Xj3 Rust初心者だけど、シングルスレッドでしか動かさない場合にも、
マルチスレッドで起きるデータ競合を気にしてるってことよね
それはめんどくさくない?
マルチスレッドで起きるデータ競合を気にしてるってことよね
それはめんどくさくない?
417デフォルトの名無しさん
2023/04/23(日) 10:07:31.97ID:yqsq+eY1 気にしてるのはコンパイラ
418デフォルトの名無しさん
2023/04/23(日) 10:21:19.31ID:mWycOQ2H419デフォルトの名無しさん
2023/04/23(日) 10:47:08.19ID:SLeXOLnV ライブラリがマルチスレッドかもしれんだろ、そういうとこ油断しちゃだめだw
420デフォルトの名無しさん
2023/04/23(日) 10:59:51.10ID:yqsq+eY1421デフォルトの名無しさん
2023/04/23(日) 11:05:41.04ID:5RizofHX422デフォルトの名無しさん
2023/04/23(日) 11:26:29.64ID:L76w/S48 フリーソフトで遊んでる場合にも、お金に関する問題を気にしてる奴が一番めんどくさいぞ
423デフォルトの名無しさん
2023/04/23(日) 11:41:38.27ID:SLeXOLnV 各社だいたい優秀なんだろうけど、飲酒コーディングするような香具師も混じってるってことだよ
デバフだデバフw
デバフだデバフw
424デフォルトの名無しさん
2023/04/23(日) 11:45:11.86ID:s119dOFU 参照のread-writeロックもどきは↓みたいなコードを防いでる
fn main() {
let mut a = vec![42];
let r = &a[0];
println!("{r}"); // 42
a.clear();
println!("{r}"); // もういないよ
}
fn main() {
let mut a = vec![42];
let r = &a[0];
println!("{r}"); // 42
a.clear();
println!("{r}"); // もういないよ
}
425デフォルトの名無しさん
2023/04/23(日) 13:20:52.91ID:L76w/S48 a[0]をコピーまたはcloneできる場合にも&a[0]を使うのはめんどくさい
Tをコピーまたはcloneできる場合にもRefCell<T>を使うのはめんどくさい
Tをコピーまたはcloneできる場合にもRefCell<T>を使うのはめんどくさい
426デフォルトの名無しさん
2023/04/23(日) 13:21:04.29ID:XDoVkNXv >>409-410
Rust の hoge()? って頭悪そうだよな
Rust の hoge()? って頭悪そうだよな
427デフォルトの名無しさん
2023/04/23(日) 13:43:48.93ID:s119dOFU C#は
int? hoge = null;
int fuga = hoge ?? -1;
まで進歩してるからhoge()?くらいなら余裕
int? hoge = null;
int fuga = hoge ?? -1;
まで進歩してるからhoge()?くらいなら余裕
428デフォルトの名無しさん
2023/04/23(日) 18:41:22.14ID:y593Lq73 C/C++ で安全なコードを描ける人からすれば Rust なんてホント苦行でしかない
全然生産性上がらないぞω
全然生産性上がらないぞω
429デフォルトの名無しさん
2023/04/23(日) 19:13:33.85ID:1wjDCw27430デフォルトの名無しさん
2023/04/23(日) 20:15:54.20ID:njNVQguc C/C++で安全なコードを描けると思ってるやつはもはやレガシープログラマー
431デフォルトの名無しさん
2023/04/23(日) 20:20:12.47ID:Rh211EN3 つまり結局のところRustは苦しいと
そう思わないやつはC++で安全なコードを書けると思い込んでいる人であると
それか大したプログラムを書いたことがないか
そう思わないやつはC++で安全なコードを書けると思い込んでいる人であると
それか大したプログラムを書いたことがないか
432デフォルトの名無しさん
2023/04/23(日) 20:38:12.61ID:SLeXOLnV 酷い目に遭ったことがないんだろう
慣れるまでに、自分が踏み抜いたり、他人が踏み抜いたとばっちりを食ったりするんだけどね
ごりごり汗が書けるやつは、たしかにレガシ コーダだな
ちゃんと書けるなら、レガシにしてレジェンド
慣れるまでに、自分が踏み抜いたり、他人が踏み抜いたとばっちりを食ったりするんだけどね
ごりごり汗が書けるやつは、たしかにレガシ コーダだな
ちゃんと書けるなら、レガシにしてレジェンド
433デフォルトの名無しさん
2023/04/23(日) 20:42:24.61ID:L76w/S48 Cは複雑なGUIを作らず、スクリプトのインタプリタを作るから結構安全だ
外見重視でインタプリタ言語嫌いなOOPが危ない
外見重視でインタプリタ言語嫌いなOOPが危ない
434デフォルトの名無しさん
2023/04/23(日) 22:43:02.30ID:9nArI2JN >>425
コピーできる型でコピーが望ましいならそうすればいいだけだぞ
シーケンシャルにポインタを進めていく方が望ましい時はコピー可能か否かに関係なく参照のイテレータを使えばいい
コピーできる型で内部可変性が欲しいならばRefCellではなくCellを使え
コピーできる型でコピーが望ましいならそうすればいいだけだぞ
シーケンシャルにポインタを進めていく方が望ましい時はコピー可能か否かに関係なく参照のイテレータを使えばいい
コピーできる型で内部可変性が欲しいならばRefCellではなくCellを使え
435デフォルトの名無しさん
2023/04/23(日) 22:48:39.88ID:9nArI2JN436デフォルトの名無しさん
2023/04/23(日) 23:07:42.53ID:yqsq+eY1 「C/C++ で安全なコードを描ける」=「メモリ問題やデータ競合の無」く書ける
なのでは?
経験を積むと書けるようになるよ
なのでは?
経験を積むと書けるようになるよ
437デフォルトの名無しさん
2023/04/23(日) 23:31:52.59ID:/tirlZFd >>436
その根拠のない自信とミスが多くのバグとセキュリティホールを生んできた
一方で経験を積んだ者ならばC++でもRustでもどちらのコードも書けることも事実その通りだ
ならば客観的に各種問題のないことが保証されているRustのコードの方が選ばれる
その根拠のない自信とミスが多くのバグとセキュリティホールを生んできた
一方で経験を積んだ者ならばC++でもRustでもどちらのコードも書けることも事実その通りだ
ならば客観的に各種問題のないことが保証されているRustのコードの方が選ばれる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 【福岡】ミカンの木に逆さ吊りになっていた高齢の男性が死亡 [雑用縞工作★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- (´・ω・`)おはよ
- 🏡
- 【高市悲報】大暴落 [115996789]
- 【速報】東京から人が消える [329329848]
- 昼間にスーパーいったらさ客の9割が女しかも年代色々
- 【悲報】無能ぼく、仕事では「どうやったら楽できるか」を最優先に考えてしまうwwwwww
