Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
日本語の情報
https://rust-jp.rs/
前スレ
Rust part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/
探検
Rust part10
■ このスレッドは過去ログ倉庫に格納されています
2021/04/02(金) 21:38:04.11ID:L7IeSfpL
712デフォルトの名無しさん
2021/05/21(金) 18:24:13.35ID:IHGXJo1X713デフォルトの名無しさん
2021/05/21(金) 18:31:38.95ID:p9FphGnI >>709
これでどうですか?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9b05ca192ab0fd529b6de05dcc64a8c9
これでどうですか?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9b05ca192ab0fd529b6de05dcc64a8c9
714デフォルトの名無しさん
2021/05/21(金) 18:38:40.69ID:J6y23PLS715デフォルトの名無しさん
2021/05/21(金) 18:44:49.25ID:J6y23PLS716デフォルトの名無しさん
2021/05/21(金) 19:24:50.36ID:91Y2FzX3 「理論的に安全な任意のコードは通るべき」ってイメージだったのかな
実際にはそんなことはなくて、上の例のようなコードを通すためには色々なトレードオフがあるから
単に「理論的に安全」ってだけで無条件に実装されることはない
もっと具体的なユースケースがあって、みんなが「これは通らないと不便だよね」ってなったものが実装される
数年前に実装されたnon lexical lifetimesなんかはまさにその例だね
実際にはそんなことはなくて、上の例のようなコードを通すためには色々なトレードオフがあるから
単に「理論的に安全」ってだけで無条件に実装されることはない
もっと具体的なユースケースがあって、みんなが「これは通らないと不便だよね」ってなったものが実装される
数年前に実装されたnon lexical lifetimesなんかはまさにその例だね
717デフォルトの名無しさん
2021/05/21(金) 19:31:11.66ID:bfSFy0HM はぎゃーん
718デフォルトの名無しさん
2021/05/21(金) 21:43:48.32ID:HgMuIEwp クロージャの disjoint capture が破壊的変更になるのは分かるんだけど最初からこうなってなかったのはなぜ?
719デフォルトの名無しさん
2021/05/21(金) 22:34:26.09ID:vpqVq/KA iter()とinto_iter()の使い分けが分からない
iter()じゃないといけない場合があるのは分かるんだが
iter()じゃないといけない場合があるのは分かるんだが
720デフォルトの名無しさん
2021/05/21(金) 22:49:37.59ID:+ok17UuV into_iterは所有権を奪いItemを得ることができる
iterは&Itemを得る
他のintoで始まるものは所有権を奪うことになってる
iterは&Itemを得る
他のintoで始まるものは所有権を奪うことになってる
721デフォルトの名無しさん
2021/05/21(金) 23:22:44.96ID:qRzkKAr2722デフォルトの名無しさん
2021/05/22(土) 00:04:28.82ID:yRhz4OAW >>719
Rustでの変数の受け渡し方は
by (shared) reference、by mutable reference、by valueの3つなので
それに対応していろいろなものが3種類1セットになってる
イテレータならiter(), iter_mut(), into_iter()
クロージャならFn, FnMut, FnOnce
コンバージョンならAsRef, AsMut, From/Into
Rustでの変数の受け渡し方は
by (shared) reference、by mutable reference、by valueの3つなので
それに対応していろいろなものが3種類1セットになってる
イテレータならiter(), iter_mut(), into_iter()
クロージャならFn, FnMut, FnOnce
コンバージョンならAsRef, AsMut, From/Into
723デフォルトの名無しさん
2021/05/22(土) 00:34:10.91ID:RuplHzwP as_foo(), to_foo(), into_foo() の違いも覚えておくとよいかもね
724デフォルトの名無しさん
2021/05/22(土) 00:45:11.88ID:yRhz4OAW 覚えておくとはいいのはそうだけど、そのセットは少し観点違うよね
https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv
https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv
725デフォルトの名無しさん
2021/05/22(土) 16:34:10.81ID:ma8sDMzI Rustややこしいわぁ
726デフォルトの名無しさん
2021/05/22(土) 20:26:18.21ID:UuUK8ShD Rust慣れたあと他の言語行くと
良い作法が身についてて歓迎される、とかありますか?
良い作法が身についてて歓迎される、とかありますか?
727デフォルトの名無しさん
2021/05/22(土) 20:30:50.12ID:18meLr+O728デフォルトの名無しさん
2021/05/22(土) 20:34:58.75ID:RuplHzwP rustでは変数のshadowing当たり前のように使うけど他の言語では嫌がられそう
729デフォルトの名無しさん
2021/05/22(土) 21:08:16.57ID:9BHHuuQy let value = value;
とか他言語で書いたらアホだと思われるし
とか他言語で書いたらアホだと思われるし
730デフォルトの名無しさん
2021/05/22(土) 21:10:13.17ID:61y793Zl Rustはメイン関数かその次の関数のローカル変数にリソースを保持する形にしがちじゃない?
他の言語だとあんまりやらない
他の言語だとあんまりやらない
731デフォルトの名無しさん
2021/05/23(日) 03:12:09.36ID:1TnUlIAl732デフォルトの名無しさん
2021/05/23(日) 06:28:03.88ID:ApnxiBa8 pythonみたいな動的型付け言語ではよう見るけどさ
Rustではこんなん要らなくしてほしいわ
Rustではこんなん要らなくしてほしいわ
733デフォルトの名無しさん
2021/05/23(日) 13:14:57.61ID:viOBOYhY ライブラリによってはデータを持ち運ぶということが不可能だったりするからグローバル変数必須だったりするんだよな
(具体例: serenity)
(具体例: serenity)
734デフォルトの名無しさん
2021/05/23(日) 13:33:01.51ID:1FznZ2H5 いや別に必須ではないだろ。
735デフォルトの名無しさん
2021/05/23(日) 13:39:52.69ID:p3SEnqzU log!() みたいなプログラムの各所から呼び出されるマクロや関数の実装の為には rust でも普通にグローバル変数使われているのでは
static 変数にするためには Sync が要求されたり mut にするために Mutex 使う必要があるから他の言語ほど気楽に使えないというだけで
グローバル変数そのものが禁断扱いされることはないかと
グローバル変数の濫用は他の言語同様嫌われるけどね
static 変数にするためには Sync が要求されたり mut にするために Mutex 使う必要があるから他の言語ほど気楽に使えないというだけで
グローバル変数そのものが禁断扱いされることはないかと
グローバル変数の濫用は他の言語同様嫌われるけどね
736デフォルトの名無しさん
2021/05/23(日) 13:43:31.31ID:1TnUlIAl 一般的にどんな言語においても何らかの外部のライブラリを取り込む時には
何か一つのクラスとかオブジェクトとか構造体とかに閉じ込めてしまって
それ一つだけ持ち運ぶからグローバル変数を使うことは無いでしょう
何か一つのクラスとかオブジェクトとか構造体とかに閉じ込めてしまって
それ一つだけ持ち運ぶからグローバル変数を使うことは無いでしょう
737デフォルトの名無しさん
2021/05/23(日) 16:18:03.34ID:ljEJPp90 >>735
static変数とglobal変数はスコープが違うだろ
global変数が悪とされるのは、そのスコープの広さだからね
いつどこで誰が変更するのか、また参照するのか、スコープが広ければ広いほど把握が困難になる
把握が困難になればなるほど、それだけバグを生む温床になる
static変数とglobal変数はスコープが違うだろ
global変数が悪とされるのは、そのスコープの広さだからね
いつどこで誰が変更するのか、また参照するのか、スコープが広ければ広いほど把握が困難になる
把握が困難になればなるほど、それだけバグを生む温床になる
738デフォルトの名無しさん
2021/05/23(日) 18:34:32.71ID:1FznZ2H5 io周りは極論すればどう管理してもグローバルだからな。
プロジェクト毎に規約設ける以外にまともに管理する方法なんてない。
プロジェクト毎に規約設ける以外にまともに管理する方法なんてない。
739デフォルトの名無しさん
2021/05/23(日) 20:09:32.32ID:wHpcVS8W740デフォルトの名無しさん
2021/05/24(月) 12:11:21.84ID:1Toh/2dP741デフォルトの名無しさん
2021/05/24(月) 12:28:02.03ID:wwlvG9VZ 「:?」ってなんなんですか?
https://tourofrust.com/08_ja.html
https://tourofrust.com/08_ja.html
742デフォルトの名無しさん
2021/05/24(月) 12:49:55.25ID:KKN49LSI743デフォルトの名無しさん
2021/05/24(月) 13:24:07.35ID:JJaZh5wC744デフォルトの名無しさん
2021/05/24(月) 13:33:20.21ID:u2umy7DV745デフォルトの名無しさん
2021/05/24(月) 15:43:10.46ID:dukpbHqg >>740
そのクラスの存在そのものがグローバル変数(相当)だという話?
それともそのクラスもしくはそのインスタンスをグローバル変数に入れて使うということ?
後者の意味ならば必要な範囲で引数として持ち歩けばグローバル変数を普通は使わないですよね。
そのクラスの存在そのものがグローバル変数(相当)だという話?
それともそのクラスもしくはそのインスタンスをグローバル変数に入れて使うということ?
後者の意味ならば必要な範囲で引数として持ち歩けばグローバル変数を普通は使わないですよね。
746はちみつ餃子 ◆8X2XSCHEME
2021/05/24(月) 16:59:24.57ID:tdQ8iTTE 大事なのは抽象化がきちんとしているかどうか。
各部品が妥当な意味に分離されているかどうか。
グローバル変数がよくないのは色んなパーツから横断的に使われる可能性があって
部品が不必要に密結合していることの表れだからであって、
そのグローバル変数のアクセス範囲が妥当な範囲に制御されているなら問題じゃないよ。
過剰な密結合を解消せずにグローバル変数を引数に置き換えてたら
影響範囲が見えにくくなってもっと悪くなることだってありうる。
まあどういう場合なら妥当なのかってのは色々と意見はあると思うけど。
各部品が妥当な意味に分離されているかどうか。
グローバル変数がよくないのは色んなパーツから横断的に使われる可能性があって
部品が不必要に密結合していることの表れだからであって、
そのグローバル変数のアクセス範囲が妥当な範囲に制御されているなら問題じゃないよ。
過剰な密結合を解消せずにグローバル変数を引数に置き換えてたら
影響範囲が見えにくくなってもっと悪くなることだってありうる。
まあどういう場合なら妥当なのかってのは色々と意見はあると思うけど。
747デフォルトの名無しさん
2021/05/24(月) 17:17:23.03ID:qqtJSk72 $_POSTはセーフ
748デフォルトの名無しさん
2021/05/24(月) 17:21:32.94ID:Ig527IlE >>746
まずは長くて区別しやすい名前に変えるのがスタートかね。
まずは長くて区別しやすい名前に変えるのがスタートかね。
749デフォルトの名無しさん
2021/05/24(月) 17:31:54.98ID:wwlvG9VZ >>742
ありがとう!なんか独特なのね
ありがとう!なんか独特なのね
750デフォルトの名無しさん
2021/05/24(月) 23:12:37.25ID:rI3Y4Uqa 関数型言語やったことないけど、Rustいけるかな
JavaとC++はそこそこ経験あり
JavaとC++はそこそこ経験あり
751デフォルトの名無しさん
2021/05/24(月) 23:17:37.88ID:zk4LoLUU Java 8とかC++ 14以降くらいなら結構似たような機能も入ってるし
そこまで大変じゃない気がする
そこまで大変じゃない気がする
752デフォルトの名無しさん
2021/05/24(月) 23:36:00.17ID:JJaZh5wC c++はともかく、cくらいはやっぱ理解してた方が早道な気はする。
753デフォルトの名無しさん
2021/05/25(火) 01:36:21.07ID:5vUI50kp 以下のような関数を作ったんですがmatchが多くてどうしようか考えていました
fn foo(x: Option<u32>, y: Option<&str>) { //実際はOptionが5個とか
let x = match x {
Some(x) => x,
None => return,
};
let y = match y {
Some(y) => y,
None => return,
};
println!("{} {}", x, y);
}
考えついたのが、次のようにする方法なのですが、
fn foo(x: Option<u32>, y: Option<&str>) -> Option<()> {
let x = x?;
let y = y?;
println!("{} {}", x, y);
Some(())
}
記載の省略のためだけに返値の型をOption<()>にして最後にSome(())つけるのがすごく気持ち悪いんですが、
返値なしのままどうにかする方法はないでしょうか
fn foo(x: Option<u32>, y: Option<&str>) { //実際はOptionが5個とか
let x = match x {
Some(x) => x,
None => return,
};
let y = match y {
Some(y) => y,
None => return,
};
println!("{} {}", x, y);
}
考えついたのが、次のようにする方法なのですが、
fn foo(x: Option<u32>, y: Option<&str>) -> Option<()> {
let x = x?;
let y = y?;
println!("{} {}", x, y);
Some(())
}
記載の省略のためだけに返値の型をOption<()>にして最後にSome(())つけるのがすごく気持ち悪いんですが、
返値なしのままどうにかする方法はないでしょうか
754デフォルトの名無しさん
2021/05/25(火) 02:11:48.11ID:QcInQ0e9 if_chain使って
if_chain!{
if let Some(x) = x;
...
then { println!("{}", x); } }
if_chain!{
if let Some(x) = x;
...
then { println!("{}", x); } }
755デフォルトの名無しさん
2021/05/25(火) 02:16:51.35ID:Ygc8ZzR1 >>753
fooの型変えられないなら、戻り値Optionはクロージャないしローカル関数に留めるといいと思う
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=aa2bc019e7329f1b6bece2597b59ee8a
fooの型変えられないなら、戻り値Optionはクロージャないしローカル関数に留めるといいと思う
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=aa2bc019e7329f1b6bece2597b59ee8a
756デフォルトの名無しさん
2021/05/25(火) 03:00:10.05ID:nrKC74iS Ok(())はよく使うがSome(())はないな
普通にif-letでパターンマッチするのでよくない?
if let (Some(x), Some(y)) = (x, y) {
println!("{} {}", x, y);
}
普通にif-letでパターンマッチするのでよくない?
if let (Some(x), Some(y)) = (x, y) {
println!("{} {}", x, y);
}
757デフォルトの名無しさん
2021/05/25(火) 05:18:39.47ID:gz717nup loggerを引数で渡すためには
ロギングを行うクラスFooがどこかしら(コンストラクタか個々のメソッドで)loggerを受け取る引数を持たねばならない
これ、ロギングみたいな裏方の仕事がFooのインターフェース仕様に影響しているということで、
抽象度が下がってるやんけ;;;
引き換えに得られるメリットは、Fooのインスタンスごとにloggerを切り替えられるというおおよそ現実的にありがたみが無い機能だけ
ロギングを行うクラスFooがどこかしら(コンストラクタか個々のメソッドで)loggerを受け取る引数を持たねばならない
これ、ロギングみたいな裏方の仕事がFooのインターフェース仕様に影響しているということで、
抽象度が下がってるやんけ;;;
引き換えに得られるメリットは、Fooのインスタンスごとにloggerを切り替えられるというおおよそ現実的にありがたみが無い機能だけ
758デフォルトの名無しさん
2021/05/25(火) 06:08:48.35ID:FYPKUk3M >>756
それをmachでやるのがよくない?
それをmachでやるのがよくない?
759デフォルトの名無しさん
2021/05/25(火) 06:23:40.79ID:gz717nup つか機能の分離と記述の分離はトレードオフがある
1+1=2の形式的証明がどんだけの糞みたいな分量のに成り得るかを見たらワカル
どっかの抽象度をつきつめれば別のところにしわ寄せが逝く
それで良いジャマイカ人間の言語だもの、
1+1=2の形式的証明がどんだけの糞みたいな分量のに成り得るかを見たらワカル
どっかの抽象度をつきつめれば別のところにしわ寄せが逝く
それで良いジャマイカ人間の言語だもの、
760デフォルトの名無しさん
2021/05/25(火) 09:01:56.56ID:5vUI50kp 皆様ありがとうございます
どうもSomeをある程度書くのは避けられない感じですね
どうもSomeをある程度書くのは避けられない感じですね
761デフォルトの名無しさん
2021/05/25(火) 10:09:28.07ID:4oEEOZjA まさかstatic変数使ってるなんて、logクレートには失望したわ
762デフォルトの名無しさん
2021/05/25(火) 10:33:41.89ID:bGIV0Xp5763デフォルトの名無しさん
2021/05/25(火) 10:59:01.14ID:/nQyXsn+ サーバ側だとログを取るのが基本だし取り方も変えたくなるからlogger渡しは結構やるな
CLIとかなら雑にstaticでいいけど
CLIとかなら雑にstaticでいいけど
764デフォルトの名無しさん
2021/05/25(火) 13:12:03.88ID:CssgwvqL >>761
stdも使えないじゃん
stdも使えないじゃん
765デフォルトの名無しさん
2021/05/25(火) 18:48:30.58ID:4oEEOZjA >>764
なんで?
なんで?
766デフォルトの名無しさん
2021/05/25(火) 19:25:41.69ID:CssgwvqL767デフォルトの名無しさん
2021/05/25(火) 19:39:28.48ID:4oEEOZjA768デフォルトの名無しさん
2021/05/25(火) 21:02:03.28ID:p1A5R6d8 stdが嫌ならcoreを使え
769デフォルトの名無しさん
2021/05/25(火) 22:59:34.15ID:gz717nup770デフォルトの名無しさん
2021/05/26(水) 00:00:47.75ID:S2nFrW0F 別に仕事で使ったことないならそういえばいいと思うよ。悪いことしてるわけじゃないんだから。
771デフォルトの名無しさん
2021/05/26(水) 00:04:47.15ID:PLorGv/T そういやLog4JでいうMDCみたいなやつはあるのかしら?
772デフォルトの名無しさん
2021/05/26(水) 00:07:56.89ID:rwxZHBm1 お前らslog
>>760
ただのzipやん。
ttps://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=01c2f30ff2a49dc57c917ec16947aadb
>>760
ただのzipやん。
ttps://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=01c2f30ff2a49dc57c917ec16947aadb
773デフォルトの名無しさん
2021/05/26(水) 08:19:13.92ID:AN5OxrIl まあloggingオブジェクトを複数作る仕事なんなら仕方が無いな
774デフォルトの名無しさん
2021/05/26(水) 08:29:19.07ID:vJAmL6Qi slog見たけど、クソややこしいな
775デフォルトの名無しさん
2021/05/28(金) 09:51:25.19ID:jQHjx/Sg シンタックスで判断しづらいもので性的分析するって、そのうち破綻しそうだな。
776デフォルトの名無しさん
2021/05/28(金) 09:54:11.42ID:S8Iz9SRl エロい分析か
777デフォルトの名無しさん
2021/05/28(金) 10:45:17.68ID:EKMYAKDR やらC
778デフォルトの名無しさん
2021/05/29(土) 20:28:41.06ID:sKXDX7XX JPEG-XLのリファレンス実装作ってるチームがRustで再実装も始めてて驚いた
https://github.com/libjxl/jxl-rs
FirefoxにJPEG-XL対応を入れるかどうか議論するチケットで
今更大量のunsafeなC++コードを入れるのはちょっと……みたいな反応をされてた事と関係あるのかもしれない
https://github.com/libjxl/jxl-rs
FirefoxにJPEG-XL対応を入れるかどうか議論するチケットで
今更大量のunsafeなC++コードを入れるのはちょっと……みたいな反応をされてた事と関係あるのかもしれない
779デフォルトの名無しさん
2021/05/30(日) 15:56:56.42ID:HupJBx7X https://4e6.github.io/firefox-lang-stats/
https://www.openhub.net/p/firefox/analyses/latest/languages_summary
Firefox、かなりの割合でC++のコード入ってるけどこれでも減らそうとしてるのか
https://www.openhub.net/p/firefox/analyses/latest/languages_summary
Firefox、かなりの割合でC++のコード入ってるけどこれでも減らそうとしてるのか
780デフォルトの名無しさん
2021/05/30(日) 16:00:13.57ID:P46Jh5T1 もう9.5%も行ってるのか
と言うかfirefoxからrustは始まったから当然か
と言うかfirefoxからrustは始まったから当然か
781デフォルトの名無しさん
2021/05/30(日) 16:15:38.02ID:ds+xAsBi でも、大量の有名なWebサービスが一時的にRubyで書いていたのに、
しばらくすると他言語に書き直した歴史がある。
アメリカ人はなぜか言語を書き直すのが好きなようだ。
Rustで書いてもまた別言語に直すかも知れない。
なお、Googleドライブなどの各社のストレージサービスを統一的なAPIで制御できる
ライブラリも何故かGoで書かれている。
メンドクサイ。
しばらくすると他言語に書き直した歴史がある。
アメリカ人はなぜか言語を書き直すのが好きなようだ。
Rustで書いてもまた別言語に直すかも知れない。
なお、Googleドライブなどの各社のストレージサービスを統一的なAPIで制御できる
ライブラリも何故かGoで書かれている。
メンドクサイ。
782デフォルトの名無しさん
2021/05/30(日) 17:11:41.17ID:cF4puvJq >>781
遅い方から速い方へ書き直すのよ
特にスクリプト言語からC++/Rustへ書き換えるとサーバー数を1/10にできるケースもあり規模によっては経費激減ね
GoもGCあるから場合によっては他へ書き換えられる対象になりうるかも
Rustが他へ書き換えられる可能性がもしあるとしたら今はまだ存在しない新たに出現する言語へ
遅い方から速い方へ書き直すのよ
特にスクリプト言語からC++/Rustへ書き換えるとサーバー数を1/10にできるケースもあり規模によっては経費激減ね
GoもGCあるから場合によっては他へ書き換えられる対象になりうるかも
Rustが他へ書き換えられる可能性がもしあるとしたら今はまだ存在しない新たに出現する言語へ
783デフォルトの名無しさん
2021/05/31(月) 00:35:54.04ID:7s+MSAY0 なんでClippy大先生がcargoでインストールできるクレートから外されるの?
784デフォルトの名無しさん
2021/05/31(月) 01:50:13.82ID:u1BqTaEs rustupでインストールできるからでは
rustcとバージョン合わせないといけないから他のcrateと同じ扱いはしづらいのでは
rustcとバージョン合わせないといけないから他のcrateと同じ扱いはしづらいのでは
785デフォルトの名無しさん
2021/05/31(月) 08:44:19.92ID:etoumxTf Ruby on Rails の時価総額は、
Shopify が15兆円、
民泊のAirbnb が、大手ホテル3社の合計以上の10兆円、
Github が8千億円
これぐらい巨大でも、Rails で出来る。
時価総額が千億円以上になったら、Go, Elixir を考えてもよい
食べチョクは売上50億円らしいけど、
若い文系女が1人で起業したような会社は、Rails で十分
売上が千億円を超えたら、考えてもよい
Shopify が15兆円、
民泊のAirbnb が、大手ホテル3社の合計以上の10兆円、
Github が8千億円
これぐらい巨大でも、Rails で出来る。
時価総額が千億円以上になったら、Go, Elixir を考えてもよい
食べチョクは売上50億円らしいけど、
若い文系女が1人で起業したような会社は、Rails で十分
売上が千億円を超えたら、考えてもよい
786はちみつ餃子 ◆8X2XSCHEME
2021/05/31(月) 15:24:48.93ID:hqkxpUd6 ウェブシステム全体の実行コストはネットワークや IO にボトルネックが有るので
システム構成やらなんやらで工夫するのがまずやることで、
言語の速度が少しばかり速いのはそんなに効いてこないよ。
という話もよく聞くんだけど、実際のところどんなもんやろね?
システム構成やらなんやらで工夫するのがまずやることで、
言語の速度が少しばかり速いのはそんなに効いてこないよ。
という話もよく聞くんだけど、実際のところどんなもんやろね?
787デフォルトの名無しさん
2021/05/31(月) 16:31:16.04ID:slsuSMsk そりゃそうね
でも実行速度だけで選ぶわけじゃないからね
でも実行速度だけで選ぶわけじゃないからね
788デフォルトの名無しさん
2021/05/31(月) 19:40:04.29ID:mBUAbPrR 今まではハードにぶん投げても大丈夫だったのが
ハードの進化の鈍化でソフト側が工夫しないと駄目になりつつあるって話ってマジ?
ハードの進化の鈍化でソフト側が工夫しないと駄目になりつつあるって話ってマジ?
789デフォルトの名無しさん
2021/05/31(月) 21:37:16.00ID:M7WLmn8V いやそこでソフトで頑張ってもほぼダメだろ。。アーキテクチャで分散化考えないとって話じゃないかね
790はちみつ餃子 ◆8X2XSCHEME
2021/06/01(火) 01:05:37.48ID:69wa4c/Y >>788
ハードウェアがもう伸びないってことではなくて、 CPU の速度が単純に速くなるという方向ではもう伸びにくいって話。
電子の大きさは変えられないから際限なく微細化できるわけではない。
わかりやすい例で言えば今のパソコンはマルチコアが当たり前になってて複数の CPU を載せる方向で性能を上げているが、
マルチコアを想定してないソフトをマルチコアパソコンで動かしてもひとつのコアしか使わないので性能が出ない。
高価な GPU を乗せても GPU を使うプログラムになってなきゃ意味がない。
ハードウェアの総合的な性能を上げるには色んな工夫があり得て、それらを実現すると同時に
ソフトウェアは「ハードウェアに合わせて」「ハードウェアの性能を引き出すように」工夫がいる。
これは今までにも普通にやってたことで、今になって必要になったわけじゃない。
小さな変化の積み重ねなこともあれば大きな変革を迫られることもあるってだけ。
ハードウェアがもう伸びないってことではなくて、 CPU の速度が単純に速くなるという方向ではもう伸びにくいって話。
電子の大きさは変えられないから際限なく微細化できるわけではない。
わかりやすい例で言えば今のパソコンはマルチコアが当たり前になってて複数の CPU を載せる方向で性能を上げているが、
マルチコアを想定してないソフトをマルチコアパソコンで動かしてもひとつのコアしか使わないので性能が出ない。
高価な GPU を乗せても GPU を使うプログラムになってなきゃ意味がない。
ハードウェアの総合的な性能を上げるには色んな工夫があり得て、それらを実現すると同時に
ソフトウェアは「ハードウェアに合わせて」「ハードウェアの性能を引き出すように」工夫がいる。
これは今までにも普通にやってたことで、今になって必要になったわけじゃない。
小さな変化の積み重ねなこともあれば大きな変革を迫られることもあるってだけ。
791デフォルトの名無しさん
2021/06/01(火) 07:44:50.11ID:DWqq5xbS 後藤弘茂のWeekly海外ニュース■ Prescott/Tejasは5GHz台、65nmのNehalemは10GHz以上に
ttps://pc.watch.impress.co.jp/docs/2003/0227/kaigai01.htm
当時は景気よかったっすね。すぐ後に爆熱で日和ったけど
そして今、300Wの時代・・・
てか並列化によるスループットの向上はこのあたりから検討されるようになっていた気が
ttps://pc.watch.impress.co.jp/docs/2003/0227/kaigai01.htm
当時は景気よかったっすね。すぐ後に爆熱で日和ったけど
そして今、300Wの時代・・・
てか並列化によるスループットの向上はこのあたりから検討されるようになっていた気が
792デフォルトの名無しさん
2021/06/01(火) 19:29:09.48ID:a3oi+h5L >>784 でも何故かcargoだけはcargo install cargo --forceとすれば自分でコンパイルしたもので上書きができる謎
793デフォルトの名無しさん
2021/06/04(金) 15:33:30.83ID:kJqxa98Z よくわからないんだけどこれ、C言語のポインタ渡しが諸悪の根源で、そこを断ちさえすればC言語も所有権概念を取り入れられるの?
794デフォルトの名無しさん
2021/06/04(金) 15:42:09.57ID:03MQShFS795デフォルトの名無しさん
2021/06/04(金) 15:48:43.92ID:1/rRer4v Javaキチガイはポインタ使いこなせない
日本のMSの社員がソレだった
破棄忘れてやんのw
日本のMSの社員がソレだった
破棄忘れてやんのw
796デフォルトの名無しさん
2021/06/04(金) 15:55:06.60ID:JfDLBnT5 RAIIなしで良いなら多少の拡張で所有権の概念取り込めるかも知れないけど
絶対スマートポインタ欲しくなるしCの表現力だと使いづらい物になりそうな気がする
絶対スマートポインタ欲しくなるしCの表現力だと使いづらい物になりそうな気がする
797デフォルトの名無しさん
2021/06/04(金) 16:03:03.62ID:KjgiO9jk798デフォルトの名無しさん
2021/06/04(金) 17:24:32.39ID:Lunsq3fv Cと比較するのは流石に乱暴だろ
C++と比較するべき
で、C++でできなくてRustでできるものというのは現状存在しない (今後その差も埋まっていくだろうが)
C++とRustの違いはひとえにスタンスの違いだよ
自由奔放なC++か良いコードにカッチリ導いてくれるRustか
意欲的に新機能取り込んで発展してるのは両者とも同じ
C++と比較するべき
で、C++でできなくてRustでできるものというのは現状存在しない (今後その差も埋まっていくだろうが)
C++とRustの違いはひとえにスタンスの違いだよ
自由奔放なC++か良いコードにカッチリ導いてくれるRustか
意欲的に新機能取り込んで発展してるのは両者とも同じ
799デフォルトの名無しさん
2021/06/04(金) 17:31:18.17ID:AGlHvwIO800デフォルトの名無しさん
2021/06/04(金) 17:54:18.33ID:7u0nl5aT801デフォルトの名無しさん
2021/06/04(金) 17:58:01.49ID:UUHTR6cx C++は奇麗に描くと言うのが出来ない
802デフォルトの名無しさん
2021/06/04(金) 18:03:48.84ID:Pwqe5Yy7803デフォルトの名無しさん
2021/06/04(金) 18:16:57.72ID:hlBLv8XD C++はMemory Safetyをコンパイル時に担保できない
Rustを使う一番の動機
Rustを使う一番の動機
804デフォルトの名無しさん
2021/06/04(金) 18:53:59.58ID:nHzCWsfU >>802 C++とRustの比較において「C++でできなくてRustでできるもの」と「Rustでしかできないもの」は同じ意味だから転身でもなんでもない
https://i.imgur.com/3svkdus.png
https://i.imgur.com/3svkdus.png
805デフォルトの名無しさん
2021/06/04(金) 19:11:16.95ID:s8nyhwnD Cloudflareの画像処理責任者を名乗る人も、これ以上C++ライブラリを増やすのはイヤでござると発言してるな
806デフォルトの名無しさん
2021/06/04(金) 19:23:30.63ID:4pNcWBF2 >>804
C++とRust以外にも言語はたくさんある
C++とRust以外にも言語はたくさんある
807デフォルトの名無しさん
2021/06/04(金) 19:29:23.53ID:nsxzushh Rustのモジュール(ファイル分割)の仕組みはC++のヘッダー+ソース(+名前空間)より扱いやすいと思う
C++は分割コンパイルが主流だった歴史的経緯があるから仕方ないけど事前の宣言が必要なのは地味に面倒くさい
C++は分割コンパイルが主流だった歴史的経緯があるから仕方ないけど事前の宣言が必要なのは地味に面倒くさい
808デフォルトの名無しさん
2021/06/04(金) 19:43:15.38ID:nHzCWsfU >>806 この会話の流れではC++とRustの比較をしていたから
809デフォルトの名無しさん
2021/06/04(金) 19:58:10.76ID:4pNcWBF2 ライフタイムによるメモリ管理はRustオンリーだろ
810デフォルトの名無しさん
2021/06/04(金) 20:12:39.71ID:s8nyhwnD マイナーな環境だとC++プログラムは様々な理由でコンパイルが通らないことがよくある
Rustは基本的にはそういう事ないし、コンパイラ実装が一つしかないというのも利点に働く
Rustは基本的にはそういう事ないし、コンパイラ実装が一つしかないというのも利点に働く
811デフォルトの名無しさん
2021/06/04(金) 20:40:42.82ID:CpdoeubZ C++との比較を議論したいなら専用の隔離スレでどうぞ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- ゼレンスキー氏、大統領選挙の実施表明 トランプ氏の圧力受け [蚤の市★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- ぶっちゃけ天のうって昭和天のうのせいで全然ありがたみないよな
- 犬って顔くっつけて寝たがるよな
- 『猟友会がクマ駆除を嫌がるなら潰すべき。職務を放棄するハンターから免許や銃を没収して罰金を取ろう』の声、ネットで上がる [932029429]
- イオン、1.7kgの極太恵方巻を6458円で発売へ… 岡田さんの大きいナリ… [402859164]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
