>>165
知らんがな
俺は必須パラメータの問題を指摘している
探検
Rust part29
166デフォルトの名無しさん
2025/05/05(月) 11:44:04.39ID:EffckoF6167デフォルトの名無しさん
2025/05/05(月) 11:44:39.10ID:upfK5ln+168デフォルトの名無しさん
2025/05/05(月) 11:45:55.35ID:jqQPAhm/ >>167
dataと言うバイト列の中の一部だとしたら?
dataと言うバイト列の中の一部だとしたら?
169デフォルトの名無しさん
2025/05/05(月) 11:47:59.01ID:upfK5ln+170デフォルトの名無しさん
2025/05/05(月) 11:50:23.87ID:upfK5ln+171デフォルトの名無しさん
2025/05/05(月) 11:54:15.50ID:jqQPAhm/ >>170
また真面に回答できないから適当に話をごまかして議論のための議論しようとしてる
受信データなどのバイト列から値を取り出すのは一般的だろう
必ずしも構造体の列構造とは限らない
それと数値指定無くすならコーディング規約でこう書かないとアウトですとするのか?
blue=data[ i + blue_index_offset];
red=data[ i + red_index_offset];
green=data[ i + green_index_offset];
また真面に回答できないから適当に話をごまかして議論のための議論しようとしてる
受信データなどのバイト列から値を取り出すのは一般的だろう
必ずしも構造体の列構造とは限らない
それと数値指定無くすならコーディング規約でこう書かないとアウトですとするのか?
blue=data[ i + blue_index_offset];
red=data[ i + red_index_offset];
green=data[ i + green_index_offset];
172デフォルトの名無しさん
2025/05/05(月) 12:01:19.27ID:upfK5ln+ >>171
あのさ
Rustでプログラミングしたことないの?
Rust以外でもシリアライズとデシリアライズしたことないの?
まともなプログラミングしたことある人ならRustですぐにserdeにたどりつく
あのさ
Rustでプログラミングしたことないの?
Rust以外でもシリアライズとデシリアライズしたことないの?
まともなプログラミングしたことある人ならRustですぐにserdeにたどりつく
173デフォルトの名無しさん
2025/05/05(月) 12:10:05.78ID:aemkUy0l まともな人が言ったのか人形が言ったのか全然わからない時代だ
人形が言ったにすぎないなら、そんな言葉は存在しないのと同じ
人形が言ったにすぎないなら、そんな言葉は存在しないのと同じ
174デフォルトの名無しさん
2025/05/05(月) 12:14:04.97ID:jqQPAhm/175デフォルトの名無しさん
2025/05/05(月) 12:16:46.89ID:jqQPAhm/ p[ i+0 ],p[ i+1 ],p[i +2 ]を取り出すだけのためにどれだけコーディング量を増やして
ライブラリ依存させていくのか
本当に意味不明
ライブラリ依存させていくのか
本当に意味不明
176デフォルトの名無しさん
2025/05/05(月) 12:33:03.95ID:upfK5ln+ >>175
そんな可読性が悪くてミスしやすいプログラミングは避けるべきだ
構造化と抽象化が不得手でプログラマやエンジニアに向いてないな
serdeは構造体に#[derive(Serialize, Deserialize)]など付加するだけでデシリアライズ関数などは自動生成される
そんな可読性が悪くてミスしやすいプログラミングは避けるべきだ
構造化と抽象化が不得手でプログラマやエンジニアに向いてないな
serdeは構造体に#[derive(Serialize, Deserialize)]など付加するだけでデシリアライズ関数などは自動生成される
177デフォルトの名無しさん
2025/05/05(月) 12:57:25.54ID:jqQPAhm/178デフォルトの名無しさん
2025/05/05(月) 13:06:55.72ID:Q0EqhiJQ p[ i+0/*0=赤*/ ],p[ i+1/*1=緑*/ ],p[i +2/*2=青*/ ]
俺ならこうするよ
コメントを見れば0が赤、1が緑、2が青と見たん瞬間わかる
日本語なので英語より間違えにくい
もし間違った数字が間違ってたらコメントと比べればすぐわかる
俺ならこうするよ
コメントを見れば0が赤、1が緑、2が青と見たん瞬間わかる
日本語なので英語より間違えにくい
もし間違った数字が間違ってたらコメントと比べればすぐわかる
179デフォルトの名無しさん
2025/05/05(月) 14:25:06.41ID:aemkUy0l (言語を強化することにより)アプリのコーディング量を減らせという話はなかなか面白い
言語の数がアプリの数より多い気がする原因はこれかもしれない
言語の数がアプリの数より多い気がする原因はこれかもしれない
180デフォルトの名無しさん
2025/05/05(月) 15:35:05.95ID:4XowqzeV >>174
議論のための議論をしてるのはお前だろ
それともガチで何も意味を読み取れないインデックスアクセスが正義と思ってるわけ?
どんなみじめな経験を積んできたんだよ
害悪プログラマすぎて仕事で関わらないことを願うわ
議論のための議論をしてるのはお前だろ
それともガチで何も意味を読み取れないインデックスアクセスが正義と思ってるわけ?
どんなみじめな経験を積んできたんだよ
害悪プログラマすぎて仕事で関わらないことを願うわ
181デフォルトの名無しさん
2025/05/05(月) 15:41:59.59ID:AjenNrLi 議論とは関係ないけど大体の画像処理ライブラリだとRGBもBGRも扱えるように channel[0], channel[1], channel[2] のようにアクセスさせると思う
内部のデータによって channel 数は1や4 (アルファチャネル付き) もあるし
内部のデータによって channel 数は1や4 (アルファチャネル付き) もあるし
182デフォルトの名無しさん
2025/05/05(月) 16:02:16.97ID:Q0EqhiJQ 仕事はお金を貰ってやることだから丁寧に書いて上司に褒められる必要があるけれど
趣味とか経営者とかなら何を書いてもじゆうなんだよな
趣味とか経営者とかなら何を書いてもじゆうなんだよな
183デフォルトの名無しさん
2025/05/05(月) 16:11:32.03ID:Q0EqhiJQ 簡潔で見にくいコードを書くか
冗長で醜いコードを書くか
2択だな
冗長で醜いコードを書くか
2択だな
184デフォルトの名無しさん
2025/05/05(月) 16:35:32.16ID:0Pl94lQ7 >>181
これはそう
画像に限らず構造化されたバイナリデータを扱うときに一般に言えることだけど、
単純にビット列をそのまま構造体として読み替える間違いは、低水準に踏み込める言語に入門して調子乗ってる初心者がやりがち
これはそう
画像に限らず構造化されたバイナリデータを扱うときに一般に言えることだけど、
単純にビット列をそのまま構造体として読み替える間違いは、低水準に踏み込める言語に入門して調子乗ってる初心者がやりがち
185デフォルトの名無しさん
2025/05/05(月) 16:47:29.64ID:aemkUy0l 上司はunsafeの箇所をチェックすればいいのに
コンパイラが自動で調べてエラーがなかった箇所を、手動で調べ直して逆張りするのが胡散臭い
コンパイラが自動で調べてエラーがなかった箇所を、手動で調べ直して逆張りするのが胡散臭い
186デフォルトの名無しさん
2025/05/05(月) 18:15:43.01ID:fQ8xBj6s Serdeは暗黙のCopyしがち
187デフォルトの名無しさん
2025/05/05(月) 18:29:47.69ID:jqQPAhm/ >>180
80代のおじいさんと仕事をする機会はないかな
80代のおじいさんと仕事をする機会はないかな
188デフォルトの名無しさん
2025/05/05(月) 22:23:21.43ID:I4eA7HrP 話を整理すると
>>82
>> .G(p[0]).R(p[1]).B(p[2]).build()
>> のところを容易に
>> .R(p[0]).G(p[1]).B(p[2]).build()と間違え
と彼は言い出すから
それは名前付けせずにp[0]を用いていることが間違える本質的な問題という話だよな
>>82
>> .G(p[0]).R(p[1]).B(p[2]).build()
>> のところを容易に
>> .R(p[0]).G(p[1]).B(p[2]).build()と間違え
と彼は言い出すから
それは名前付けせずにp[0]を用いていることが間違える本質的な問題という話だよな
189デフォルトの名無しさん
2025/05/05(月) 22:25:33.48ID:I4eA7HrP さらに
>>160
> RGB各値は指定が必須とは限らない
> defaltで各値が0指定されていて同じなら書く必要がない
と彼は言ってるので
彼の好み通りにp[0]を用いるとして
名前付きオプション引数方式
foo(
green = p[0],
blue = p[2],
)
ビルダーメソッド方式
foo()
.green(p[0])
.blue(p2])
どちらの方式でも同じだな
仮にミスが起きるとしたらそれは名前を付けずにp[0]を使っていることが本質的な問題であると確定
>>160
> RGB各値は指定が必須とは限らない
> defaltで各値が0指定されていて同じなら書く必要がない
と彼は言ってるので
彼の好み通りにp[0]を用いるとして
名前付きオプション引数方式
foo(
green = p[0],
blue = p[2],
)
ビルダーメソッド方式
foo()
.green(p[0])
.blue(p2])
どちらの方式でも同じだな
仮にミスが起きるとしたらそれは名前を付けずにp[0]を使っていることが本質的な問題であると確定
190デフォルトの名無しさん
2025/05/05(月) 22:47:31.22ID:fQ8xBj6s 構造体は
foo{green:green,blue:blue}
を
foo{green,blue}
と描ける訳で
ビルダーメソッド方式とやらも
foo().green().blue()
的に描ければ無駄が減るから改良してくれんかのぅ
foo{green:green,blue:blue}
を
foo{green,blue}
と描ける訳で
ビルダーメソッド方式とやらも
foo().green().blue()
的に描ければ無駄が減るから改良してくれんかのぅ
191デフォルトの名無しさん
2025/05/05(月) 23:13:19.16ID:If8Py5os >>189
その大量連投していた彼はRustをほぼ知らないと判明した上に他の言語の経験値も低そうなので彼自身に問題があることを理解できないと思う
その大量連投していた彼はRustをほぼ知らないと判明した上に他の言語の経験値も低そうなので彼自身に問題があることを理解できないと思う
192デフォルトの名無しさん
2025/05/05(月) 23:39:40.43ID:Cn3HeiMA193デフォルトの名無しさん
2025/05/05(月) 23:42:50.66ID:fQ8xBj6s foo().(green).(blue)
でもいいな
でもいいな
194デフォルトの名無しさん
2025/05/05(月) 23:55:27.76ID:hXT/3Bxe RustはJavaよりも構造体リテラルの表記が強力だから
Builder使うよりOptions構造体1つで渡す方が楽かもしれんね
パターンとしてはBuilderよりマイナーだけど
Builder使うよりOptions構造体1つで渡す方が楽かもしれんね
パターンとしてはBuilderよりマイナーだけど
195デフォルトの名無しさん
2025/05/05(月) 23:58:49.46ID:+Xl4Ck1b196デフォルトの名無しさん
2025/05/06(火) 09:36:09.23ID:sXCqetJD >オプション引数やキーワード引数については他言語が内部的にやってることをRustの場合は開発者が自分でやらなきゃいけないことになっててバカらしい
>しかも関数シグニチャに情報をまとめられないから書く方も読む方も煩雑になるだけで開発者的には何もメリットがない
これに尽きる
言語に機能が不足してるから何でもかんでもビルダーパターンにしなきゃいけなくてサードパーティのマクロに依存することになる
アホらし
>しかも関数シグニチャに情報をまとめられないから書く方も読む方も煩雑になるだけで開発者的には何もメリットがない
これに尽きる
言語に機能が不足してるから何でもかんでもビルダーパターンにしなきゃいけなくてサードパーティのマクロに依存することになる
アホらし
197デフォルトの名無しさん
2025/05/06(火) 09:48:17.91ID:j5CJU7Aq >>196
真逆だろ
キーワード付オプション引数をズラズラ並べた長い長い関数シグニチャはデメリットしかない欠陥品
しかも機能拡張したらさらにキーワード付オプション引数が増えて関数シグニチャが変わるアホらしさ
真逆だろ
キーワード付オプション引数をズラズラ並べた長い長い関数シグニチャはデメリットしかない欠陥品
しかも機能拡張したらさらにキーワード付オプション引数が増えて関数シグニチャが変わるアホらしさ
198デフォルトの名無しさん
2025/05/06(火) 09:51:10.91ID:HDXWn70Z 複数IDと口調を使い分けて自分のレスに賛成するキチガイが複おじ
199デフォルトの名無しさん
2025/05/06(火) 09:51:38.50ID:K1Pjz07i Rustのダサい処は認めるべき
200デフォルトの名無しさん
2025/05/06(火) 09:56:28.46ID:HDXWn70Z >>197
ビルダーパターンは30年以上前から知られていたけどあまり有用ではないので使われていない
過去に誰かがざっくりデザインパターンを否定してたけど、その人の言うにはデザインパターンで有用なものは言語自体に取り込まれるはずだと
実際いくつかは新しい言語では取り込まれている
ビルダーパターンは30年以上前から知られていたけどあまり有用ではないので使われていない
過去に誰かがざっくりデザインパターンを否定してたけど、その人の言うにはデザインパターンで有用なものは言語自体に取り込まれるはずだと
実際いくつかは新しい言語では取り込まれている
201デフォルトの名無しさん
2025/05/06(火) 09:56:50.79ID:SvTeM3j9 マクロで解決可能なんだろ? それは「不足している」のか?
まあ標準ライブラリとして入っているべきみたいな論はあるかもしれんけど、マクロでの解決が悪くて言語機能として直接サポートするのが良いとする根拠は出てないな。
言語ユーザがそれぞれのやり方で解決できる自由さと言語の方針を強制する一貫性は両立しないがそれぞれに良さはあるし、 Rust は今のところ自由さをとりつつもデファクトな地位のライブラリはあるという状況だ。
手頃な妥協点と言えるだろ。
まあ標準ライブラリとして入っているべきみたいな論はあるかもしれんけど、マクロでの解決が悪くて言語機能として直接サポートするのが良いとする根拠は出てないな。
言語ユーザがそれぞれのやり方で解決できる自由さと言語の方針を強制する一貫性は両立しないがそれぞれに良さはあるし、 Rust は今のところ自由さをとりつつもデファクトな地位のライブラリはあるという状況だ。
手頃な妥協点と言えるだろ。
202デフォルトの名無しさん
2025/05/06(火) 10:01:33.47ID:HDXWn70Z 些細な内容なら初期化関数を複数作ればよい話で更に多くなればオプション指定する構造体を作ればよい
mutに拘る必要が無ければさらに多くの可能性がある
わざわざ穴の多いビルダーパターンを使う必要はない
mutに拘る必要が無ければさらに多くの可能性がある
わざわざ穴の多いビルダーパターンを使う必要はない
203デフォルトの名無しさん
2025/05/06(火) 10:08:26.28ID:SvTeM3j9 >>200
ポールグレアムはイディオム (デザインパターン) は言語機能として持つかライブラリにまとめるべきと述べていて、考えられる様々なパターン (またはこれから登場する未知のパターン) をライブラリにまとめるには「本物のマクロ」が必要と主張してた。
そして本物のマクロを持つ実用的な言語は Common Lisp くらいしかなかったんだが、 Rust のマクロは彼の言う本物のマクロだ。
マクロで抽象化されてるならその実装がビルダーパターンでもそうでなくてもどうでもいいよ。
ポールグレアムはイディオム (デザインパターン) は言語機能として持つかライブラリにまとめるべきと述べていて、考えられる様々なパターン (またはこれから登場する未知のパターン) をライブラリにまとめるには「本物のマクロ」が必要と主張してた。
そして本物のマクロを持つ実用的な言語は Common Lisp くらいしかなかったんだが、 Rust のマクロは彼の言う本物のマクロだ。
マクロで抽象化されてるならその実装がビルダーパターンでもそうでなくてもどうでもいいよ。
204デフォルトの名無しさん
2025/05/06(火) 10:10:04.33ID:j5CJU7Aq205デフォルトの名無しさん
2025/05/06(火) 10:12:49.15ID:HDXWn70Z >>204
他の言語では大体オーバーロードでオプション指定しているけどそれが馬鹿だとは思わないけどね
他の言語では大体オーバーロードでオプション指定しているけどそれが馬鹿だとは思わないけどね
206デフォルトの名無しさん
2025/05/06(火) 10:15:57.89ID:j5CJU7Aq >>205
それはオプションが増えると組み合わせ爆発が起こる馬鹿な方式
それはオプションが増えると組み合わせ爆発が起こる馬鹿な方式
207デフォルトの名無しさん
2025/05/06(火) 10:17:10.44ID:HDXWn70Z >>206
同じ主張と文章を繰り返すやり方が複おじそっくりですね
オーバーロードの初期化関数で馬鹿らしいと思うのは型が同じで対象が違うものがある時
重複を避けるためにシグネチャの設計をしなくては成らないことは馬鹿らしいと思うよ
例えば基本的に2つだけ引数があって後はオプションがずらずら並ぶならやはりオプション内容を含む構造体渡せばいいと思う
そちらも設計が必要だけど
同じ主張と文章を繰り返すやり方が複おじそっくりですね
オーバーロードの初期化関数で馬鹿らしいと思うのは型が同じで対象が違うものがある時
重複を避けるためにシグネチャの設計をしなくては成らないことは馬鹿らしいと思うよ
例えば基本的に2つだけ引数があって後はオプションがずらずら並ぶならやはりオプション内容を含む構造体渡せばいいと思う
そちらも設計が必要だけど
208デフォルトの名無しさん
2025/05/06(火) 10:18:50.49ID:j5CJU7Aq209デフォルトの名無しさん
2025/05/06(火) 10:19:38.79ID:K1Pjz07i >Rust のマクロは彼の言う本物のマクロ
macro_rules! は偽物のマクロ
proc_macro2 が本物のマクロ
macro_rules! は偽物のマクロ
proc_macro2 が本物のマクロ
210デフォルトの名無しさん
2025/05/06(火) 10:20:41.45ID:HDXWn70Z 普通は書き込み内容が単調にならないように人は文章に揺らぎをいれてくるんだけど
複おじは基本全部同じ
口調を変えても同じなので同一人物なんじゃないかと思って見ていると後で全く同じ書き込みを始めるので同じ人間なんだなと
複おじは基本全部同じ
口調を変えても同じなので同一人物なんじゃないかと思って見ていると後で全く同じ書き込みを始めるので同じ人間なんだなと
211デフォルトの名無しさん
2025/05/06(火) 10:20:45.54ID:j5CJU7Aq212デフォルトの名無しさん
2025/05/06(火) 10:20:58.22ID:AZSw2w0R >>208
何の問題もないと思うが、具体的には?
何の問題もないと思うが、具体的には?
213デフォルトの名無しさん
2025/05/06(火) 10:22:59.33ID:HDXWn70Z 本物のマクロと言う主張は面白い
でライブラリ作成者ではなく一般的なユーザ側が書いてるマクロはどっちなのかと
でライブラリ作成者ではなく一般的なユーザ側が書いてるマクロはどっちなのかと
214デフォルトの名無しさん
2025/05/06(火) 10:23:21.48ID:j5CJU7Aq215デフォルトの名無しさん
2025/05/06(火) 10:24:49.05ID:j5CJU7Aq >>213
衛生的なマクロとは何かを勉強するといいよ
衛生的なマクロとは何かを勉強するといいよ
216デフォルトの名無しさん
2025/05/06(火) 10:24:50.06ID:HDXWn70Z オーバーロード自体は良い仕組みだと思うけど設計が必要だ
最近の言語が取り入れていないのはヒューマンエラー対策という名目
だったらビルダーパターンもヒューマンエラー対策で禁止になるかと言えばそうでもない
最近の言語が取り入れていないのはヒューマンエラー対策という名目
だったらビルダーパターンもヒューマンエラー対策で禁止になるかと言えばそうでもない
217デフォルトの名無しさん
2025/05/06(火) 10:27:37.75ID:j5CJU7Aq218デフォルトの名無しさん
2025/05/06(火) 10:28:08.85ID:HDXWn70Z 徐々に文体におじいさんぽさが出てきたね
219デフォルトの名無しさん
2025/05/06(火) 10:47:02.68ID:46q0jEJS AIを屈服させるレベルの改善ができるなら改善してもいいけどね
どうせAIが勝つという前提なら何も修正しないのが合理的だ
どうせAIが勝つという前提なら何も修正しないのが合理的だ
220デフォルトの名無しさん
2025/05/06(火) 10:51:59.27ID:K1Pjz07i 今のAI()の実力ってこんなもんか
>2つのリンゴを3人で分ける場合、1つのリンゴを2つに切り、もう1つのリンゴも2つに切って、3人で分けます。
>そうすると、3人ともリンゴの切れ目と半分になります。
>具体的な分け方
1. 1つのリンゴを半分に切る:1つのリンゴを真ん中から半分に切り、2つの半分のリンゴにします。
2. もう1つのリンゴも半分に切る:もう1つのリンゴも同じように半分に切り、さらに2つの半分のリンゴにします。
3. リンゴを合計4つの半分に分ける:2つのリンゴを合わせて、全部で4つの半分に切ったリンゴが手に入ります。
4. 3人で分配する:3人でリンゴの半分を1つずつ取ると、3人とも1つずつ取ることができます。
5. 残った1つを3人で分ける:1つの半分に切ったリンゴが残りますが、それを3人で分けることができます。
例えば、さらに半分に切って3人で分けたり、3つの小さく切って3人で分けたりできます。
>2つのリンゴを3人で分ける場合、1つのリンゴを2つに切り、もう1つのリンゴも2つに切って、3人で分けます。
>そうすると、3人ともリンゴの切れ目と半分になります。
>具体的な分け方
1. 1つのリンゴを半分に切る:1つのリンゴを真ん中から半分に切り、2つの半分のリンゴにします。
2. もう1つのリンゴも半分に切る:もう1つのリンゴも同じように半分に切り、さらに2つの半分のリンゴにします。
3. リンゴを合計4つの半分に分ける:2つのリンゴを合わせて、全部で4つの半分に切ったリンゴが手に入ります。
4. 3人で分配する:3人でリンゴの半分を1つずつ取ると、3人とも1つずつ取ることができます。
5. 残った1つを3人で分ける:1つの半分に切ったリンゴが残りますが、それを3人で分けることができます。
例えば、さらに半分に切って3人で分けたり、3つの小さく切って3人で分けたりできます。
221デフォルトの名無しさん
2025/05/06(火) 10:52:27.53ID:SvTeM3j9 >>209
本物のマクロというのが何であるか明瞭な定義はされてないのだが、文脈的に「構文木の操作が出来る」というのが要件だと一般的に解されている。
トークン単位の置き換えしか出来ない C のマクロのようなものを除外するための言い回しだ。
構文木を操作できるなら操作できる範囲の違いは本物のマクロかどうかには重要ではない。
(もちろん出来ることが多いほうがより良い本物のマクロとは言えるだろうが、出来ることが多いほうが危険な間違いも引き起こしやすいので現実には適度に制限があったほうが良いこともある。)
macro_rules! も普通は本物のマクロと解される。
本物のマクロというのが何であるか明瞭な定義はされてないのだが、文脈的に「構文木の操作が出来る」というのが要件だと一般的に解されている。
トークン単位の置き換えしか出来ない C のマクロのようなものを除外するための言い回しだ。
構文木を操作できるなら操作できる範囲の違いは本物のマクロかどうかには重要ではない。
(もちろん出来ることが多いほうがより良い本物のマクロとは言えるだろうが、出来ることが多いほうが危険な間違いも引き起こしやすいので現実には適度に制限があったほうが良いこともある。)
macro_rules! も普通は本物のマクロと解される。
222デフォルトの名無しさん
2025/05/06(火) 11:06:32.44ID:46q0jEJS リスパーはmatchを知らない
matchを知らなくても理解できるマクロが本物のマクロ
matchを知らなくても理解できるマクロが本物のマクロ
223デフォルトの名無しさん
2025/05/06(火) 11:11:44.35ID:HDXWn70Z 複数ID使用おじ
別人が複おじと疑われたら自分は複おじじゃねーよと反論する
気持ち悪いから
ところが何故かしない
複おじはそういうのに反論しない仕組みになっている
別人が複おじと疑われたら自分は複おじじゃねーよと反論する
気持ち悪いから
ところが何故かしない
複おじはそういうのに反論しない仕組みになっている
224デフォルトの名無しさん
2025/05/06(火) 11:19:55.25ID:AZSw2w0R225デフォルトの名無しさん
2025/05/06(火) 11:20:28.10ID:HDXWn70Z マクロ自体がただの似たような機能の概念の総称であってその中で本物だ、元祖だと言っても笑われるだけ
キーボードマクロは真のマクロではないとか衛生的ではないと言われてもそうですかと
キーボードマクロは真のマクロではないとか衛生的ではないと言われてもそうですかと
226デフォルトの名無しさん
2025/05/06(火) 11:22:58.43ID:HDXWn70Z ID:j5CJU7Aq の反応待ちのawait状態です
227デフォルトの名無しさん
2025/05/06(火) 11:23:42.97ID:K1Pjz07i228デフォルトの名無しさん
2025/05/06(火) 11:31:04.25ID:SvTeM3j9 >>225
「本物のマクロ」というのは正しさとか起源を主張しているわけではなくそういう名前の分類。
少なくとも C のマクロなどでは様々なイディオムを抽象化するには不十分だというごく当然の話をしてる。
「本物のマクロ」というのは正しさとか起源を主張しているわけではなくそういう名前の分類。
少なくとも C のマクロなどでは様々なイディオムを抽象化するには不十分だというごく当然の話をしてる。
229デフォルトの名無しさん
2025/05/06(火) 11:33:12.59ID:AZSw2w0R なお、名前付き引数での呼び出しを前提とするならばhoge(red) と hoge(green)を名前付き引数の引数名だけで呼び分けるオーバーロードは技術的には実装できない理由は特にない
しかし、多くの言語では名前付き引数の使用はオプションだしこの場合はhoge_red(val)のように機械的に名前変えりゃいいだけだから、実装コストに見合わないという判断をされているのだろう
しかし、多くの言語では名前付き引数の使用はオプションだしこの場合はhoge_red(val)のように機械的に名前変えりゃいいだけだから、実装コストに見合わないという判断をされているのだろう
230デフォルトの名無しさん
2025/05/06(火) 11:39:56.59ID:ZZS2r6Zz >>224
こうですか?わかりません
impl From<Red> for Color {...}
impl From<Green> for Color {...}
impl From<Blue> for Color {...}
impl From<(Red, Green)> for Color {...}
impl From<(Red, Blue)> for Color {...}
impl From<(Green, Blue)> for Color {...}
impl From<(Red, Green, Blue)> for Color {...}
let red = Color::from(Red(255));
let yellow = Color::from((Red(255), Green(255)));
let white = Color::from((Red(255), Green(255), Blue(255));
こうですか?わかりません
impl From<Red> for Color {...}
impl From<Green> for Color {...}
impl From<Blue> for Color {...}
impl From<(Red, Green)> for Color {...}
impl From<(Red, Blue)> for Color {...}
impl From<(Green, Blue)> for Color {...}
impl From<(Red, Green, Blue)> for Color {...}
let red = Color::from(Red(255));
let yellow = Color::from((Red(255), Green(255)));
let white = Color::from((Red(255), Green(255), Blue(255));
231デフォルトの名無しさん
2025/05/06(火) 11:48:34.17ID:46q0jEJS メリットが不確実なだけでしょ
メリットもコストも確定していてなおかつ見合わないという話ではない
メリットもコストも確定していてなおかつ見合わないという話ではない
232デフォルトの名無しさん
2025/05/06(火) 12:18:40.67ID:0KYdit4+ このスレでずっと自演してる人って糖質とかなんだろうなあ
233デフォルトの名無しさん
2025/05/06(火) 12:28:45.22ID:K1Pjz07i traitで騒いでた自演と同じ人だろう
234デフォルトの名無しさん
2025/05/06(火) 12:40:06.43ID:WV2uqB5+ オーバーロードはそもそもCのAPIにありがちな、後で〇〇2だの〇〇exだのが増えて格好悪くなる問題を解消するためのもの
後で引数名だけ異なるオーバーロードが増えたら名前付き引数を使っていない既存の呼び出しがエラーになるのは、互換性維持という本来の目的からすれば論外
後で引数名だけ異なるオーバーロードが増えたら名前付き引数を使っていない既存の呼び出しがエラーになるのは、互換性維持という本来の目的からすれば論外
235デフォルトの名無しさん
2025/05/06(火) 12:49:02.99ID:w/CyTLi+ 話題のderive_builderを使ってみた
構造体に属性を付けるだけで初期化関数を書かなくて済むのは便利だね
ドキュメント見ると今回は使ってないけど色々と機能が充実してるみたい
話題のred/green/blueはこれでいいのかな
use derive_builder::Builder;
#[derive(Default, Builder, Debug)]
struct Color {
#[builder(default = "0")]
red: u8,
#[builder(default = "0")]
green: u8,
#[builder(default = "0")]
blue: u8,
}
fn main() {
let pink = ColorBuilder::default().red(255).blue(200).build().unwrap();
println!("{pink:?}"); // Color { red: 255, green: 0, blue: 200 }
}
構造体に属性を付けるだけで初期化関数を書かなくて済むのは便利だね
ドキュメント見ると今回は使ってないけど色々と機能が充実してるみたい
話題のred/green/blueはこれでいいのかな
use derive_builder::Builder;
#[derive(Default, Builder, Debug)]
struct Color {
#[builder(default = "0")]
red: u8,
#[builder(default = "0")]
green: u8,
#[builder(default = "0")]
blue: u8,
}
fn main() {
let pink = ColorBuilder::default().red(255).blue(200).build().unwrap();
println!("{pink:?}"); // Color { red: 255, green: 0, blue: 200 }
}
236デフォルトの名無しさん
2025/05/06(火) 12:57:12.48ID:aXFsP9SC237デフォルトの名無しさん
2025/05/06(火) 13:06:06.15ID:w/CyTLi+238デフォルトの名無しさん
2025/05/06(火) 13:10:03.39ID:w/CyTLi+ 補足するとファイル名は必須項目だけど
コンパイル時にチェックできるのは型だけだから現実的にチェックできることはほとんどないよね
コンパイル時にチェックできるのは型だけだから現実的にチェックできることはほとんどないよね
239デフォルトの名無しさん
2025/05/06(火) 13:16:05.70ID:sXCqetJD お前らめちゃくちゃ暇人だな
レス多すぎ
レス多すぎ
240デフォルトの名無しさん
2025/05/06(火) 13:18:37.75ID:sXCqetJD241デフォルトの名無しさん
2025/05/06(火) 13:24:33.64ID:w/CyTLi+ ビルダー方式でも他の方式でもなんでもいいけど
初期化のための関数を自分で書くよりも>>235のように構造体への属性マクロ指定だけにするのがいいと思う
面倒がなくコードがすっきりとしてプログラミングミスも起きないから
初期化のための関数を自分で書くよりも>>235のように構造体への属性マクロ指定だけにするのがいいと思う
面倒がなくコードがすっきりとしてプログラミングミスも起きないから
242デフォルトの名無しさん
2025/05/06(火) 13:44:43.14ID:aXFsP9SC243デフォルトの名無しさん
2025/05/06(火) 13:46:48.63ID:ZZS2r6Zz 現時点のderive_builderはFooBuilder::new()に必須項目を渡すパターンには対応してないっぽいな
全部default()でも構わないケースだと使えるけどRegexBuilder::new(pattern)みたいなケースもあるから万能ではない
全部default()でも構わないケースだと使えるけどRegexBuilder::new(pattern)みたいなケースもあるから万能ではない
244デフォルトの名無しさん
2025/05/06(火) 13:53:00.39ID:K1Pjz07i 良い例があるな
https://mevius.5ch.net/test/read.cgi/tech/1643696741/33
貴方が配慮を欠いている
そのx^nつまりxのn乗を求めるにしても
例えば2^100を求めたいならば128bitがないと溢れるのでu128::pow(2, 100)となるが
2^5を求めたいだけで結果も8bitで十分ならばu8::pow(2, 5)となる
このようにメモリサイズも異なってくるので別々の関数が必要
もちろんu128::pow(x, n)があればu8::(x, n)をカバーできるが明らかに無駄である
そこで符号なし整数だけでも
u8::pow(x, n)
u16::pow(x, n)
u32::pow(x, n)
u64::pow(x, n)
u128::pow(x, n)
と5つの関数が必要となる
一方でxの型が確定しているのであればpowで再び型指定は不要なので
x.pow(n)と表記することも可能
以上は整数の場合だがxとpowの結果が小数の場合は2種類の関数が必要となる
f32::powi(x, n) 【nが整数の場合】
f32::powf(x, n) 【nも小数の場合】
もちろんnが小数のpowfだけあればpowiもカバーできるが明らかに無駄なので2種類必要となる
さらに32bit小数だけでなく64bit小数も扱う必要があるため以下も必要
f64::powi(x, n) 【nが整数の場合】
f64::powf(x, n) 【nも小数の場合】
これらもxの型が確定していれば以下のように略して書くことも可能
x.powi(n) 【nが整数の場合】
x.powf(n) 【nも小数の場合】
ちなみに「x^n」を表記するのに不自然な「pow(x, n)」よりも「x.pow(n)」の方がたまたま自然に見えるが誤差だろう
どちらでも好きな表記法を選べばよいだけにすぎない
https://mevius.5ch.net/test/read.cgi/tech/1643696741/33
貴方が配慮を欠いている
そのx^nつまりxのn乗を求めるにしても
例えば2^100を求めたいならば128bitがないと溢れるのでu128::pow(2, 100)となるが
2^5を求めたいだけで結果も8bitで十分ならばu8::pow(2, 5)となる
このようにメモリサイズも異なってくるので別々の関数が必要
もちろんu128::pow(x, n)があればu8::(x, n)をカバーできるが明らかに無駄である
そこで符号なし整数だけでも
u8::pow(x, n)
u16::pow(x, n)
u32::pow(x, n)
u64::pow(x, n)
u128::pow(x, n)
と5つの関数が必要となる
一方でxの型が確定しているのであればpowで再び型指定は不要なので
x.pow(n)と表記することも可能
以上は整数の場合だがxとpowの結果が小数の場合は2種類の関数が必要となる
f32::powi(x, n) 【nが整数の場合】
f32::powf(x, n) 【nも小数の場合】
もちろんnが小数のpowfだけあればpowiもカバーできるが明らかに無駄なので2種類必要となる
さらに32bit小数だけでなく64bit小数も扱う必要があるため以下も必要
f64::powi(x, n) 【nが整数の場合】
f64::powf(x, n) 【nも小数の場合】
これらもxの型が確定していれば以下のように略して書くことも可能
x.powi(n) 【nが整数の場合】
x.powf(n) 【nも小数の場合】
ちなみに「x^n」を表記するのに不自然な「pow(x, n)」よりも「x.pow(n)」の方がたまたま自然に見えるが誤差だろう
どちらでも好きな表記法を選べばよいだけにすぎない
245デフォルトの名無しさん
2025/05/06(火) 14:21:46.28ID:97zxA3f+246デフォルトの名無しさん
2025/05/06(火) 14:26:52.22ID:97zxA3f+ id変わってしまった
247デフォルトの名無しさん
2025/05/06(火) 14:30:10.65ID:97zxA3f+ 上の強烈な接続もビルダーパターンの一種かな?と思ってしまう
248デフォルトの名無しさん
2025/05/06(火) 15:04:10.81ID:46q0jEJS249デフォルトの名無しさん
2025/05/07(水) 00:06:42.37ID:oRVzsgHT250デフォルトの名無しさん
2025/05/07(水) 10:19:22.81ID:0n7pwB6u 後から〇〇2や〇〇exが増える問題ってRustだとどう対処するのが一般的なんだろう
まあRustの場合ABIを維持する必要のあるケースは比較的限られてるけど、引数増やしたら既存のソースは壊れるよね
最初から構造体にしておけというのは意味のない意見なので無しで
まあRustの場合ABIを維持する必要のあるケースは比較的限られてるけど、引数増やしたら既存のソースは壊れるよね
最初から構造体にしておけというのは意味のない意見なので無しで
251デフォルトの名無しさん
2025/05/07(水) 10:32:45.05ID:Gjm+c4fd 普通に関数が増える
252デフォルトの名無しさん
2025/05/07(水) 10:59:58.84ID:jrPMMEx+ >>250
ダイナミックリンクで提供する場合はバイナリ互換性が必要な場面も多いのは Rust でも変わらないよ。
言語の文化としてはスタティックリンクを使いがちではあるけど。
ダイナミックリンクは OS の機能なので言語の側からどうにか出来る余地も少ないし、 OS の文化に乗っかるしかない。
ダイナミックリンクで提供する場合はバイナリ互換性が必要な場面も多いのは Rust でも変わらないよ。
言語の文化としてはスタティックリンクを使いがちではあるけど。
ダイナミックリンクは OS の機能なので言語の側からどうにか出来る余地も少ないし、 OS の文化に乗っかるしかない。
253デフォルトの名無しさん
2025/05/07(水) 11:36:16.32ID:hcgUqjSt ○○exがある言語でJVMを実装し、○○exに依存してないと主張する
254デフォルトの名無しさん
2025/05/07(水) 13:51:32.15ID:nPKhYJKb Ubuntu 25.10から、sudoがsudo-rsに置き換わるそうだ
255デフォルトの名無しさん
2025/05/07(水) 14:09:26.72ID:jrPMMEx+ まあ Rust が良いかどうかはともかくたまには刷新したほうがええやろ。
256デフォルトの名無しさん
2025/05/07(水) 14:24:28.93ID:4cRsIVof いや、sudoのようなパフォーマンスが重要でないコマンドなら
RustではなくGoで書くべきだった
RustではなくGoで書くべきだった
257デフォルトの名無しさん
2025/05/07(水) 14:25:34.83ID:iQ9Crc5o どんなものでも機能も速さも同じだとしても
C/C++製よりRust製を選ぶわ
C/C++のせいでのセキュリティホールが後からいくらでも見つかってる現状
C/C++製よりRust製を選ぶわ
C/C++のせいでのセキュリティホールが後からいくらでも見つかってる現状
258デフォルトの名無しさん
2025/05/07(水) 14:27:05.51ID:iQ9Crc5o >>256
余分なランタイムが必要なGoはありえない
余分なランタイムが必要なGoはありえない
259デフォルトの名無しさん
2025/05/07(水) 14:50:13.61ID:sBD46f0F >>250
外部ライブラリならメジャーバージョン増やして普通に破壊する
旧バージョンのAPIをcompatモジュールとかに入れとけば親切
標準ライブラリはエディションで切り替える形になりそう
std::preludeのサブモジュール名は最初v1だったけど今はrust_20XXに方針転換してる
グローバルな名前の追加も一種の破壊だし
外部ライブラリならメジャーバージョン増やして普通に破壊する
旧バージョンのAPIをcompatモジュールとかに入れとけば親切
標準ライブラリはエディションで切り替える形になりそう
std::preludeのサブモジュール名は最初v1だったけど今はrust_20XXに方針転換してる
グローバルな名前の追加も一種の破壊だし
260デフォルトの名無しさん
2025/05/07(水) 15:20:58.49ID:7aByWlek 下記は全て2025年5月7日の記事
OpenAI、ChatGPTの6つのモデルの違いと適切なプロンプトを解説
https://news.mynavi.jp/techplus/article/20250507-3275757/
Microsoftの新規のソースコードの約3割をAIが生成、Nadella氏が明かす
https://news.mynavi.jp/techplus/article/20250507-3271749/
スコットランドの住民を悩ます謎の怪音「ヘブリディアン・ハム」の正体はいまだ不明
https://karapaia.com/archives/507130.html
OpenAI、ChatGPTの6つのモデルの違いと適切なプロンプトを解説
https://news.mynavi.jp/techplus/article/20250507-3275757/
Microsoftの新規のソースコードの約3割をAIが生成、Nadella氏が明かす
https://news.mynavi.jp/techplus/article/20250507-3271749/
スコットランドの住民を悩ます謎の怪音「ヘブリディアン・ハム」の正体はいまだ不明
https://karapaia.com/archives/507130.html
261デフォルトの名無しさん
2025/05/07(水) 18:35:48.88ID:hcgUqjSt モダンなライブラリはdeprecateしやすいのか
古いCと最新のRustだけが残されて中途半端な時代は無かったことになりそうだ
古いCと最新のRustだけが残されて中途半端な時代は無かったことになりそうだ
262デフォルトの名無しさん
2025/05/07(水) 19:03:14.70ID:3Nv7PA1l いや、利用者が少ないうちに直しとけ心理で、どんな技術も通る道だよ
sudo-rsがいい例だがこういう長期間にわたって重要な役割を果たす、かつあまり変更が必要とされない用途が増えてくると、だんだんと進化は遅くなるものだ
sudo-rsがいい例だがこういう長期間にわたって重要な役割を果たす、かつあまり変更が必要とされない用途が増えてくると、だんだんと進化は遅くなるものだ
263デルフォトの名無しさん
2025/05/07(水) 19:08:29.35ID:Ja3pQWVu264デフォルトの名無しさん
2025/05/07(水) 22:26:25.21ID:LUGJMjLo >>254
この国際的なプロジェクトでセキュリティ的に重要なものから順にRust化されていく一環だよ
Memory Safety for the Internet's most critical infrastructure
https://www.memorysafety.org/
この国際的なプロジェクトでセキュリティ的に重要なものから順にRust化されていく一環だよ
Memory Safety for the Internet's most critical infrastructure
https://www.memorysafety.org/
265デフォルトの名無しさん
2025/05/08(木) 09:08:51.16ID:8ptxnmrn >>244-245
このように.drop();
もちろん.drop();
そこで.drop();
一方で.drop();
以上は.drop();
もちろん.drop();
さらに.drop();
これらも.drop();
ちなみに.drop();
このように.drop();
もちろん.drop();
そこで.drop();
一方で.drop();
以上は.drop();
もちろん.drop();
さらに.drop();
これらも.drop();
ちなみに.drop();
266デフォルトの名無しさん
2025/05/08(木) 09:25:34.07ID:xZxJToWs ubuntuはsudoだけでなく、cp, ls, find, diff なんかもRust化する予定なんだな
ntpdもRust化が進められてる
ntpdもRust化が進められてる
267デフォルトの名無しさん
2025/05/08(木) 09:33:12.04ID:n2pO1y9P >>265
error[E0040]: explicit use of destructor method
help: consider using `drop` function
参考:https://doc.rust-lang.org/error_codes/E0040.html
error[E0040]: explicit use of destructor method
help: consider using `drop` function
参考:https://doc.rust-lang.org/error_codes/E0040.html
268デフォルトの名無しさん
2025/05/08(木) 10:28:22.03ID:1mgB1EfY >>266
Ubuntuに限らず誰もが全てをC/C++製から安全なRust製へ変えたいと思っているが一気には無理なので重要なものや新たなものからRust採用という感じ
Ubuntuに限らず誰もが全てをC/C++製から安全なRust製へ変えたいと思っているが一気には無理なので重要なものや新たなものからRust採用という感じ
269デフォルトの名無しさん
2025/05/08(木) 12:25:36.55ID:d06WSi70 全てを変えたい、とかいうビジョンは無意味
意味のないビジョンだよ
意味のないビジョンだよ
270デフォルトの名無しさん
2025/05/08(木) 12:38:14.55ID:jIG0GCL4 安全でないC/C++を早く全廃したい世界の流れ
271デフォルトの名無しさん
2025/05/08(木) 12:49:37.23ID:iRreO2Ee Linuxコマンド開発専用言語Rust
272デフォルトの名無しさん
2025/05/08(木) 12:51:53.54ID:Crcrgp42 メンテナ高齢化問題の対策としては良い取り組みなんじゃないかな
作業するのもインターンの学生が中心だろうし
作業するのもインターンの学生が中心だろうし
273デフォルトの名無しさん
2025/05/08(木) 12:55:02.85ID:Ad6EgOfh274デフォルトの名無しさん
2025/05/08(木) 13:05:00.97ID:8ptxnmrn コマンドツールがRustになってもAPIがRust用じゃない限り
CのAPIのラッパーでしかないけどそういう造りでもRust化したってカウントして良いのかは疑問
CのAPIのラッパーでしかないけどそういう造りでもRust化したってカウントして良いのかは疑問
275デフォルトの名無しさん
2025/05/08(木) 13:09:51.90ID:Ad6EgOfh276デフォルトの名無しさん
2025/05/08(木) 15:06:07.28ID:a6DlXdfJ こういうのってFedoraやらArchやらGentooあたりが人柱やってから普及していくものだと思ってたが…
Canonicalのくせに思い切ったことするなあ
Canonicalのくせに思い切ったことするなあ
277デフォルトの名無しさん
2025/05/08(木) 15:26:10.55ID:n2pO1y9P Ubuntuはカジュアル路線でしょ
初期状態だとrootも使えなかったと思う
他よりもsudoの負荷が大きい
初期状態だとrootも使えなかったと思う
他よりもsudoの負荷が大きい
278デフォルトの名無しさん
2025/05/08(木) 18:54:46.08ID:gU6gKsMd 5chは真の漢が使う言語perlで書かれている
279デフォルトの名無しさん
2025/05/08(木) 21:50:58.54ID:Ad6EgOfh 5chはperlだけでなくサーバも貧弱なのでキャッシュしてくれるCDNに頼らないと成り立たない
5chが利用しているCDNは>>273のCloudflareでRust製だよ
5chが利用しているCDNは>>273のCloudflareでRust製だよ
280デフォルトの名無しさん
2025/05/09(金) 00:22:05.59ID:tlxkaAFs281デフォルトの名無しさん
2025/05/09(金) 00:29:31.48ID:2I38bFbw 5chどうこうよりも
インターネットを支えるCDN世界トップシェアのCloudflareがRust化したインパクトが大きいよな
インターネットを支えるCDN世界トップシェアのCloudflareがRust化したインパクトが大きいよな
282デフォルトの名無しさん
2025/05/09(金) 00:31:49.35ID:tlxkaAFs そういう幼稚な書き込みはやめとけよw
283デフォルトの名無しさん
2025/05/09(金) 07:07:43.56ID:rj7v79QA284デフォルトの名無しさん
2025/05/09(金) 08:08:28.79ID:oZuZXuL3 クラウド界トップのAWSもRust製に
285デフォルトの名無しさん
2025/05/09(金) 10:14:04.36ID:52E7/scg AWSのプラットフォームはほぼJavaでしょ
ハードウェア寄りのローレベルな部分だけシステムプログラミング言語を使っていて、更にその中の一部でRustを使っているものもある、という程度
ハードウェア寄りのローレベルな部分だけシステムプログラミング言語を使っていて、更にその中の一部でRustを使っているものもある、という程度
286デフォルトの名無しさん
2025/05/09(金) 11:14:51.12ID:OK+uD+G+ https://japan.zdnet.com/article/35183866/
2022-02-22 14:31
Amazon Web Services(AWS)は、同社のエンジニアたちがプログラミング言語「Rust」を使っている大きな理由として、エネルギー効率の高さを挙げる。
Rustはメモリー安全性を高め、セキュリティ関連の不具合を減らす役に立つだけでなく、PythonやJavaよりもはるかに「エネルギー効率に優れている」という。
Amazonは、2025年までにデータセンターの100%を再生エネルギーでまかなうという目標を掲げ、データセンターの環境負荷の軽減に取り組んでいる。
Rustの採用はその一翼を担うという。
Rustで構築されたAWSサービスの例としては、コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、「Amazon Simple Storage Service(S3)」「Amazon Elastic Compute Cloud(EC2)」、コンテンツ配信ネットワーク「Amazon CloudFront」、LinuxベースのコンテナーOS「Bottlerocket」がある。
2022-02-22 14:31
Amazon Web Services(AWS)は、同社のエンジニアたちがプログラミング言語「Rust」を使っている大きな理由として、エネルギー効率の高さを挙げる。
Rustはメモリー安全性を高め、セキュリティ関連の不具合を減らす役に立つだけでなく、PythonやJavaよりもはるかに「エネルギー効率に優れている」という。
Amazonは、2025年までにデータセンターの100%を再生エネルギーでまかなうという目標を掲げ、データセンターの環境負荷の軽減に取り組んでいる。
Rustの採用はその一翼を担うという。
Rustで構築されたAWSサービスの例としては、コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、「Amazon Simple Storage Service(S3)」「Amazon Elastic Compute Cloud(EC2)」、コンテンツ配信ネットワーク「Amazon CloudFront」、LinuxベースのコンテナーOS「Bottlerocket」がある。
287デフォルトの名無しさん
2025/05/09(金) 11:17:44.85ID:/9qtDNkV 大半は既存のソフトウェアの組み合わせなんで、仮に自社内で書いているプログラムの全てを Rust で書いても割合としては数割ってところだろう。
ただ、これから割合が増えることはあっても減りはしないとは思う。
ただ、これから割合が増えることはあっても減りはしないとは思う。
288デフォルトの名無しさん
2025/05/09(金) 11:50:43.35ID:OnJLIdRJ Rustがこのままオワコンになったら撤廃もあり得るだろ
289デフォルトの名無しさん
2025/05/09(金) 11:56:12.65ID:Olh4o+f/ AWSもRust製か
Rust製のクラウドとJava製のクラウドが競争したらJava側が100%負けるだろうしな
Rust製のクラウドとJava製のクラウドが競争したらJava側が100%負けるだろうしな
290デフォルトの名無しさん
2025/05/09(金) 12:53:15.09ID:84hPiMCY クラウドってなに?
ハイパーバイザがrustで作り直されたの?
ハイパーバイザがrustで作り直されたの?
291デフォルトの名無しさん
2025/05/09(金) 14:06:44.17ID:uNK6cNVH292デフォルトの名無しさん
2025/05/09(金) 15:01:02.33ID:tXd4RgSB エネルギー効率に劣るJavaなんかで構築していたら笑うわ
>>286でもそう書いてるよな
>>286でもそう書いてるよな
293デフォルトの名無しさん
2025/05/09(金) 15:25:02.70ID:61qYlkzR Rustって人気なのね
AIにC#から移植できる?って聞いてみたらいやだって言われちゃったからRustが広まるの、なんか困る
AIにC#から移植できる?って聞いてみたらいやだって言われちゃったからRustが広まるの、なんか困る
294デフォルトの名無しさん
2025/05/09(金) 15:30:45.33ID:EODoJGlX JVM前提な特殊環境を除き
Rustの登場でJavaを使う意味は全くなくなった
Rustの登場でJavaを使う意味は全くなくなった
295デフォルトの名無しさん
2025/05/09(金) 15:41:48.51ID:xdbk/Yg/ 何の前提も縛りも無い環境こそが特殊
296デフォルトの名無しさん
2025/05/09(金) 15:59:06.67ID:U8gSLCWq コンテナ化は Java の有力なメリットだったけど Docker の隆盛で様変わりしちゃったね。
297デフォルトの名無しさん
2025/05/09(金) 18:53:55.90ID:lGkzhvel >>293
いやだと言うAI、なんかいいな
いやだと言うAI、なんかいいな
298デフォルトの名無しさん
2025/05/09(金) 22:11:52.71ID:dSLYIzJ3 >>291
サービス提供には安全性が一番重要なのでC++ではなくJavaを採用していた
Javaより安全で性能の良いRustが出現したため切り替えた
そしてAWSが発起人となってRust Foundationを設立した
サービス提供には安全性が一番重要なのでC++ではなくJavaを採用していた
Javaより安全で性能の良いRustが出現したため切り替えた
そしてAWSが発起人となってRust Foundationを設立した
299デフォルトの名無しさん
2025/05/10(土) 00:48:13.31ID:tNjV2wjQ Rustで戦う領域ではない気もするけど、エンタープライズ向けはまだ弱いと思う
ここはまだJavaや.NETの資産が大きい
「ファイルが見つかりません」みたいにユーザーの言語でエラーメッセージが出たり、文字列のソート (例えば「あアいイ」のように、ひらがなカタカナを考慮した自然な順になる) だったり、そういうのが外部ライブラリ無しで揃ってるのが Java や .NET なわけで
規模としては相対的に小さくなってるけど、こういうのが必要な領域は普通にあるし、Javaが消えることは無いと思う
ここはまだJavaや.NETの資産が大きい
「ファイルが見つかりません」みたいにユーザーの言語でエラーメッセージが出たり、文字列のソート (例えば「あアいイ」のように、ひらがなカタカナを考慮した自然な順になる) だったり、そういうのが外部ライブラリ無しで揃ってるのが Java や .NET なわけで
規模としては相対的に小さくなってるけど、こういうのが必要な領域は普通にあるし、Javaが消えることは無いと思う
300デフォルトの名無しさん
2025/05/10(土) 01:05:07.51ID:yPNtL6wL301デフォルトの名無しさん
2025/05/10(土) 01:42:38.39ID:JK+pyj3t ここでグチャグチャ言ってる間に徐々に置き換わって行きそうだな
302デフォルトの名無しさん
2025/05/10(土) 03:04:27.68ID:39sc/8ak firefoxが全部Rustに置き換わるのに100年ぐらい掛かりそうだけどな
303デフォルトの名無しさん
2025/05/10(土) 03:26:38.07ID:qt+KVMl5 止まってるFirefoxより
ChromeとIEが着々とRust化を進めてるから先だろな
ChromeとIEが着々とRust化を進めてるから先だろな
304デフォルトの名無しさん
2025/05/10(土) 08:39:56.30ID:tNjV2wjQ IE?
305デフォルトの名無しさん
2025/05/10(土) 08:45:29.97ID:K3qP9/A2 >>300
何でこいつ偉そうなんだ?
何でこいつ偉そうなんだ?
306デフォルトの名無しさん
2025/05/10(土) 08:47:09.62ID:APagMvUq >>299
人月業界は考えるだけ無駄として、SaaSだと新規開発は圧倒的にフルスタックTypeScriptが多いね
Rustは海外では革新的なDB作るぜみたいなエンタープライズの基盤系スタートアップでの採用例は見かけるが、国内ではその手のスタートアップは皆無に近いから絶望的な状況
人月業界は考えるだけ無駄として、SaaSだと新規開発は圧倒的にフルスタックTypeScriptが多いね
Rustは海外では革新的なDB作るぜみたいなエンタープライズの基盤系スタートアップでの採用例は見かけるが、国内ではその手のスタートアップは皆無に近いから絶望的な状況
307デフォルトの名無しさん
2025/05/10(土) 09:09:05.25ID:B2q0uvrQ 品質に関する考え方は良い要素を揃えれば良くなるという単純なものじゃないよ。
結局のところ、どんな問題が出てくるかは事前にわからない。
出てきた問題に対処し続けるという歴史によって品質が作られるんだ。
確かに C や C++ に比べて Rust は全面的に良いけれども、活発な巨大プロジェクトではもう問題に対処しつくしていて Rust に置き換えるメリットは相対的に小さい。
部分的に Rust に置き換えることはあっても問題が起こってない箇所まで含めて全面書き換えを目指すのは割に合わない。
結局のところ、どんな問題が出てくるかは事前にわからない。
出てきた問題に対処し続けるという歴史によって品質が作られるんだ。
確かに C や C++ に比べて Rust は全面的に良いけれども、活発な巨大プロジェクトではもう問題に対処しつくしていて Rust に置き換えるメリットは相対的に小さい。
部分的に Rust に置き換えることはあっても問題が起こってない箇所まで含めて全面書き換えを目指すのは割に合わない。
308デフォルトの名無しさん
2025/05/10(土) 09:11:51.42ID:R8e2Bn+8 >>306
サーバーサイドでTypeScriptを使っているようでは負けるわ
サーバーサイドでTypeScriptを使っているようでは負けるわ
309デフォルトの名無しさん
2025/05/10(土) 09:22:18.39ID:tNjV2wjQ >>308
「負ける」というのは何において?
Rustで実装すると、そのサービスは使いやすくなったり、機能豊富になったり、プロトタイプを高速に作ったり、ユーザーの要望をより速く実現できたりするの?
勝ち負けが決まるのって、サービスの内容、ユーザー体験、リリース速度などが重要で、それを実現できるなら言語自体はさほど重要でない
TypeScriptはエコシステムが充実してるから、それに乗っかるのは一つの選択
(バックエンドTSはつらい点もあるから、他の技術を持ってるところなら他のものの方が良いと個人的には思うけど、そういう選択肢が世の中にあって割と普通に受け入れられてるのは現実として理解してる)
「負ける」というのは何において?
Rustで実装すると、そのサービスは使いやすくなったり、機能豊富になったり、プロトタイプを高速に作ったり、ユーザーの要望をより速く実現できたりするの?
勝ち負けが決まるのって、サービスの内容、ユーザー体験、リリース速度などが重要で、それを実現できるなら言語自体はさほど重要でない
TypeScriptはエコシステムが充実してるから、それに乗っかるのは一つの選択
(バックエンドTSはつらい点もあるから、他の技術を持ってるところなら他のものの方が良いと個人的には思うけど、そういう選択肢が世の中にあって割と普通に受け入れられてるのは現実として理解してる)
310デフォルトの名無しさん
2025/05/10(土) 09:29:02.26ID:TSWWK3ZE >>307
未だにC/C++が原因のセキュリティ脆弱性報告が常に何件も出続けている現実を見なきゃ
未だにC/C++が原因のセキュリティ脆弱性報告が常に何件も出続けている現実を見なきゃ
311デフォルトの名無しさん
2025/05/10(土) 09:43:16.06ID:203d4oBt312デフォルトの名無しさん
2025/05/10(土) 09:49:57.08ID:DZgbwKL1 仮に外部ライブラリを使ってもRustはエンプラには向かないでしょ
この分野はオラクルやMicrosoftのような企業が時間かけて作ったきたからできたもので、現状Rustはこの分野向けのライブラリが充実してるわけでもないし、Rustコミュニティが力を入れるとも思えない (したとしても優先度は低い)
それに、安定性や将来の入手性が最も必要な分野で、多くの部分をOSSに頼るというのは業界として受け入れないと思う
(昨今OSS絡みの事件は多い)
低レイヤやWebバックエンドなど、Rustが強みになる分野があるのはその通り
この分野はオラクルやMicrosoftのような企業が時間かけて作ったきたからできたもので、現状Rustはこの分野向けのライブラリが充実してるわけでもないし、Rustコミュニティが力を入れるとも思えない (したとしても優先度は低い)
それに、安定性や将来の入手性が最も必要な分野で、多くの部分をOSSに頼るというのは業界として受け入れないと思う
(昨今OSS絡みの事件は多い)
低レイヤやWebバックエンドなど、Rustが強みになる分野があるのはその通り
313デフォルトの名無しさん
2025/05/10(土) 09:51:04.61ID:K3qP9/A2 >>310
それでも何十年もc++が捨てられずに使われているのはなぜかと考えたことはないのか?
それでも何十年もc++が捨てられずに使われているのはなぜかと考えたことはないのか?
314デフォルトの名無しさん
2025/05/10(土) 09:52:37.21ID:12iOKYOz ひらがなカタカナ交じりの自然なソートなんて
今更Rustで描いても半日もかからんやろ
今更Rustで描いても半日もかからんやろ
315デフォルトの名無しさん
2025/05/10(土) 09:57:05.62ID:203d4oBt c++はrustに勝てる点が全くなく既存資産だけが頼みの綱で終わりでしょう
巨大な既存資産だけは消えるまでに時間がかかることでしょう
巨大な既存資産だけは消えるまでに時間がかかることでしょう
316デフォルトの名無しさん
2025/05/10(土) 10:00:12.38ID:K3qP9/A2 超超超熟練度が必要なCOBOLになる
C、C++、COBOL まとめてC*
C、C++、COBOL まとめてC*
317デフォルトの名無しさん
2025/05/10(土) 10:05:17.70ID:tNjV2wjQ >>314
漢字も当然含むし、ロシア語や中国語などを含む世界の多数の言語にも対応する必要もあるぞ?
時刻や日時の表記も国によって違う
Javaや.NETはランタイムが大きいと言われるけど、その中にはこういうのも含まれる
手間も大きいし、この分野を再実装するのも面倒でしょ
(自分が知らないだけで、既にそういう取り組みがあるのかもしれないけど)
漢字も当然含むし、ロシア語や中国語などを含む世界の多数の言語にも対応する必要もあるぞ?
時刻や日時の表記も国によって違う
Javaや.NETはランタイムが大きいと言われるけど、その中にはこういうのも含まれる
手間も大きいし、この分野を再実装するのも面倒でしょ
(自分が知らないだけで、既にそういう取り組みがあるのかもしれないけど)
318デフォルトの名無しさん
2025/05/10(土) 10:08:42.67ID:K3qP9/A2 .NETでソートサーバを作ってそれにソートさせて結果をrustで使う
319デフォルトの名無しさん
2025/05/10(土) 10:09:24.80ID:fdsy2R9k 日本だとエンプラよりは自動車の方が早いかもね
ボルボにはもう入ってるし10年以内にトヨタ車に入るくらいならあり得るかも
ボルボにはもう入ってるし10年以内にトヨタ車に入るくらいならあり得るかも
320デフォルトの名無しさん
2025/05/10(土) 10:17:39.16ID:K3qP9/A2 システム周りでは標準で使われて、それ以外は他の言語の下請けになるのかと思ったが実際は違うと言うことか?
システム周りにもかかわらず外部に依存が必要であれば使われない
ライブラリが充実しないと完全な下請けにはなれず、c++のDLLのように一部高速化部位での限定利用になる
システム周りにもかかわらず外部に依存が必要であれば使われない
ライブラリが充実しないと完全な下請けにはなれず、c++のDLLのように一部高速化部位での限定利用になる
321デフォルトの名無しさん
2025/05/10(土) 10:26:23.15ID:TkZSyEZj 証券取引みたいに、最高のパフォーマンスと最高の信頼性が求められるガチな領域もエンタープライズにあるのは事実で、
内部的にRustを使っているところがあってもおかしくはないが、そういうのって性質上外に情報が出てこないから盛り上がんないんだよね
自動運転もそうだけど、限界の性能を出そうとすると結局は頭の良い人間を上に据えたスペースシャトル型の厳格なウォーターフォールになるんで、夢がなくてつまらないという面も
内部的にRustを使っているところがあってもおかしくはないが、そういうのって性質上外に情報が出てこないから盛り上がんないんだよね
自動運転もそうだけど、限界の性能を出そうとすると結局は頭の良い人間を上に据えたスペースシャトル型の厳格なウォーターフォールになるんで、夢がなくてつまらないという面も
322デフォルトの名無しさん
2025/05/10(土) 10:38:30.67ID:B2q0uvrQ COBOL なんか古代の遺物みたいに言われつつもかなり広くつかわれてるもんな……
323デフォルトの名無しさん
2025/05/10(土) 10:44:10.80ID:M/F23qJj 最高のパフォーマンスを出すにはC/C++/Rustしかない
安全性を満たすRustは唯一の存在
これから少なくとも数十年間は天下を取るのだろう
安全性を満たすRustは唯一の存在
これから少なくとも数十年間は天下を取るのだろう
324デフォルトの名無しさん
2025/05/10(土) 10:52:25.23ID:b8JFbEp9 >>303
EDGEか
EDGEか
325デフォルトの名無しさん
2025/05/10(土) 10:55:11.42ID:B2q0uvrQ AI が台頭してから電力使用量が劇的に伸びてるからな。
自動車の運転を人間のプロ水準で自動化するなら動力と同じくらいの電力が計算に必要という見積りもある。
AI がまだまだ伸びる分野なら効率は重要だ。
これはコストがどうのとかいうレベルではなくコストをかけても無いものは無い (足りない) という深刻な話で、プラットフォームを担う業者がいっせいに Rust に注目しているのも無理からぬことなのかもしれぬ。
自動車の運転を人間のプロ水準で自動化するなら動力と同じくらいの電力が計算に必要という見積りもある。
AI がまだまだ伸びる分野なら効率は重要だ。
これはコストがどうのとかいうレベルではなくコストをかけても無いものは無い (足りない) という深刻な話で、プラットフォームを担う業者がいっせいに Rust に注目しているのも無理からぬことなのかもしれぬ。
326デフォルトの名無しさん
2025/05/10(土) 11:33:01.79ID:SCGzG6Ua そんな見積もり知らんけど50wでLv5運転できる人間が最高だな
327デフォルトの名無しさん
2025/05/10(土) 13:30:52.43ID:+8W9QSNf やったことないけど組み込みの世界ではどうなの
Rust使われてる?
Rust使われてる?
328デフォルトの名無しさん
2025/05/10(土) 13:34:10.15ID:gWEfPBXM トヨタはこの前、Rustで求人広告出してたじゃん
329デフォルトの名無しさん
2025/05/10(土) 13:36:27.29ID:zAVOQ4IK 組み込みはRustが多いですね
新規案件は殆どがRust
単品ではmrubyが多いですね
新規案件は殆どがRust
単品ではmrubyが多いですね
330デフォルトの名無しさん
2025/05/10(土) 14:07:29.73ID:tG+fugNq トヨタ系は基本的に愛知勤務だからな
Rustでもなんでも使って求人票を飾らないと厳しいんだろう
Rustでもなんでも使って求人票を飾らないと厳しいんだろう
331デフォルトの名無しさん
2025/05/10(土) 14:11:56.01ID:USkPlt1I Rust使えるなら都落ちして田舎で開発するのも悪くないかも
今はたいていタイプスクリプトばっかだから変化が欲しい
今はたいていタイプスクリプトばっかだから変化が欲しい
332デフォルトの名無しさん
2025/05/10(土) 14:50:39.44ID:tNjV2wjQ TSはフロント側とサーバー側を包括するフレームワークがあるのが強いんだよね
APIを定義してフロント側とバック側を区切る開発なら、バック側はコンパイルされるものが良いというのは同意なんだけど
TSを使うメリットがないと主張してる人は、こういう技術を知らないか、机上論を述べたいだけで実際の開発はしないから生産性など関係ないという人でしょ
APIを定義してフロント側とバック側を区切る開発なら、バック側はコンパイルされるものが良いというのは同意なんだけど
TSを使うメリットがないと主張してる人は、こういう技術を知らないか、机上論を述べたいだけで実際の開発はしないから生産性など関係ないという人でしょ
333デフォルトの名無しさん
2025/05/10(土) 15:01:33.78ID:M/F23qJj334デフォルトの名無しさん
2025/05/10(土) 15:17:51.64ID:TkZSyEZj 今のWeb開発では、独立したバックエンドAPIはオプションだからね
Next.jsでサーバーサイドロジックが存在するのがデフォなので、よほどCPU intensiveな処理でない限りは、
Rustで別途独立したバックエンドを作ることはかえって遅延とコストを増大させる
フロントエンドまでRustエンジニアが自分で面倒見るってんなら好きにすりゃいいけど、
Rustエンジニアがフロントエンドやりたいかねえ
Next.jsでサーバーサイドロジックが存在するのがデフォなので、よほどCPU intensiveな処理でない限りは、
Rustで別途独立したバックエンドを作ることはかえって遅延とコストを増大させる
フロントエンドまでRustエンジニアが自分で面倒見るってんなら好きにすりゃいいけど、
Rustエンジニアがフロントエンドやりたいかねえ
335デフォルトの名無しさん
2025/05/10(土) 15:25:32.84ID:K3qP9/A2 フロントとバックエンドで常に齟齬が無ければいいんだけどと言う話になるとTSが出てくる
336デフォルトの名無しさん
2025/05/10(土) 15:32:42.03ID:M/F23qJj337デフォルトの名無しさん
2025/05/10(土) 15:45:18.30ID:Mv0kFcWv338デフォルトの名無しさん
2025/05/10(土) 15:49:00.61ID:tNjV2wjQ Wasmはサイズがね…
ごく最近のニュースだと、Prismaが実装をRustからTypeScriptに置き換えたのが話題になってたな
デプロイ時のサイズが問題になる分野だから妥当ではあるけど
フロントだとビルド時間の長さが課題になりそう
UIの位置やサイズを微調整したい場合でも、確認のために毎回重ためのビルドが必要になると面倒じゃない?
ごく最近のニュースだと、Prismaが実装をRustからTypeScriptに置き換えたのが話題になってたな
デプロイ時のサイズが問題になる分野だから妥当ではあるけど
フロントだとビルド時間の長さが課題になりそう
UIの位置やサイズを微調整したい場合でも、確認のために毎回重ためのビルドが必要になると面倒じゃない?
339デフォルトの名無しさん
2025/05/10(土) 15:54:13.08ID:Mv0kFcWv >>338
UI 記述言語で書いて形になってから Wasm (にコンパイル可能なプログラミング言語) に変換するような仕組みもある。
UI 記述言語で書いて形になってから Wasm (にコンパイル可能なプログラミング言語) に変換するような仕組みもある。
340デフォルトの名無しさん
2025/05/10(土) 15:57:42.52ID:JFaFsVis341デフォルトの名無しさん
2025/05/10(土) 16:03:27.89ID:M/F23qJj >>339
色んなパターンのうちそのUI記述言語を採用してのSSG/CSRのレンダリングコード共通化が有力の一つだよね
サーバーサイドからJavaScriptを完全排除してパフォーマンスを上げる方向性が正しいので
色んなパターンのうちそのUI記述言語を採用してのSSG/CSRのレンダリングコード共通化が有力の一つだよね
サーバーサイドからJavaScriptを完全排除してパフォーマンスを上げる方向性が正しいので
342デフォルトの名無しさん
2025/05/10(土) 17:37:33.64ID:K3qP9/A2 web開発の現場に言ってRustとwasmの組合せを使いなさいと言っても鼻で笑われるだけ
343デフォルトの名無しさん
2025/05/10(土) 17:57:46.62ID:GFzLbQz1 精神障害児で周りを振り回す無能です。
この業界で俺は死ぬかも。
悲しみ
この業界で俺は死ぬかも。
悲しみ
344デフォルトの名無しさん
2025/05/10(土) 17:58:59.59ID:GFzLbQz1 自慢したりとか怒ると自分の首を絞める。
死ぬ。
俺はプログラミング向いてないが、この業界に行くぞ。
どうも死んだほうが良い人間です。
死ぬ。
俺はプログラミング向いてないが、この業界に行くぞ。
どうも死んだほうが良い人間です。
345デフォルトの名無しさん
2025/05/10(土) 18:01:36.75ID:GFzLbQz1 rustも分からんし三年間学んでプログラム書けない無能です。
質問ある?
質問ある?
346デフォルトの名無しさん
2025/05/10(土) 18:01:51.09ID:GFzLbQz1 もちろんrustも分からん。
347デフォルトの名無しさん
2025/05/10(土) 18:03:05.22ID:K3qP9/A2 rust is must
348デフォルトの名無しさん
2025/05/10(土) 18:03:13.86ID:GFzLbQz1 そもそもこの世の中教えてくれない人が悪いと奥底で思っている無能。
人との縁を切って一人で後悔しがち。
ゴミ人間だよ!
人との縁を切って一人で後悔しがち。
ゴミ人間だよ!
349デフォルトの名無しさん
2025/05/10(土) 18:04:21.67ID:GFzLbQz1 俺はガイジだ…
ガイガイガイジのガガイのガイ。
ガイジのボッチのやる気のある無能。
ゴミカス死んだほうが良い。
ガイガイガイジのガガイのガイ。
ガイジのボッチのやる気のある無能。
ゴミカス死んだほうが良い。
350デフォルトの名無しさん
2025/05/10(土) 18:05:59.49ID:GFzLbQz1 がががーがががががががががががが~が~が~障害児
351デフォルトの名無しさん
2025/05/10(土) 18:06:29.45ID:GFzLbQz1 我はガイジガガガイジ天地入れざる障害児
352デフォルトの名無しさん
2025/05/10(土) 18:11:29.44ID:K3qP9/A2 不勉強で天地入れざると言う言葉を知らなかったが
明治とかの言葉なのかな?
学があるね
明治とかの言葉なのかな?
学があるね
353デフォルトの名無しさん
2025/05/10(土) 18:22:28.75ID:GFzLbQz1354デフォルトの名無しさん
2025/05/10(土) 18:23:33.01ID:K3qP9/A2 どうせ俺以外誰も見ていないから好きなだけ荒らせばいいと思うよ
355デフォルトの名無しさん
2025/05/10(土) 18:23:55.63ID:GFzLbQz1 おちつきました。すみませんでした…
356デフォルトの名無しさん
2025/05/10(土) 18:29:52.94ID:Mv0kFcWv357デフォルトの名無しさん
2025/05/10(土) 18:58:55.45ID:Pq21kD+5 夏休みはまだ早いぞ
358デフォルトの名無しさん
2025/05/10(土) 19:15:47.47ID:K3qP9/A2 業界には何らかの形でメンタルを病んでる人間が50万人以上いると思う
359デフォルトの名無しさん
2025/05/10(土) 19:53:17.55ID:39sc/8ak このスレは特殊だから騙されないように
360デフォルトの名無しさん
2025/05/10(土) 20:19:31.95ID:K3qP9/A2 自分は悪質でなければ荒らしを許容するスレにいた
そこでは荒らしとも楽しく話してそのうち荒らしが真面目なコテになったりしていた
みんなもうどこかに行ってしまったのが残念だけどそれも運命だなと
そこでは荒らしとも楽しく話してそのうち荒らしが真面目なコテになったりしていた
みんなもうどこかに行ってしまったのが残念だけどそれも運命だなと
361デフォルトの名無しさん
2025/05/10(土) 20:45:49.44ID:+8W9QSNf 病院行けよ
俺は今日行ったぞ
俺は今日行ったぞ
362デフォルトの名無しさん
2025/05/10(土) 21:12:29.85ID:RAkiMuTX unsafeなライブラリのラッパーでsafeに設計するのってどうやるの
363デフォルトの名無しさん
2025/05/10(土) 21:22:13.51ID:JK+pyj3t F-22 ada
F-35 C++
F-35 C++
364デフォルトの名無しさん
2025/05/10(土) 21:48:52.45ID:Mv0kFcWv365デフォルトの名無しさん
2025/05/10(土) 21:52:02.98ID:arKsDnK7 >>362
未定義動作の可能性を排除するために必要な条件を全部チェックする
panicとデッドロックはOKらしい(停止すれば許される)
No matter what, Safe Rust can't cause Undefined Behavior.
https://doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
未定義動作の可能性を排除するために必要な条件を全部チェックする
panicとデッドロックはOKらしい(停止すれば許される)
No matter what, Safe Rust can't cause Undefined Behavior.
https://doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
366デフォルトの名無しさん
2025/05/10(土) 22:22:13.21ID:M/F23qJj >>342
そういう低レベルな現場は無視してもいいんだよ
現在もJSのフレームワークは乱立しながら変化進化し続けているように多様性がある
今回の件と関係なくwasmを既に併用しているところも多いからその点もだいじょうぶ
そういう低レベルな現場は無視してもいいんだよ
現在もJSのフレームワークは乱立しながら変化進化し続けているように多様性がある
今回の件と関係なくwasmを既に併用しているところも多いからその点もだいじょうぶ
367デフォルトの名無しさん
2025/05/10(土) 22:48:31.18ID:K3qP9/A2 誰がその多様性とかについていくのか?
お前が低レベルな現場と呼ぶ環境だろう?
お前が低レベルな現場と呼ぶ環境だろう?
368デフォルトの名無しさん
2025/05/10(土) 23:29:16.41ID:tNjV2wjQ フロントにRustを使ってる「高レベル」なプロダクトって何があるの?
バックエンドなら分かるけど
その基準なら世の中のビジネス的に成功してるサービスの殆どが低レベルでしょ
バックエンドなら分かるけど
その基準なら世の中のビジネス的に成功してるサービスの殆どが低レベルでしょ
369デフォルトの名無しさん
2025/05/11(日) 00:02:17.99ID:1LIDIycD370デフォルトの名無しさん
2025/05/11(日) 00:43:43.27ID:qcGHvz/x 子供が使うバリアの高度版
371デフォルトの名無しさん
2025/05/11(日) 00:48:37.35ID:kSJwinQr 内部で使う関数がunsafeである理由を理解して未定義動作の可能性を排除できてないなら
外側の関数にもunsafeをつける約束
外側の関数にもunsafeをつける約束
372デフォルトの名無しさん
2025/05/11(日) 00:49:47.08ID:/xxB2yrb unsafeは「危険」というよりも「コンパイラが安全性をチェックできない」ブロックだと思う
内部的に unsafe を使ってても、ラップした型や関数を外から使う分には安全とみなせるなら問題ない
理想的には
・内部的にunsafeを使っているけど、外から見れば安全 -> unsafe を外して良い
・内部的に unsafe を使っており、かつその関数は利用者が適切にコードを書かないと危険 -> その関数も unsafe とマークするべき
標準ライブラリやきちんとしたライブラリは基本的にこの法則に従ってる
問題はユーザーのコードで、書こうと思えば「問題はあるけど unsafe とマークされてない関数」は作れてしまう
そこは自己責任の問題
けど、セグフォみたいなバグが実際に起きた場合に、直接の原因となるコードは unsafe ブロックの中に絞れる (ことが多い) から、それでもかなりマシだと思う
C++だとコード全体が unsafe ブロックの中にあるようなものなので…
内部的に unsafe を使ってても、ラップした型や関数を外から使う分には安全とみなせるなら問題ない
理想的には
・内部的にunsafeを使っているけど、外から見れば安全 -> unsafe を外して良い
・内部的に unsafe を使っており、かつその関数は利用者が適切にコードを書かないと危険 -> その関数も unsafe とマークするべき
標準ライブラリやきちんとしたライブラリは基本的にこの法則に従ってる
問題はユーザーのコードで、書こうと思えば「問題はあるけど unsafe とマークされてない関数」は作れてしまう
そこは自己責任の問題
けど、セグフォみたいなバグが実際に起きた場合に、直接の原因となるコードは unsafe ブロックの中に絞れる (ことが多い) から、それでもかなりマシだと思う
C++だとコード全体が unsafe ブロックの中にあるようなものなので…
373デフォルトの名無しさん
2025/05/11(日) 00:50:52.82ID:10YJ6Wg3 >>365
Undefinedの有無もなにも標準化されてないからなぁ
Undefinedの有無もなにも標準化されてないからなぁ
374デフォルトの名無しさん
2025/05/11(日) 00:52:29.93ID:qcGHvz/x バリア!バリアしたから大丈夫!
375デフォルトの名無しさん
2025/05/11(日) 01:02:20.84ID:kSJwinQr376デフォルトの名無しさん
2025/05/11(日) 01:18:27.03ID:OAc7wOSx unsafe = Rustコンパイラが安全性を保証してくれない = プログラマが自分の責任で安全性を保証しなければならない = C/C++と同じ状態
逆に言えば、safeつまりunsafeではない、とは、Rustコンパイラが安全性を保証できる状況にしないといけない
未定義動作がないことが根幹にある
だから未定義動作とは何か、どういう時に起きるのか、どうすれば無くせるのか、が最重要
それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
逆に言えば、safeつまりunsafeではない、とは、Rustコンパイラが安全性を保証できる状況にしないといけない
未定義動作がないことが根幹にある
だから未定義動作とは何か、どういう時に起きるのか、どうすれば無くせるのか、が最重要
それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
377デフォルトの名無しさん
2025/05/11(日) 01:20:41.47ID:Vd6Ddgx+ unsafe functionは使いどころが微妙だね
unsafe指定の理由が不明だし基準も開発者次第でまちまち
C#みたいにunsafeにはコンテキストとしての役割しか持たせない方が一貫性がある
呼び出し元に注意させたいんならunsafe_hogeみたいなネーミングルールで十分だった
unsafe指定の理由が不明だし基準も開発者次第でまちまち
C#みたいにunsafeにはコンテキストとしての役割しか持たせない方が一貫性がある
呼び出し元に注意させたいんならunsafe_hogeみたいなネーミングルールで十分だった
378デフォルトの名無しさん
2025/05/11(日) 01:31:46.55ID:kSJwinQr バリアより感染症対策で流行ったゾーニングのイメージだな
感染リスクのあるunsafeゾーンと安全なsafeゾーンがあって
unsafeからsafeに持ち込むときは消毒(検査)が必須みたいな感じ
運用が雑になって事故るのも同じ
感染リスクのあるunsafeゾーンと安全なsafeゾーンがあって
unsafeからsafeに持ち込むときは消毒(検査)が必須みたいな感じ
運用が雑になって事故るのも同じ
379デフォルトの名無しさん
2025/05/11(日) 01:36:40.21ID:/xxB2yrb >>376
> それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
それをやると、一つの関数を unsafe にした時点でそれが呼び出し元に波及して、プログラム全体に unsafe が広がらない?
深刻なバグがコード内のどこで起こってるかを特定したい場面だと、 unsafeは本当に unsafe な操作をしてる箇所に限定されてた方が探しやすいと思う
> それを完全に理解するまでは、関数内部でunsafeを使って外をsafeな関数、にする判断をしてはいけない
それをやると、一つの関数を unsafe にした時点でそれが呼び出し元に波及して、プログラム全体に unsafe が広がらない?
深刻なバグがコード内のどこで起こってるかを特定したい場面だと、 unsafeは本当に unsafe な操作をしてる箇所に限定されてた方が探しやすいと思う
380デフォルトの名無しさん
2025/05/11(日) 01:47:17.60ID:OAc7wOSx381デフォルトの名無しさん
2025/05/11(日) 02:07:37.23ID:OAc7wOSx 「unsafe利用箇所をunsafeブロックで囲えば終わり」は、よくある勘違い
まず一次的には「それを含む関数もunsafe fnにしなければならない」が正解
その上で「内部でunsafeを使ったことで生じる問題が、その関数単独でまたはモジュール全体で閉じ込めることができているかを判断できてから、ようやくunsafe fnをfnにできる」が正解
まず一次的には「それを含む関数もunsafe fnにしなければならない」が正解
その上で「内部でunsafeを使ったことで生じる問題が、その関数単独でまたはモジュール全体で閉じ込めることができているかを判断できてから、ようやくunsafe fnをfnにできる」が正解
382デフォルトの名無しさん
2025/05/11(日) 06:19:57.03ID:Skl5F9WB unsafeな理由をブロック外部で処理すりゃsafeに出来るじゃん
たとえばなraw pointer参照が危険だとして渡す前にスタックまたはヒープ内の正しいアドレスであることを確認して引数を渡すとかの、外部でのチェック(unsafeに至る条件の排除)すれば無毒化できるわけで
そんなんC言語だって変わらんやん。Cで汎用的な関数書いたらほぼほぼポインターだらけになるし、ポインターのチェックせずに使うなんてことは危険すぎてありえんのと一緒やん
C言語にrustコンパイラーのunsafeの枠組みだけ組み込んでsafeじゃなきゃエラーにしますにしたら、コードの5割ぐらいはunsafeになってそうやけどな。標準ライブラリーからしていくらでも危険なアクセスできるし
たとえばなraw pointer参照が危険だとして渡す前にスタックまたはヒープ内の正しいアドレスであることを確認して引数を渡すとかの、外部でのチェック(unsafeに至る条件の排除)すれば無毒化できるわけで
そんなんC言語だって変わらんやん。Cで汎用的な関数書いたらほぼほぼポインターだらけになるし、ポインターのチェックせずに使うなんてことは危険すぎてありえんのと一緒やん
C言語にrustコンパイラーのunsafeの枠組みだけ組み込んでsafeじゃなきゃエラーにしますにしたら、コードの5割ぐらいはunsafeになってそうやけどな。標準ライブラリーからしていくらでも危険なアクセスできるし
383デフォルトの名無しさん
2025/05/11(日) 07:03:44.41ID:Ix0M85KV >>382
Rustでプログラミングしたことない人には理解できないのは仕方ないが的外れ
そのCで手動でチェックをして使うようなことは
Rustではunsafeを使わずとも普通に書くことができて自動的にチェックしてくれて安全かつ楽
むしろRustでunsafeを使う頻出パターンの一つは真逆
その自動チェックを無くすためにunsafeが使われる
例えばあるアルゴリズムで既に自動チェックされて既に安全なものがアルゴリズムの都合で二重に自動チェックされてしまいコンパイルでの最適化でも消えないとする
その2回目の自動チェックを無くすためにunsafeを使う
もしそのアルゴリズムが1つの関数で完了するならばその関数外に影響はないため
関数内部でunsafeを使っていても関数自体は外向けにsafeにすることができる
そのアルゴリズムで2回目の自動チェック省略が常に正しく安全なことはプログラマが安全性を保証することになる
これがunsafeを用いて極限まで速くしつつ安全な関数を生み出すRustの典型的なパターン
Rustでプログラミングしたことない人には理解できないのは仕方ないが的外れ
そのCで手動でチェックをして使うようなことは
Rustではunsafeを使わずとも普通に書くことができて自動的にチェックしてくれて安全かつ楽
むしろRustでunsafeを使う頻出パターンの一つは真逆
その自動チェックを無くすためにunsafeが使われる
例えばあるアルゴリズムで既に自動チェックされて既に安全なものがアルゴリズムの都合で二重に自動チェックされてしまいコンパイルでの最適化でも消えないとする
その2回目の自動チェックを無くすためにunsafeを使う
もしそのアルゴリズムが1つの関数で完了するならばその関数外に影響はないため
関数内部でunsafeを使っていても関数自体は外向けにsafeにすることができる
そのアルゴリズムで2回目の自動チェック省略が常に正しく安全なことはプログラマが安全性を保証することになる
これがunsafeを用いて極限まで速くしつつ安全な関数を生み出すRustの典型的なパターン
384デフォルトの名無しさん
2025/05/11(日) 08:49:42.45ID:tAEYEseM https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html
これが全て
unsafe function に関しては、長文複おじが主張するほどunsafeを含む関数に対して積極的に指定すべきものではなく、
むしろ極力safeとしてラップすることを推奨するトーンで書かれているように感じる
「unsafe functionは呼び出し元に注意させるためのマーク」という解釈は適切であり、常識的に考えて中でunsafe使ってようと呼び方によって未定義動作が生じるような関数はそもそも作るべきではない
これが全て
unsafe function に関しては、長文複おじが主張するほどunsafeを含む関数に対して積極的に指定すべきものではなく、
むしろ極力safeとしてラップすることを推奨するトーンで書かれているように感じる
「unsafe functionは呼び出し元に注意させるためのマーク」という解釈は適切であり、常識的に考えて中でunsafe使ってようと呼び方によって未定義動作が生じるような関数はそもそも作るべきではない
385デフォルトの名無しさん
2025/05/11(日) 09:06:54.66ID:qcGHvz/x unsafe指定の理由が不明って斬新な視点だと思うけどね
他の言語でunsafe使ってるから意味は理解出来る
他の言語でunsafe使ってるから意味は理解出来る
386デフォルトの名無しさん
2025/05/11(日) 09:11:42.89ID:1l4O+k/P387デフォルトの名無しさん
2025/05/11(日) 09:15:33.06ID:qcGHvz/x 変わった人が集まって3行で済んでいた話を広げていく
388デフォルトの名無しさん
2025/05/11(日) 10:06:07.52ID:WmmDZjaJ >>368
無いから自演してまでしてRustを盛り上げようしてる
無いから自演してまでしてRustを盛り上げようしてる
389デフォルトの名無しさん
2025/05/11(日) 10:11:53.93ID:kgU6ATNU ここスレが立って1週間で300レスかよ
さすが究極のプログラミング言語だけあるな
関心持つ人多すぎ
さすが究極のプログラミング言語だけあるな
関心持つ人多すぎ
390デフォルトの名無しさん
2025/05/11(日) 11:15:42.58ID:UTf8BgbA >>369
その理屈だとRustで描かれたコードはすべてunsafeだ
その理屈だとRustで描かれたコードはすべてunsafeだ
391デフォルトの名無しさん
2025/05/11(日) 11:22:17.69ID:u8yQJoO0 >>389
何なんだよこの気持ち悪い複オジのレスはw
何なんだよこの気持ち悪い複オジのレスはw
392デフォルトの名無しさん
2025/05/11(日) 11:30:45.60ID:UTf8BgbA >>383
borrow mut な部分を unsafe {} で囲むとコンパイル通せるんだっけ?
borrow mut な部分を unsafe {} で囲むとコンパイル通せるんだっけ?
393デフォルトの名無しさん
2025/05/11(日) 11:38:18.14ID:B7Jyctor394デフォルトの名無しさん
2025/05/11(日) 11:38:36.95ID:qcGHvz/x unsafeで囲むとその中で危険な必殺技が使える
強力だけどその間はリミッター解除され保護されていない状況にも近い諸刃の剣
それを呼び出す部位もunsafe扱いしたらmainまでunsafeになり危険極まりないw
強力だけどその間はリミッター解除され保護されていない状況にも近い諸刃の剣
それを呼び出す部位もunsafe扱いしたらmainまでunsafeになり危険極まりないw
395デフォルトの名無しさん
2025/05/11(日) 11:48:02.09ID:2w2LR5Qj やってることはC言語でコメントにunsafeって書くのと変わらねえじゃん
396デフォルトの名無しさん
2025/05/11(日) 11:53:03.94ID:qcGHvz/x 違いが判らないなら理解力が不足しているだろう
unsafeだと通常は許されないことが可能になる
unsafeだと通常は許されないことが可能になる
397デフォルトの名無しさん
2025/05/11(日) 12:00:44.68ID:B7Jyctor398デフォルトの名無しさん
2025/05/11(日) 12:19:58.74ID:2w2LR5Qj >>396
俺が言ってる意味がわからない方が理解力が不足してるかもよw
俺が言ってる意味がわからない方が理解力が不足してるかもよw
399デフォルトの名無しさん
2025/05/11(日) 12:37:43.07ID:qcGHvz/x400デフォルトの名無しさん
2025/05/11(日) 12:41:23.78ID:qcGHvz/x 他の言語でもunsafe以外では保護されている部分もunsafeで制約が解除されている
401デフォルトの名無しさん
2025/05/11(日) 13:01:06.68ID:bksu5Opa >>369
unsafeな関数には関数を呼び出す側が守るべきsafetyルールがそれぞれ定義されている
ラッパー関数がそのルールを関数内のみで不変的に守ることが保証できるのならsafe
できないなら上位で保証してもらう必要があるからunsafe
いずれにしてもunsafe関数を呼び出す側が守るべきsafetyルールは
アプリケーションのどこかの段階ではすべて守られることを保証しないといけない
unsafeな関数には関数を呼び出す側が守るべきsafetyルールがそれぞれ定義されている
ラッパー関数がそのルールを関数内のみで不変的に守ることが保証できるのならsafe
できないなら上位で保証してもらう必要があるからunsafe
いずれにしてもunsafe関数を呼び出す側が守るべきsafetyルールは
アプリケーションのどこかの段階ではすべて守られることを保証しないといけない
402デフォルトの名無しさん
2025/05/11(日) 13:53:51.61ID:UTf8BgbA >>396
その理屈だと二重の borrow mut も unsafe{} で許可してもらえるととってもありがたいんだが
その理屈だと二重の borrow mut も unsafe{} で許可してもらえるととってもありがたいんだが
403デフォルトの名無しさん
2025/05/11(日) 14:09:26.63ID:ARIO0JMx404デフォルトの名無しさん
2025/05/11(日) 14:48:00.02ID:0bg/IfOK >>396
unsafeブロック内でも外でもRustのルールは基本的に同じ
何でも出来るようになるわけではない
unsafeブロック内でのみ出来ること
・unsafeな関数やメソッドの呼び出し
・unsafeなトレイトの実装
・生ポインタの逆参照
・共有体フィールドの読み取り
・可変静的変数の読み書き
このたった5つのみが許可される
unsafeブロック内でも外でもRustのルールは基本的に同じ
何でも出来るようになるわけではない
unsafeブロック内でのみ出来ること
・unsafeな関数やメソッドの呼び出し
・unsafeなトレイトの実装
・生ポインタの逆参照
・共有体フィールドの読み取り
・可変静的変数の読み書き
このたった5つのみが許可される
405デフォルトの名無しさん
2025/05/11(日) 16:26:32.64ID:qcGHvz/x 文意を取れない病気なのだろうか?
406デフォルトの名無しさん
2025/05/11(日) 17:38:39.22ID:9sJVUicm まあ病気だろうね
407デルフォトの名無し
2025/05/11(日) 20:01:04.55ID:8gkdAC4l unsafeってそんなに不味いんですね...
408デフォルトの名無しさん
2025/05/11(日) 20:20:01.31ID:LzpU3Ybb 特殊な環境を抜きにすると普通の開発でunsafeが使われることはほとんどない
むしろコンセンサス無くunsafeを使う人がいたら問題児認定されても仕方ない
ボトルネックがあってunsafeを使うことで安全かつ劇的に改善されるなどの共通認識が出来たら注意深くみんなの監視の下で使われる
むしろコンセンサス無くunsafeを使う人がいたら問題児認定されても仕方ない
ボトルネックがあってunsafeを使うことで安全かつ劇的に改善されるなどの共通認識が出来たら注意深くみんなの監視の下で使われる
409デルフォトの名無し
2025/05/11(日) 20:23:01.43ID:8gkdAC4l 特殊な環境って...具体的にどういうのがあるんですかね...
410デフォルトの名無しさん
2025/05/11(日) 21:10:41.96ID:kSJwinQr 安全に使うための条件が分からないunsafeは不味い
標準ライブラリのunsafe関数は大体Safetyで明示してる
標準ライブラリのunsafe関数は大体Safetyで明示してる
411デフォルトの名無しさん
2025/05/11(日) 23:58:19.36ID:UbETPlY9412デフォルトの名無しさん
2025/05/12(月) 11:03:30.61ID:zCv6/zTu OS提供のヘッダーファイルと連携しないといけないからね
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
413デフォルトの名無しさん
2025/05/12(月) 11:09:27.48ID:pU5GgKWj その頃にはもう人間がAPIを管理することはないだろうから我々が気にする必要はない
414デフォルトの名無しさん
2025/05/12(月) 11:22:05.12ID:0DBz50aj atomicを使える局面なら最速を狙えるが
素人は無難にMutexにしとけ
素人は無難にMutexにしとけ
415デフォルトの名無しさん
2025/05/12(月) 11:51:31.03ID:pU5GgKWj 処理が性能上クリティカルじゃないことが分かってる上で手を抜くのはいいけど、必要に応じてロックフリーを実装できないレベルならさすがに言語の選択から考え直すべき
場合によっちゃゲロ遅スクリプト言語でロックフリーに書かれたコードより遅くなるぞ
場合によっちゃゲロ遅スクリプト言語でロックフリーに書かれたコードより遅くなるぞ
416デフォルトの名無しさん
2025/05/12(月) 11:55:41.87ID:iYjqcrbw 誰もメモリバリアの話なんかしてないだろストローオジ
417デフォルトの名無しさん
2025/05/12(月) 11:57:36.67ID:zCv6/zTu >>415
その通り
その通り
418デフォルトの名無しさん
2025/05/12(月) 12:21:58.09ID:0DBz50aj >>415
ロックフリーにできるならatomicを使う方が当然よい
しかし素人がABA問題からRISCのアクセス順序崩壊まで様々な問題を理解しつつ
compare_exchange系などを正しく使いながら各々のRelaxed/Release/Acquired/SeqCstを最善に選べると思えない
複数のatomicが複雑に絡むとロックフリーはプロでも間違える歴史を繰り返してきた分野だ
さらに言えばatomicよりMutexが有利になるケースの存在も理解して適切に選ぶ必要がある
プロでも単純明快な状況でない場合はまずMutexで実装して後から見極めた上でatomicにするかどうか決める
これらの知識を身に付けるまで素人は無難にMutexにしとけ
ロックフリーにできるならatomicを使う方が当然よい
しかし素人がABA問題からRISCのアクセス順序崩壊まで様々な問題を理解しつつ
compare_exchange系などを正しく使いながら各々のRelaxed/Release/Acquired/SeqCstを最善に選べると思えない
複数のatomicが複雑に絡むとロックフリーはプロでも間違える歴史を繰り返してきた分野だ
さらに言えばatomicよりMutexが有利になるケースの存在も理解して適切に選ぶ必要がある
プロでも単純明快な状況でない場合はまずMutexで実装して後から見極めた上でatomicにするかどうか決める
これらの知識を身に付けるまで素人は無難にMutexにしとけ
419デフォルトの名無しさん
2025/05/12(月) 15:44:13.42ID:zCv6/zTu unsafeについて
https://www.youtube.com/watch?v=lx86iUb2xiI
https://www.youtube.com/watch?v=lx86iUb2xiI
420デフォルトの名無しさん
2025/05/12(月) 22:25:38.81ID:/cK4qYsj https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=18df19416bd6d705356724788636ab13
これをResultのmapとかand_thenとかを使ってスッキリ書く方法ってないでしょうか?
これをResultのmapとかand_thenとかを使ってスッキリ書く方法ってないでしょうか?
421デフォルトの名無しさん
2025/05/13(火) 00:03:38.80ID:tnscGN8Z422デフォルトの名無しさん
2025/05/13(火) 00:12:19.92ID:8MDWNT4X >>421
x=Some(false), y=Some(true)のときz=Some(false)になるからダメじゃね?
x=Some(false), y=Some(true)のときz=Some(false)になるからダメじゃね?
423デフォルトの名無しさん
2025/05/13(火) 00:18:54.30ID:8MDWNT4X すまんOptionとResult勘違いしてた
424デフォルトの名無しさん
2025/05/13(火) 00:29:45.70ID:tnscGN8Z >>422
たし🦀
let z = x.and_then(|b1| y.map(|b2| b1 || b2).or(Ok(b1))).or_else(|_| y.or(Err("ko")));
直したらこんなんなったんだが
matchが一番わかりやすい気がする
たし🦀
let z = x.and_then(|b1| y.map(|b2| b1 || b2).or(Ok(b1))).or_else(|_| y.or(Err("ko")));
直したらこんなんなったんだが
matchが一番わかりやすい気がする
425デフォルトの名無しさん
2025/05/13(火) 00:30:51.37ID:hUpkj0hB x.map(|x| y.map_or(x, |y| x || y)).or(y).or(Err("ko"))とかになるからmatch以上にスッキリ書く方法はないんじゃないかな
426デフォルトの名無しさん
2025/05/13(火) 00:46:34.37ID:8MDWNT4X 一応x,yが増えた時のためにイテレータ使うパターン
let z = [x, y].into_iter().filter_map(Result::ok).reduce(|b1, b2| b1 || b2).ok_or("ko");
2つならmatchでいい気がする
let z = [x, y].into_iter().filter_map(Result::ok).reduce(|b1, b2| b1 || b2).ok_or("ko");
2つならmatchでいい気がする
427デフォルトの名無しさん
2025/05/13(火) 07:26:56.06ID:Ubv8VExT たくさんある時はOk(true)でショートカットしたいケースが多そう
例えば素直に
let mut is_ok = false;
while let Some(x) = iter.next() {
match x {
Ok(true) => return x,
Ok(_) => is_ok = true,
_ => (),
}
}
is_ok.then_some(false).ok_or("ko")
例えば素直に
let mut is_ok = false;
while let Some(x) = iter.next() {
match x {
Ok(true) => return x,
Ok(_) => is_ok = true,
_ => (),
}
}
is_ok.then_some(false).ok_or("ko")
428デフォルトの名無しさん
2025/05/13(火) 07:31:54.57ID:RE8LmKUD 幻聴で半分人間半分AIと話していたので
1 私に成りすまして話しているようにいさせている
2 成りすましの声でも身体攻撃の部分は私本人も同じ状態に陥っている
3 犯人が使用していたとしても清廉潔白の人物のように見せれる
【2025年最新】自然な声の音声読み上げソフト5選!AI技術で ...
https://ondoku3.com/ja/post/natural-voice-software/
※インストール不要で無料で5000文字まで複数声質の音声合成エンジンで読み上げ可能
ローカルで各種AIモデルを実行できる無料ソフト「llama.cpp」がマルチモーダル入力をサポートし画像の説明などが可能に
2025年05月12日 20時00分
https://gigazine.net/news/20250512-llama-cpp--multimodal-vision-support/
>>llama.cppの詳細情報は以下のリンク先で公開されており、ソースコードやインストール手順などを確認できます。
※画像を認識させてテキスト入力が可能
ローカルでAIを動かして「コード生成」「ウェブ上の情報収集」「ファイル検索」などの操作を実行できるAIエージェント「AgenticSeek」、無料で使えてプライバシーも守れるのが強み
2025年05月05日 16時02分
https://gigazine.net/news/20250505-agenticseek-local-ai-agent
>>AgenticSeekのインストール手順は以下のページにまとまっています。
※複数サイトからレポート作成可能
1 私に成りすまして話しているようにいさせている
2 成りすましの声でも身体攻撃の部分は私本人も同じ状態に陥っている
3 犯人が使用していたとしても清廉潔白の人物のように見せれる
【2025年最新】自然な声の音声読み上げソフト5選!AI技術で ...
https://ondoku3.com/ja/post/natural-voice-software/
※インストール不要で無料で5000文字まで複数声質の音声合成エンジンで読み上げ可能
ローカルで各種AIモデルを実行できる無料ソフト「llama.cpp」がマルチモーダル入力をサポートし画像の説明などが可能に
2025年05月12日 20時00分
https://gigazine.net/news/20250512-llama-cpp--multimodal-vision-support/
>>llama.cppの詳細情報は以下のリンク先で公開されており、ソースコードやインストール手順などを確認できます。
※画像を認識させてテキスト入力が可能
ローカルでAIを動かして「コード生成」「ウェブ上の情報収集」「ファイル検索」などの操作を実行できるAIエージェント「AgenticSeek」、無料で使えてプライバシーも守れるのが強み
2025年05月05日 16時02分
https://gigazine.net/news/20250505-agenticseek-local-ai-agent
>>AgenticSeekのインストール手順は以下のページにまとまっています。
※複数サイトからレポート作成可能
429デフォルトの名無しさん
2025/05/13(火) 10:17:11.92ID:C/NhftFY >>422-423
このようにRustは面倒
このようにRustは面倒
430デフォルトの名無しさん
2025/05/13(火) 10:29:55.43ID:Oaa+uu3G >>429
その点ではRustが最も優れています
その点ではRustが最も優れています
431デフォルトの名無しさん
2025/05/13(火) 11:06:20.16ID:C/NhftFY 優れてるなら間違わないように設計汁
432デフォルトの名無しさん
2025/05/13(火) 11:13:08.18ID:Oaa+uu3G >>431
Rustは強い静的型付け言語なので間違えることはありません
Rustは強い静的型付け言語なので間違えることはありません
433デフォルトの名無しさん
2025/05/13(火) 12:48:35.47ID:HDWw9il3434デフォルトの名無しさん
2025/05/13(火) 14:00:36.56ID:EnWQFSGx >>433
継ぎはぎはない
根本の理解を間違えているからそんな変な発想になる
基本はmatchで書くのが当然
例えば
match foo {
Some(x) => Some(f(x)),
None => None,
}
こう書いた時に意味するところはSome時にfによる写像
だからこれをfoo.map(f)と略記できるというのが根本
短く記述でき可読性も上がる
asyncでの使い勝手というのも同様
このfの形とクロージャでのキャプチャなどの制限を満たせば使えて満たさなければ使えないだけの話
matchを推奨しているのではなくmatchが基本
そのうえで可読性がよくなるメソッドが適用できるならそれを使う
メソッドチェーンもそれで短く可読性が上がるなら使う
>>420はmatchのままが可読性がいい
それだけの話
継ぎはぎはない
根本の理解を間違えているからそんな変な発想になる
基本はmatchで書くのが当然
例えば
match foo {
Some(x) => Some(f(x)),
None => None,
}
こう書いた時に意味するところはSome時にfによる写像
だからこれをfoo.map(f)と略記できるというのが根本
短く記述でき可読性も上がる
asyncでの使い勝手というのも同様
このfの形とクロージャでのキャプチャなどの制限を満たせば使えて満たさなければ使えないだけの話
matchを推奨しているのではなくmatchが基本
そのうえで可読性がよくなるメソッドが適用できるならそれを使う
メソッドチェーンもそれで短く可読性が上がるなら使う
>>420はmatchのままが可読性がいい
それだけの話
435デフォルトの名無しさん
2025/05/13(火) 14:18:16.15ID:C/NhftFY だからRustは清書用(キリっ)って言われるんだろうね
436デフォルトの名無しさん
2025/05/13(火) 14:28:55.14ID:EnWQFSGx437デフォルトの名無しさん
2025/05/13(火) 16:46:51.79ID:JaffXz8x438デフォルトの名無しさん
2025/05/13(火) 18:59:19.16ID:XAG2WzZA439デフォルトの名無しさん
2025/05/13(火) 19:20:56.54ID:GUUfpWjP 早期脱出はループで書くほうがわかりやすいものやループでしか実現できないことも多い
特にラベル指定など
特にラベル指定など
440デフォルトの名無しさん
2025/05/13(火) 19:50:54.91ID:r+Qycp2R 実際どうなるかなんてその時次第だから
今回は結果をまとめて出してるんだろうけど
それぞれの実行結果で制御が加われば別に結果をまとめる必要はない場合もでて来るので綺麗に書ける必要はゼロ
今回は結果をまとめて出してるんだろうけど
それぞれの実行結果で制御が加われば別に結果をまとめる必要はない場合もでて来るので綺麗に書ける必要はゼロ
441デフォルトの名無しさん
2025/05/13(火) 19:51:24.47ID:QxvoeLWz >>420
ちょっと主旨から外れるけど、matchは
match (x, y) {
(Ok(b1), Ok(b2)) => Ok(b1 || b2),
(Ok(_), _ ) => x,
_ => y,
};
まで整理できますね。
2回評価するのが嫌なら二段matchがいいかと。
ちょっと主旨から外れるけど、matchは
match (x, y) {
(Ok(b1), Ok(b2)) => Ok(b1 || b2),
(Ok(_), _ ) => x,
_ => y,
};
まで整理できますね。
2回評価するのが嫌なら二段matchがいいかと。
442デフォルトの名無しさん
2025/05/13(火) 19:57:18.96ID:r+Qycp2R 綺麗だねw
443デフォルトの名無しさん
2025/05/13(火) 20:06:13.63ID:QaPl6AoM444デフォルトの名無しさん
2025/05/13(火) 20:08:00.80ID:r+Qycp2R 関数の実行結果x,yがあります
それぞれのx,yが成功していればそれを出力してください
ただしx,y共に成功であれば結果を論理和して出力してください
x,y共にエラーである場合はエラーを出力してください
それぞれのx,yが成功していればそれを出力してください
ただしx,y共に成功であれば結果を論理和して出力してください
x,y共にエラーである場合はエラーを出力してください
445デフォルトの名無しさん
2025/05/13(火) 20:15:06.96ID:hmzDHhd1 結果が揃っていたら悩むところないよな
現実には結果が一部しか出ていない段階で欲しい結果が得られたから以降は打ち切り、または、エラーが出たから打ち切り
現実には結果が一部しか出ていない段階で欲しい結果が得られたから以降は打ち切り、または、エラーが出たから打ち切り
446デフォルトの名無しさん
2025/05/13(火) 20:46:34.57ID:QxvoeLWz 二段matchも書いてみた。
let z = match x {
Err(_) => y,
Ok(false) => match y {
Err(_) => x,
_=>y,
},
_ => x,
};
普通はこんな書き方しないだろうけど。
let z = match x {
Err(_) => y,
Ok(false) => match y {
Err(_) => x,
_=>y,
},
_ => x,
};
普通はこんな書き方しないだろうけど。
447デフォルトの名無しさん
2025/05/13(火) 21:23:14.88ID:tnscGN8Z まあしかし
元の
let z = match (x, y) {
(Ok(b1), Ok(b2)) => Ok(b1 || b2),
(Ok(b1), Err(_)) => Ok(b1),
(Err(_), Ok(b2)) => Ok(b2),
(Err(_), Err(_)) => Err("ko"),
};
これが一番可読性高くて網羅性も一目でわかっていいと思うわ
元の
let z = match (x, y) {
(Ok(b1), Ok(b2)) => Ok(b1 || b2),
(Ok(b1), Err(_)) => Ok(b1),
(Err(_), Ok(b2)) => Ok(b2),
(Err(_), Err(_)) => Err("ko"),
};
これが一番可読性高くて網羅性も一目でわかっていいと思うわ
448デフォルトの名無しさん
2025/05/13(火) 21:30:58.39ID:upONs1LW 結局のところは意図が表れていて読み取りやすいことが重要で、スマートに書けてても見た他人がなんのこっちゃとなるようではあかんからな。
449デフォルトの名無しさん
2025/05/13(火) 22:06:17.20ID:QxvoeLWz >>446
蛇足だけど、こっちの方がいいか。
let z = match x {
Err(_) => y,
Ok(true) => x,
_ => match y {
Err(_) => x,
_=>y,
},
};
蛇足だけど、こっちの方がいいか。
let z = match x {
Err(_) => y,
Ok(true) => x,
_ => match y {
Err(_) => x,
_=>y,
},
};
450デフォルトの名無しさん
2025/05/13(火) 22:11:12.56ID:r+Qycp2R 他の言語でもあるんだけど元々シンプルに書けていたものを
その言語特有の機能で書き換えたい勢がいる
パズルとしては別に構わないけどそれでどれだけ時間を費やすのか考えてなさそう
その言語特有の機能で書き換えたい勢がいる
パズルとしては別に構わないけどそれでどれだけ時間を費やすのか考えてなさそう
451デフォルトの名無しさん
2025/05/13(火) 22:17:38.03ID:tYuP2+yw >>441
さすが汚コーダーと呼ばれるだけはあるな
さすが汚コーダーと呼ばれるだけはあるな
452デフォルトの名無しさん
2025/05/14(水) 00:10:10.91ID:DnF/2YAd 汚コーダーと言いたい気持ちもわかる
俺たちの時代は変数名は一文字で可能ならワンライナーで処理が終わるように工夫しまくってた。2行だったのが1行79文字に収まったぞ!的な
この美的感覚を共有できる仲間がいてくれて幸せである
俺たちの時代は変数名は一文字で可能ならワンライナーで処理が終わるように工夫しまくってた。2行だったのが1行79文字に収まったぞ!的な
この美的感覚を共有できる仲間がいてくれて幸せである
453デフォルトの名無しさん
2025/05/14(水) 00:21:08.28ID:mNhYSwgp 両方Okの場合だけx.or(y)と違う動作をさせたいと考えるならそう書けばいいと思う
match (x, y) {
(Ok(b1), Ok(b2)) => Ok(b1 || b2),
_ => x.or(y),
}
入力が増える場合は上の処理を関数にしたものをループ内で呼ぶ
forループとか使っとけばショートサーキットも簡単
あと本当にErrを捨ててもいいんであればResult<bool, &str>じゃなくて
Option<bool>を受け取って返す形にしておいたほうが扱いも楽だしスッキリする
match (x, y) {
(Ok(b1), Ok(b2)) => Ok(b1 || b2),
_ => x.or(y),
}
入力が増える場合は上の処理を関数にしたものをループ内で呼ぶ
forループとか使っとけばショートサーキットも簡単
あと本当にErrを捨ててもいいんであればResult<bool, &str>じゃなくて
Option<bool>を受け取って返す形にしておいたほうが扱いも楽だしスッキリする
454デフォルトの名無しさん
2025/05/14(水) 00:32:45.62ID:mNhYSwgp >>426のはOption<bool>化して最終的にNoneならErr(“ko”)にfallbackさせてるから
読みやすいかどうかは別にして考え方としてはわりと好み
読みやすいかどうかは別にして考え方としてはわりと好み
455デフォルトの名無しさん
2025/05/14(水) 00:34:10.14ID:JvBAAG1/ 結局>>427でええやん
456デフォルトの名無しさん
2025/05/14(水) 13:32:41.36ID:tetNkY+Z AIチャットボットに「偽の記憶」を植え付けることで仮想通貨を盗む攻撃が報告される
2025年05月14日 12時00分
https://gigazine.net/news/20250514-web3-ai-agents-with-fake-memories/
>>プリンストン大学の研究チーム
過去に流通した誤情報に接触した人の半分が「正しい情報」と思っていて25%が何らかの手段で拡散している
2025年05月14日 11時25分
https://gigazine.net/news/20250514-fake-news/
>>総務省
2025年05月14日 12時00分
https://gigazine.net/news/20250514-web3-ai-agents-with-fake-memories/
>>プリンストン大学の研究チーム
過去に流通した誤情報に接触した人の半分が「正しい情報」と思っていて25%が何らかの手段で拡散している
2025年05月14日 11時25分
https://gigazine.net/news/20250514-fake-news/
>>総務省
457デフォルトの名無しさん
2025/05/14(水) 16:29:27.92ID:plMg3hee 「Firefox」の開発リポジトリが「GitHub」に移行
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2013958.html
https://github.com/mozilla-firefox/firefox
JavaScript 28.5%
C++ 28.1%
HTML 22.0%
C 10.5%
Python 2.9%
Kotlin 2.5%
Other 5.5%
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2013958.html
https://github.com/mozilla-firefox/firefox
JavaScript 28.5%
C++ 28.1%
HTML 22.0%
C 10.5%
Python 2.9%
Kotlin 2.5%
Other 5.5%
458デフォルトの名無しさん
2025/05/14(水) 17:34:57.56ID:Ga6mti+e 5次方程式に新公式を発見:ルートを超える新理論
2025.05.14 17:05:56 WEDNESDAY
https://nazology.kusuguru.co.jp/archives/177496
>>オーストラリアのニューサウスウェールズ大学(UNSW)で行われた研究
プログらまーも覚えるとよい
125年越しに解決したかもしれない「ヒルベルトの第6問題」とは?
2025年05月10日 15時00分
https://gigazine.net/news/20250510-hilberts-6th-problem-solved/
2025.05.14 17:05:56 WEDNESDAY
https://nazology.kusuguru.co.jp/archives/177496
>>オーストラリアのニューサウスウェールズ大学(UNSW)で行われた研究
プログらまーも覚えるとよい
125年越しに解決したかもしれない「ヒルベルトの第6問題」とは?
2025年05月10日 15時00分
https://gigazine.net/news/20250510-hilberts-6th-problem-solved/
459デフォルトの名無しさん
2025/05/14(水) 19:02:58.62ID:mIHvW3MM Mercurialが積極的にRust化を進めていたのは少なからずFirefoxの影響があったと思うが
酷い梯子外しで草
酷い梯子外しで草
460デフォルトの名無しさん
2025/05/14(水) 19:23:03.41ID:+nUwZiWy Mercurial は開発履歴管理で Git はパッチの連鎖管理という理念の違いがある。
それって結局は同じことじゃないのか……と思うんだけどやっぱり違うんだよな。
概念的に整理されていて理解しやすいのは Mercurual だけど、実務的に必要なのは Git。
ツールがどんな言語で書かれているとかはあまり関係なく、大規模開発だと Git のほうがやり易いというとても簡単な話。
それって結局は同じことじゃないのか……と思うんだけどやっぱり違うんだよな。
概念的に整理されていて理解しやすいのは Mercurual だけど、実務的に必要なのは Git。
ツールがどんな言語で書かれているとかはあまり関係なく、大規模開発だと Git のほうがやり易いというとても簡単な話。
461デフォルトの名無しさん
2025/05/14(水) 20:24:41.62ID:u4PNt/Ez Rust用のJITコンパイラ・インタプリタ的なものはありませんか?
PythonやJavaScriptのようにコンパイル時間を待たずにデバッグしたいんです。
PythonやJavaScriptのようにコンパイル時間を待たずにデバッグしたいんです。
462デフォルトの名無しさん
2025/05/14(水) 20:46:01.38ID:Msome2l0 RustもGo言語のように、消えてゆく運命ですか?
463デフォルトの名無しさん
2025/05/14(水) 20:52:07.16ID:W1FBX8Fx >>461
371 デフォルトの名無しさん sage 2025/05/14(水) 20:25:52.45 ID:u4PNt/Ez
TypeScriptを(C++等のように機械語に)コンパイルする方法が知りたいです(´・ω・)
371 デフォルトの名無しさん sage 2025/05/14(水) 20:25:52.45 ID:u4PNt/Ez
TypeScriptを(C++等のように機械語に)コンパイルする方法が知りたいです(´・ω・)
464デフォルトの名無しさん
2025/05/14(水) 20:55:34.77ID:FZDf1LBL >>462
C++標準委員会がRustを参考にしたコーダー用Safe C++(C++呼び出し専用の限定版)を作ればC++に回帰する可能性があるけど、そんな動きは無いから当面安泰じゃない?
C++標準委員会がRustを参考にしたコーダー用Safe C++(C++呼び出し専用の限定版)を作ればC++に回帰する可能性があるけど、そんな動きは無いから当面安泰じゃない?
465デフォルトの名無しさん
2025/05/14(水) 21:44:29.60ID:iGtYlO1p コンパイラから全ソースコードが見えていて好きなだけ時間を使ってチェックさせるのか
商用を含め様々な出所のコンパイル済みバイナリでもリンク(静的、動的)して動かすのか
役割と責務が違う
商用を含め様々な出所のコンパイル済みバイナリでもリンク(静的、動的)して動かすのか
役割と責務が違う
466デフォルトの名無しさん
2025/05/14(水) 23:43:28.56ID:1UsCEMhi467デフォルトの名無しさん
2025/05/15(木) 10:01:15.43ID:6KG6JIoe468デフォルトの名無しさん
2025/05/15(木) 10:04:11.94ID:IIQRq9O2 >>467
それは実装上の話で、ここではパラダイムの話をしてる。
それは実装上の話で、ここではパラダイムの話をしてる。
469デフォルトの名無しさん
2025/05/15(木) 10:47:00.15ID:HgN+lgjm >>468
それ信頼できる出典ある?
仮にGitのコミットが(実装はさておきメンタルモデル上は)パッチだとしたら、rebaseやcherry-pickで新しいコミットが作られるのは変だと思わないのかな
それ信頼できる出典ある?
仮にGitのコミットが(実装はさておきメンタルモデル上は)パッチだとしたら、rebaseやcherry-pickで新しいコミットが作られるのは変だと思わないのかな
470デフォルトの名無しさん
2025/05/15(木) 11:20:07.09ID:0AOGTML/ Claude 3.7 with extended thinking 様によると
Gitはスナップショットベースのシステムで、各コミットはファイルシステム全体の完全なスナップショットを保存します(最適化されていますが)。一方、Mercurialは変更セット(changeset)という概念で差分ベースの履歴を管理します。
この根本的な違いがGitの操作モデルに影響しています。rebaseやcherry-pickが新しいコミットを作成するのは、Gitがスナップショットモデルを採用しているからこそ自然です。既存のスナップショットを新しい文脈に適用すると、新しい状態のスナップショットが必要になります。
パラダイムと実装は密接に関連しており、Gitの設計思想はLinus Torvaldsが述べているように内部データモデルから生まれています。このモデルがGitの分散性、ブランチ操作の柔軟性、大規模プロジェクトでの優位性につながっています。
Gitはスナップショットベースのシステムで、各コミットはファイルシステム全体の完全なスナップショットを保存します(最適化されていますが)。一方、Mercurialは変更セット(changeset)という概念で差分ベースの履歴を管理します。
この根本的な違いがGitの操作モデルに影響しています。rebaseやcherry-pickが新しいコミットを作成するのは、Gitがスナップショットモデルを採用しているからこそ自然です。既存のスナップショットを新しい文脈に適用すると、新しい状態のスナップショットが必要になります。
パラダイムと実装は密接に関連しており、Gitの設計思想はLinus Torvaldsが述べているように内部データモデルから生まれています。このモデルがGitの分散性、ブランチ操作の柔軟性、大規模プロジェクトでの優位性につながっています。
471デフォルトの名無しさん
2025/05/15(木) 11:24:57.24ID:2L2gZoQV >>447-448
記述量多いけど観る分には判り易い
記述量多いけど観る分には判り易い
472デフォルトの名無しさん
2025/05/15(木) 11:31:00.68ID:2L2gZoQV >>465
>コンパイラから全ソースコードが見えていて好きなだけ時間を使って
Cargo の build 遅いしディスクの容量も喰いまくる(消せるけど)
そこまでやるなら他人(自分のであっても別cratesのとき)のstruct/traitを組み合わせて追加しても良い仕様にして欲しいな
>コンパイラから全ソースコードが見えていて好きなだけ時間を使って
Cargo の build 遅いしディスクの容量も喰いまくる(消せるけど)
そこまでやるなら他人(自分のであっても別cratesのとき)のstruct/traitを組み合わせて追加しても良い仕様にして欲しいな
473デフォルトの名無しさん
2025/05/15(木) 12:17:35.74ID:hNZNm9rA474デフォルトの名無しさん
2025/05/15(木) 12:44:18.74ID:IIQRq9O2 Rust の型システムの原型になった Haskell では Orphan Rule のような制限はないから技術的には制限しない選択も可能ではあるはずだけど
通常は避けるべきと考えられているし、警告も出るし、コンパイル時間にもかなり悪影響だし、良いことは少ない。
必須というほどではないかもしれないけど、あまりにも割に合わないとは言える。
通常は避けるべきと考えられているし、警告も出るし、コンパイル時間にもかなり悪影響だし、良いことは少ない。
必須というほどではないかもしれないけど、あまりにも割に合わないとは言える。
475デフォルトの名無しさん
2025/05/15(木) 13:12:18.94ID:bGH4TqSk Googleが開発した進化的AI「AlphaEvolve」は未知のアルゴリズムや未解決数学問題の新解法を発見可能、すでにGoogle内部ではAI開発やチップ設計の効率化に活用されている
2025年05月15日 11時06分
https://gigazine.net/news/20250515-google-ai-algorithm-alphaevolve/
2025年05月15日 11時06分
https://gigazine.net/news/20250515-google-ai-algorithm-alphaevolve/
476デフォルトの名無しさん
2025/05/15(木) 13:17:27.73ID:hNZNm9rA >>474
例えば第三者のクレートを利用した時
そこで標準ライブラリの型に対して標準では実装されていない標準ライブラリのトレイトの実装があっても通ってしまう
これは誤動作につながるからOrphan Ruleは必須かと
標準ライブラリ以外の型に対しても同様で第三者に実装権限を与えるのは禁じる必要がある
例えば第三者のクレートを利用した時
そこで標準ライブラリの型に対して標準では実装されていない標準ライブラリのトレイトの実装があっても通ってしまう
これは誤動作につながるからOrphan Ruleは必須かと
標準ライブラリ以外の型に対しても同様で第三者に実装権限を与えるのは禁じる必要がある
477デフォルトの名無しさん
2025/05/15(木) 13:55:31.05ID:IIQRq9O2 >>476
それは攻撃やミスに対する脆弱性を封じるという意味で制約が必須と言ってる?
こっちは (技術的な) 実現可能性という意味で必須な制約ではない (があえて制約を無くすことのデメリットが大きい) と言ってるので主旨が異なる。
それは攻撃やミスに対する脆弱性を封じるという意味で制約が必須と言ってる?
こっちは (技術的な) 実現可能性という意味で必須な制約ではない (があえて制約を無くすことのデメリットが大きい) と言ってるので主旨が異なる。
478デフォルトの名無しさん
2025/05/15(木) 14:15:21.28ID:hNZNm9rA479デフォルトの名無しさん
2025/05/15(木) 14:33:19.68ID:7KgPq9qv グローバルに適用させようとしたらそりゃ問題が起きるわ
拡張をスコープにいれる場合はモジュール内にuseステートメント書けばいいだけ
拡張をスコープにいれる場合はモジュール内にuseステートメント書けばいいだけ
480デフォルトの名無しさん
2025/05/15(木) 14:47:58.27ID:O0mRpeHb C#で言う拡張メソッドをやりたいのに、Orphan Ruleが邪魔をする
次のeditionでは廃止してほしいね
次のeditionでは廃止してほしいね
481デフォルトの名無しさん
2025/05/15(木) 14:53:04.88ID:2JrqWc4h 脆弱性とか全然関係ないよな
482デフォルトの名無しさん
2025/05/15(木) 14:54:41.56ID:DscPOsCc >>479
それは違うよ
それは自分で拡張用トレイトを作って、自作以外を含めた任意の型に対して実装して使う時に、自分で範囲を限定する時の話だね。
そうではなく、普通に必要のためuseしている標準やクレートのトレイトが、勝手に第三者によって実装されてしまうことを防ぐのがOrphanルール
それは違うよ
それは自分で拡張用トレイトを作って、自作以外を含めた任意の型に対して実装して使う時に、自分で範囲を限定する時の話だね。
そうではなく、普通に必要のためuseしている標準やクレートのトレイトが、勝手に第三者によって実装されてしまうことを防ぐのがOrphanルール
483デフォルトの名無しさん
2025/05/15(木) 14:57:48.33ID:DscPOsCc484デフォルトの名無しさん
2025/05/15(木) 15:04:23.65ID:DscPOsCc >>481
もしOrphanルールがないと、トレイトの作成者でも型の作成者でもない第三者によって、勝手に型にトレイトが実装されてしまうため、その実装によっては脆弱性が生じる可能性があります。
もしOrphanルールがないと、トレイトの作成者でも型の作成者でもない第三者によって、勝手に型にトレイトが実装されてしまうため、その実装によっては脆弱性が生じる可能性があります。
485デフォルトの名無しさん
2025/05/15(木) 15:35:40.67ID:d3l5/VMs >>484
トレイトの実装は可視性の指定をバイパスできないし、そもそも可視性はセキュリティのための機構ではない
その気になりゃ本来不可視なメンバにアクセスすることなんて普通に可能だし、
もしクレートの作者に悪意があって、利用者が不用意にバージョン上げる阿呆なら、サプライチェーン攻撃によってマルウェアを仕込むことなど造作もない
トレイトの実装は可視性の指定をバイパスできないし、そもそも可視性はセキュリティのための機構ではない
その気になりゃ本来不可視なメンバにアクセスすることなんて普通に可能だし、
もしクレートの作者に悪意があって、利用者が不用意にバージョン上げる阿呆なら、サプライチェーン攻撃によってマルウェアを仕込むことなど造作もない
486デフォルトの名無しさん
2025/05/15(木) 15:59:53.54ID:DscPOsCc >>485
そんな悪意のある話はしていません。
第三者が公の型に公のトレイトを実装できてしまうと、その第三者にとっては意図通りの必要なことが実現できたとしても、他者にとっては必ずしもそうではないためその差異が穴になりうるという話です。
そんな悪意のある話はしていません。
第三者が公の型に公のトレイトを実装できてしまうと、その第三者にとっては意図通りの必要なことが実現できたとしても、他者にとっては必ずしもそうではないためその差異が穴になりうるという話です。
487デフォルトの名無しさん
2025/05/15(木) 16:01:34.05ID:cOWHhYVA >>480
既存の構造体に新しいメソッドを生やしたいだけならextension traitで可
既存traitに新しいメソッドを生やしたいならextension trait + blanket implで実質同じことが可
拡張メソッド1つじゃなくtraitと実装の最低2つを定義しないといけないがそんなに気になるほどではない
Swiftの拡張メソッドのように既存インターフェースに後から適合させるのはRustでは無理
既存の構造体に新しいメソッドを生やしたいだけならextension traitで可
既存traitに新しいメソッドを生やしたいならextension trait + blanket implで実質同じことが可
拡張メソッド1つじゃなくtraitと実装の最低2つを定義しないといけないがそんなに気になるほどではない
Swiftの拡張メソッドのように既存インターフェースに後から適合させるのはRustでは無理
488デフォルトの名無しさん
2025/05/15(木) 16:08:57.33ID:cOWHhYVA489デフォルトの名無しさん
2025/05/15(木) 16:19:46.85ID:DscPOsCc >>488
理解できてないのかな?
例えば標準ライブラリのトレイトに話を限ったとしても、自分で使いたいからuseしたり、preludeで自動的にuseされたりするよね。
そのトレイトが標準ライブラリでは実装されてない型に対して、第三者が実装できてしまうことを防ぐのがOrphanルール。
標準ライブラリではない一般クレートに話を拡張しても同じ。
理解できてないのかな?
例えば標準ライブラリのトレイトに話を限ったとしても、自分で使いたいからuseしたり、preludeで自動的にuseされたりするよね。
そのトレイトが標準ライブラリでは実装されてない型に対して、第三者が実装できてしまうことを防ぐのがOrphanルール。
標準ライブラリではない一般クレートに話を拡張しても同じ。
490デフォルトの名無しさん
2025/05/15(木) 16:39:03.48ID:kvgG4b4S 既存の構造体に既存のtraitを
491デフォルトの名無しさん
2025/05/15(木) 16:52:22.68ID:clVHgL7i barクレートとbazクレートがどっちもfooクレートに依存してて
それぞれで個別にimpl FooTrait for FooTypeを定義してたら
barクレートとbazクレートを両方使うときに衝突して困る
それぞれで個別にimpl FooTrait for FooTypeを定義してたら
barクレートとbazクレートを両方使うときに衝突して困る
492デフォルトの名無しさん
2025/05/15(木) 17:01:11.21ID:6KG6JIoe >>489
それは型定義ともトレイト定義とも異なるクレートでのトレイト実装という現状禁止されている行為が仮に許可された場合、
コンパイルパスに入ってさえいれば暗黙的に実装がインポートされる仕様になる、とあなたが勝手に想定しているからでしょ
もし対応するなら、実装を含むモジュールを明示的にuseさせるような仕様になるだろうし、
そういった面倒を避けるためにorphan ruleがある、と考えることもできる
それは型定義ともトレイト定義とも異なるクレートでのトレイト実装という現状禁止されている行為が仮に許可された場合、
コンパイルパスに入ってさえいれば暗黙的に実装がインポートされる仕様になる、とあなたが勝手に想定しているからでしょ
もし対応するなら、実装を含むモジュールを明示的にuseさせるような仕様になるだろうし、
そういった面倒を避けるためにorphan ruleがある、と考えることもできる
493デフォルトの名無しさん
2025/05/15(木) 18:02:56.74ID:njVhCRvT 例えばu32型にその値を半分にするメソッドhalf()を生やしたいとしたら自作トレイトHalfを用意してu32に実装してやればメソッド拡張できて
そのトレイトHalfをuseすれば第三者もその恩恵に授かってhalf()メソッドを使えるわけだけど
仮にOrphan ruleがない世界だと
u32型には実装されていないstd::ops::Negトレイトも誰でも実装できてしまう
先ほどのhalf()メソッドはuse dareka::Halfした時のみ使えるから自己責任で済んだけど
今回は別目的でuse std::ops::Negしてる人にもu32型にneg()が生えてしまう
本来はu32型の変数xに対して-xはコンパイルエラーとなるけど
今回はneg()が使えて-xがコンパイル通ってしまう
しかも実装の内容によってはその-xの挙動が不明だ
そのトレイトHalfをuseすれば第三者もその恩恵に授かってhalf()メソッドを使えるわけだけど
仮にOrphan ruleがない世界だと
u32型には実装されていないstd::ops::Negトレイトも誰でも実装できてしまう
先ほどのhalf()メソッドはuse dareka::Halfした時のみ使えるから自己責任で済んだけど
今回は別目的でuse std::ops::Negしてる人にもu32型にneg()が生えてしまう
本来はu32型の変数xに対して-xはコンパイルエラーとなるけど
今回はneg()が使えて-xがコンパイル通ってしまう
しかも実装の内容によってはその-xの挙動が不明だ
494デフォルトの名無しさん
2025/05/15(木) 19:36:05.04ID:IIQRq9O2 ポケモン協会は秘密にしてるけど、たぶんポケモン世界にはイジメ属性みたいなのもあって仲間ポケモンを自殺に追い込んだりしてると思う。
それとか孕ませポケモンがトレーナーをレイプしたりだとか、逆にトレーナーがポケモンと獣姦 (?) したりだとかいう醜聞もいっぱいあるに違いない。
ポケモン協会はそういうのを隠さずに公開すべき。
それとか孕ませポケモンがトレーナーをレイプしたりだとか、逆にトレーナーがポケモンと獣姦 (?) したりだとかいう醜聞もいっぱいあるに違いない。
ポケモン協会はそういうのを隠さずに公開すべき。
495デフォルトの名無しさん
2025/05/15(木) 19:37:43.21ID:IIQRq9O2 ごめんなさい。
誤爆しました。
誤爆しました。
496デフォルトの名無しさん
2025/05/15(木) 20:29:13.48ID:QWJDxUqA 俺だってシャワーズとセックスしたいよ
497デフォルトの名無しさん
2025/05/15(木) 22:09:10.96ID:p2LOH2jU それはもはやトランスアニマルじゃねーの
いくら翻訳がグダグダだからってそこまで人間性失うのはいかがなものかと
いくら翻訳がグダグダだからってそこまで人間性失うのはいかがなものかと
498デフォルトの名無しさん
2025/05/15(木) 22:20:07.26ID:HPgmxOUZ >>457,466
ほかの言語と同じように外部ライブラリ/crateを除外してある今回の数字が正しそうね
ほかの言語と同じように外部ライブラリ/crateを除外してある今回の数字が正しそうね
499デフォルトの名無しさん
2025/05/15(木) 23:29:18.99ID:7W7zR2tR500デフォルトの名無しさん
2025/05/16(金) 06:25:07.48ID:QL8B1Lzv 悲報!Rust版AV1デコーダーがCより5%遅い問題が解決できず、カネで解決しようとする
https://www.memorysafety.org/blog/rav1d-perf-bounty/
https://www.memorysafety.org/blog/rav1d-perf-bounty/
501デフォルトの名無しさん
2025/05/16(金) 07:42:42.67ID:GIaLLXqf >>500
詳細を見るとこれはRustとLLVMの改善に大きく寄与しそうだな
(1) Rustコードの問題
(2) Rustコンパイラの問題
(3) RustコンパイラからLLVMへの問題
(4) LLVMの問題
これらは密接に関係していて(1)を完璧にしていても
(4)の問題から逆連鎖して(1)で対応するためのコード調整をしなければいけないようだ
本件をきっかけに様々な改善が期待できるので世界全体に役立つだろう
詳細を見るとこれはRustとLLVMの改善に大きく寄与しそうだな
(1) Rustコードの問題
(2) Rustコンパイラの問題
(3) RustコンパイラからLLVMへの問題
(4) LLVMの問題
これらは密接に関係していて(1)を完璧にしていても
(4)の問題から逆連鎖して(1)で対応するためのコード調整をしなければいけないようだ
本件をきっかけに様々な改善が期待できるので世界全体に役立つだろう
502デフォルトの名無しさん
2025/05/16(金) 07:44:33.05ID:GIaLLXqf LLVMを用いている様々な言語にも恩恵ありそうだ
> 驚くべきことに、Clang 18 でビルドされたバージョンは、Clang 17 でビルドされたバージョンよりもパフォーマンスが劣ることがわかりました (~3% 遅い)。
> このリグレッションの原因は不明ですが、Clang全体で一貫性があり、対応するLLVMバックエンドを使用していることがわかりました。
> 驚くべきことに、Clang 18 でビルドされたバージョンは、Clang 17 でビルドされたバージョンよりもパフォーマンスが劣ることがわかりました (~3% 遅い)。
> このリグレッションの原因は不明ですが、Clang全体で一貫性があり、対応するLLVMバックエンドを使用していることがわかりました。
503デフォルトの名無しさん
2025/05/16(金) 08:19:21.12ID:ZrWbXhSM Rust は将来的に LLVM をやめる計画じゃなかったっけ?
うろ覚えなので勘違いかもしれんけど。
うろ覚えなので勘違いかもしれんけど。
504デフォルトの名無しさん
2025/05/16(金) 08:21:41.68ID:QL8B1Lzv >>503
GCC Rustは継続的にやってるみたいだけど、別にLLVMはやめないでしょ
GCC Rustは継続的にやってるみたいだけど、別にLLVMはやめないでしょ
505デフォルトの名無しさん
2025/05/16(金) 08:42:23.59ID:QL8B1Lzv 今日公開のRust 1.87.0でio::pipeが追加された
今までなかったことが不思議
今までなかったことが不思議
506デフォルトの名無しさん
2025/05/16(金) 09:10:56.72ID:b2vWvm61 >>500
対象国に対して賞金が安すぎる
しかもRust処理系の方に手を入れた場合はアプリケーションの改善をした人と山分けになる可能性が高いし、
一般的な有効性を証明してRust処理系にマージされないといけないというのはハードルが高すぎる
残念ながら複おじが期待するような結果になる可能性は低いと言わざるを得ない
対象国に対して賞金が安すぎる
しかもRust処理系の方に手を入れた場合はアプリケーションの改善をした人と山分けになる可能性が高いし、
一般的な有効性を証明してRust処理系にマージされないといけないというのはハードルが高すぎる
残念ながら複おじが期待するような結果になる可能性は低いと言わざるを得ない
507デフォルトの名無しさん
2025/05/16(金) 09:12:43.25ID:r8NIoUWT508デフォルトの名無しさん
2025/05/16(金) 09:41:55.75ID:7mIpVS9r >>500,506
フルで$20,000でも米国の1人月かぁ、しかも成功報酬だから最適化を舐め腐ってるけど
Rustに入れ込んでる一定数はひと山当てたい連中だから売名プロモーションとして参加するだろうね
フルで$20,000でも米国の1人月かぁ、しかも成功報酬だから最適化を舐め腐ってるけど
Rustに入れ込んでる一定数はひと山当てたい連中だから売名プロモーションとして参加するだろうね
509デフォルトの名無しさん
2025/05/16(金) 11:10:05.92ID:wXSLcdK+ リンク先見たら初っ端からsafe rustを諦めているから
何の為のプロジェクトか意味不明になりかけている
何の為のプロジェクトか意味不明になりかけている
510デフォルトの名無しさん
2025/05/16(金) 11:35:21.65ID:1BoI6QFj >>509
unsafeからsafeを創り出す新たな安全パターンを見つけたら、それを使うのは問題ない
その部分だけ徹底的に人の手で安全管理して、それ以外の安全をRustコンパイラに任せることができる
それらのうち特に汎用パターンを集めたものが標準ライブラリという視点もある
unsafeからsafeを創り出す新たな安全パターンを見つけたら、それを使うのは問題ない
その部分だけ徹底的に人の手で安全管理して、それ以外の安全をRustコンパイラに任せることができる
それらのうち特に汎用パターンを集めたものが標準ライブラリという視点もある
511デフォルトの名無しさん
2025/05/16(金) 11:41:45.02ID:OoDj1+RH 今になって気が付いたじゃなくて、言語仕様で例外を投げられないから無視してただけでは
> We noticed that the existence of panicking code significantly increased stack usage. Similarly to how panicking/formatting code prevented crucial inlining in bounds checking code until moved out of the function, panicking code also increased stack usage and spills.
>>510
タラレバがでかい
> We noticed that the existence of panicking code significantly increased stack usage. Similarly to how panicking/formatting code prevented crucial inlining in bounds checking code until moved out of the function, panicking code also increased stack usage and spills.
>>510
タラレバがでかい
512デフォルトの名無しさん
2025/05/16(金) 11:42:09.71ID:ZrWbXhSM >>509
標準ライブラリの内部でも unsafe はたくさん使われてるぞ。
unsafe をどう「閉じ込める」かが Rust プログラムの構成の肝心な部分だ。
速度チューニングのために閉じ込めきれなかったのなら失敗と言えるが unsafe がただちに悪いわけではない。
標準ライブラリの内部でも unsafe はたくさん使われてるぞ。
unsafe をどう「閉じ込める」かが Rust プログラムの構成の肝心な部分だ。
速度チューニングのために閉じ込めきれなかったのなら失敗と言えるが unsafe がただちに悪いわけではない。
513デフォルトの名無しさん
2025/05/16(金) 11:48:07.99ID:OoDj1+RH panic(エラー処理)を関数内に収めるからregisterが足りなくなり易くなるからspillさせるためにスタック多めにして、コードサイズも大きくなるのは最初から分かってたでしょうよ
514デフォルトの名無しさん
2025/05/16(金) 12:31:41.93ID:IgvVjYfn unsafeは禁止なのにpanic!はOKって何考えて設計してんの
515デフォルトの名無しさん
2025/05/16(金) 12:37:23.64ID:b58fLBSS 速度にシビアなコードを書く時は関数にpanic呼び出しが残っていたら当然負け
まずはpanicを生じさせないイテレータなどで書き
インデックスアクセスを避けられない時は様々な工夫とヒントをコンパイラに与えて境界チェックを回避
それでも回避できない部分が残れば最後の手段unsafe安全閉じ込め
他の言語なら全体の安全保証を捨てるか遅さを我慢するかの二択
まずはpanicを生じさせないイテレータなどで書き
インデックスアクセスを避けられない時は様々な工夫とヒントをコンパイラに与えて境界チェックを回避
それでも回避できない部分が残れば最後の手段unsafe安全閉じ込め
他の言語なら全体の安全保証を捨てるか遅さを我慢するかの二択
516デフォルトの名無しさん
2025/05/16(金) 12:56:20.34ID:O+6qQae6 一番初歩的なゼロ除算はchecked_divがidiomaticだけど、
ttps://stackoverflow.com/questions/66602948/is-there-a-way-to-catch-division-by-zero-errors-without-checking-in-advance
実際に0除算を実行してハードウェア例外を発生させるコードの例(回避できない部分と仮定)として、
> それでも回避できない部分が残れば最後の手段unsafe安全閉じ込め
>>515の言うこれをゼロ除算で具体化するとどうなるの?
ttps://stackoverflow.com/questions/66602948/is-there-a-way-to-catch-division-by-zero-errors-without-checking-in-advance
実際に0除算を実行してハードウェア例外を発生させるコードの例(回避できない部分と仮定)として、
> それでも回避できない部分が残れば最後の手段unsafe安全閉じ込め
>>515の言うこれをゼロ除算で具体化するとどうなるの?
517デフォルトの名無しさん
2025/05/16(金) 13:18:06.79ID:b58fLBSS >>516
除数をstd::num::NonZero型にするとpanicコードは入らない
除数をstd::num::NonZero型にするとpanicコードは入らない
518デフォルトの名無しさん
2025/05/16(金) 13:42:02.34ID:QUtZlH+M >>517
病気かな
病気かな
519デフォルトの名無しさん
2025/05/16(金) 13:49:45.88ID:b58fLBSS >>518
実際にかつてそれで対応したことがありアセンブリコードも確認している
実際にかつてそれで対応したことがありアセンブリコードも確認している
520デフォルトの名無しさん
2025/05/16(金) 13:54:06.57ID:wj8lYFI5521デフォルトの名無しさん
2025/05/16(金) 14:18:57.81ID:b58fLBSS >>520
safeなstd::num::NonZero使用で対応できているためunsafeの必要がない
safeなstd::num::NonZero使用で対応できているためunsafeの必要がない
522デフォルトの名無しさん
2025/05/16(金) 15:05:55.72ID:L+lmGGRS >>521
御託はもういいからお前はsafe縛りでAV1デコーダを書き直してCと同等の速度を達成してこい
御託はもういいからお前はsafe縛りでAV1デコーダを書き直してCと同等の速度を達成してこい
523デフォルトの名無しさん
2025/05/16(金) 15:14:15.36ID:b58fLBSS >>522
金と暇を用意してくれたらな
それから最高速を求める時にsafe縛りの必要はない
unsafeを安全に閉じ込められる枠組みが見つかればそれを実行してきたのがRustの歴史
その恩恵で皆がsafe Rustでパフォーマンスを出すことができる
金と暇を用意してくれたらな
それから最高速を求める時にsafe縛りの必要はない
unsafeを安全に閉じ込められる枠組みが見つかればそれを実行してきたのがRustの歴史
その恩恵で皆がsafe Rustでパフォーマンスを出すことができる
524デフォルトの名無しさん
2025/05/16(金) 15:24:17.43ID:9BgWdn33 なんかよくわかんねーけどCより5%遅いらしいな
525デフォルトの名無しさん
2025/05/16(金) 15:38:32.38ID:QL8B1Lzv デコーダーの主要部分はC版の頃からアセンブラで書かれてて、Rustはグルーコードに過ぎないみたい
526デフォルトの名無しさん
2025/05/16(金) 15:41:24.82ID:JWOdogbt えぇ・・・
527デフォルトの名無しさん
2025/05/16(金) 16:18:41.85ID:m6piKA++ pub const fn checked_div(self, rhs: Self) -> Option<Self> {
if intrinsics::unlikely(rhs == 0 || ((self == Self::MIN) && (rhs == -1))) {
None
} else {
// SAFETY: div by zero and by INT_MIN have been checked above
Some(unsafe { intrinsics::unchecked_div(self, rhs) })
}
}
NonZero使ったら最適化で分岐が消える場合があるってことだろうけど
チェックタイミングがNonZero化するときに移動しただけだよね
もしくは定数由来だからチェックが不要になったか
if intrinsics::unlikely(rhs == 0 || ((self == Self::MIN) && (rhs == -1))) {
None
} else {
// SAFETY: div by zero and by INT_MIN have been checked above
Some(unsafe { intrinsics::unchecked_div(self, rhs) })
}
}
NonZero使ったら最適化で分岐が消える場合があるってことだろうけど
チェックタイミングがNonZero化するときに移動しただけだよね
もしくは定数由来だからチェックが不要になったか
528デフォルトの名無しさん
2025/05/16(金) 19:03:43.29ID:b58fLBSS >>527
checkなくコストゼロでpanicもなく安全にu64 / NonZero<u64>の除算やNonZero<u64>→u64の変換などができる
ゼロ保証のない変数からNonZeroを作るには必ずチェックコストがかかるが以降は除数として何度使ってもコストゼロ
元が穴のないCコードならどこかで何らかの方法でゼロにならないことを保証しているはず
それに準拠する形を取ることができればCとRustは同じコストで同じ速さになる
もし元のCコードにゼロ保証する仕組みが全く見当たらないならばそれは穴のあるコードが見つかったことになる
checkなくコストゼロでpanicもなく安全にu64 / NonZero<u64>の除算やNonZero<u64>→u64の変換などができる
ゼロ保証のない変数からNonZeroを作るには必ずチェックコストがかかるが以降は除数として何度使ってもコストゼロ
元が穴のないCコードならどこかで何らかの方法でゼロにならないことを保証しているはず
それに準拠する形を取ることができればCとRustは同じコストで同じ速さになる
もし元のCコードにゼロ保証する仕組みが全く見当たらないならばそれは穴のあるコードが見つかったことになる
529デフォルトの名無しさん
2025/05/16(金) 19:13:36.61ID:bpgu73R/ >>528
病気だな。
要求されてる「それでも回避できない部分が残れば最後の手段unsafe安全閉じ込め」™の具体例を上げやすいように、
「それでも回避できない部分」を簡潔に作り出すのが手間なら、ループ最深部の(0かも知れない)除算を想定した上で「unsafe安全閉じ込め」™をサッと挙げたらどうですか?
と言う話のはずなのに、この受け答え。
病気だな。
要求されてる「それでも回避できない部分が残れば最後の手段unsafe安全閉じ込め」™の具体例を上げやすいように、
「それでも回避できない部分」を簡潔に作り出すのが手間なら、ループ最深部の(0かも知れない)除算を想定した上で「unsafe安全閉じ込め」™をサッと挙げたらどうですか?
と言う話のはずなのに、この受け答え。
530デフォルトの名無しさん
2025/05/16(金) 19:16:32.12ID:b58fLBSS531デフォルトの名無しさん
2025/05/16(金) 19:17:47.42ID:bpgu73R/532デフォルトの名無しさん
2025/05/16(金) 19:19:01.24ID:bpgu73R/ >>530
対象国居住者とタッグ組んで参加してください。
対象国居住者とタッグ組んで参加してください。
533デフォルトの名無しさん
2025/05/16(金) 19:23:03.68ID:bpgu73R/534デフォルトの名無しさん
2025/05/16(金) 19:29:28.60ID:b58fLBSS535デフォルトの名無しさん
2025/05/16(金) 19:33:14.79ID:CtDSSAzz 当然ながら元々はボトルネックを特定した上で部分的にアセンブラで書いているのだろうし、
当時のスキルをもってすれば今5%も差が出ているならまずは原因箇所の特定くらいは簡単にできそうなもんだが、
なぜこんな解像度の低い状態で丸投げしているのか謎
オリジナルの開発をやった人がいなくなっちゃったのかもね
もはやRust関係ないけど
当時のスキルをもってすれば今5%も差が出ているならまずは原因箇所の特定くらいは簡単にできそうなもんだが、
なぜこんな解像度の低い状態で丸投げしているのか謎
オリジナルの開発をやった人がいなくなっちゃったのかもね
もはやRust関係ないけど
536デフォルトの名無しさん
2025/05/16(金) 19:35:12.11ID:b58fLBSS537デフォルトの名無しさん
2025/05/16(金) 19:39:18.59ID:zQbADFxC538デフォルトの名無しさん
2025/05/16(金) 19:45:26.73ID:b58fLBSS539デフォルトの名無しさん
2025/05/16(金) 19:48:17.71ID:zQbADFxC いつもの人間が判断するだけの事に名前を付けたのね
540デフォルトの名無しさん
2025/05/16(金) 19:49:07.71ID:zQbADFxC そうなると複オジ本人だなw
541デフォルトの名無しさん
2025/05/16(金) 20:03:38.49ID:CtDSSAzz >>537
一通り読んだけど、c2rustのunsafeコードを修正する際に適用することにしている、一般的に高速化に寄与すると考えられる作法を紹介しているだけで、
実行時のパフォーマンスについての詳細な分析結果は特に見つけられなかった
プロジェクトの概要なんかも見てると金貰って開発する上で結構厳しくQCD管理されてるみたいだから、
どうしても自分達で解決できないというよりは単に切羽詰まってるから助けてくれという感じなのかね
一通り読んだけど、c2rustのunsafeコードを修正する際に適用することにしている、一般的に高速化に寄与すると考えられる作法を紹介しているだけで、
実行時のパフォーマンスについての詳細な分析結果は特に見つけられなかった
プロジェクトの概要なんかも見てると金貰って開発する上で結構厳しくQCD管理されてるみたいだから、
どうしても自分達で解決できないというよりは単に切羽詰まってるから助けてくれという感じなのかね
542デフォルトの名無しさん
2025/05/16(金) 20:14:28.07ID:zQbADFxC 複オジは仮病だろうけど、最近の話題でこんな画像があった
統合失調症のブログが話題に「全てがわかる。すべてのすべて」
https://pbs.twimg.com/media/Gpy43ktaYAYMz9w.jpg
統合失調症のブログが話題に「全てがわかる。すべてのすべて」
https://pbs.twimg.com/media/Gpy43ktaYAYMz9w.jpg
543デフォルトの名無しさん
2025/05/16(金) 23:32:05.70ID:V5h5/o2J >>513
この種の速さ命のプログラミングではpanicコードを完全に排除するためその問題は起きない
この種の速さ命のプログラミングではpanicコードを完全に排除するためその問題は起きない
544デフォルトの名無しさん
2025/05/16(金) 23:35:06.70ID:ZEBLDPGc545デフォルトの名無しさん
2025/05/16(金) 23:48:27.11ID:+TOH8huo546デフォルトの名無しさん
2025/05/17(土) 02:16:37.18ID:hnIBgbwS >>545
頭おかしいのはみんな気づいてるからいいとして、せめてコテにしてNGさせてくれよな
延々中身のない仕様も理解していないレスバを目にするのも辛いしな
よりに寄ってこんな過疎スレに来なくていいのに
頭おかしいのはみんな気づいてるからいいとして、せめてコテにしてNGさせてくれよな
延々中身のない仕様も理解していないレスバを目にするのも辛いしな
よりに寄ってこんな過疎スレに来なくていいのに
547デフォルトの名無しさん
2025/05/17(土) 07:06:56.82ID:XtHNXmhB 科学 + 5ch
20種近くも検出された新しい「量子状態」は、量子コンピューター飛躍の鍵になるか [すらいむ★]
2025/05/16(金) 22:52:02.48
http://egg.5ch.net/test/read.cgi/scienceplus/1747403522/
>>これまで理論上の存在と考えられてきた量子状態の検出に、国際研究チームが初めて成功した。量子情報の保存や論理演算の基盤として応用することで、量子コンピューターの未来を変える鍵となるかもしれない。
※犯罪の手口が判明するのか
20種近くも検出された新しい「量子状態」は、量子コンピューター飛躍の鍵になるか [すらいむ★]
2025/05/16(金) 22:52:02.48
http://egg.5ch.net/test/read.cgi/scienceplus/1747403522/
>>これまで理論上の存在と考えられてきた量子状態の検出に、国際研究チームが初めて成功した。量子情報の保存や論理演算の基盤として応用することで、量子コンピューターの未来を変える鍵となるかもしれない。
※犯罪の手口が判明するのか
548デフォルトの名無しさん
2025/05/17(土) 07:42:04.23ID:lDt9R68w >延々中身のない仕様も理解していないレスバ
潰し屋だな
潰し屋だな
549デフォルトの名無しさん
2025/05/17(土) 08:40:26.34ID:qCs3WkDL 全能感があるだけ幸せなのでは?自分は真逆で老化がはじまったんかと思うぐらい
550デフォルトの名無しさん
2025/05/17(土) 10:25:49.04ID:+mXvyyg4 糖質というより発達系だろ
間違いを認めたら負けみたいな中華メンタルも持ち合わせてるけどあれは病気じゃなくて人間性の問題
間違いを認めたら負けみたいな中華メンタルも持ち合わせてるけどあれは病気じゃなくて人間性の問題
551デフォルトの名無しさん
2025/05/17(土) 10:34:31.56ID:9HrlEF5X キチガイの自白で荒らされてますが
Rust 1.0からちょうど10周年ですよ
おめでとう!
Rust 1.0からちょうど10周年ですよ
おめでとう!
552デフォルトの名無しさん
2025/05/17(土) 10:41:03.44ID:qCs3WkDL Rustのすべてが正しいという発想しかない異常者
553デフォルトの名無しさん
2025/05/17(土) 10:49:42.53ID:BnclY/n2 複オジ今日も快調に暴走
554デフォルトの名無しさん
2025/05/17(土) 15:50:10.71ID:P2bp1h/d 複ちゃん消したらもうこのスレの存在意義ないけど
555デフォルトの名無しさん
2025/05/17(土) 18:34:13.65ID:Vu4+Tz9e AI吹くちゃん二代目襲名
556デフォルトの名無しさん
2025/05/17(土) 19:44:04.18ID:t/yU0oIF 1.87で安定化したVec::extract_ifの機能がdrainに近いと思ったけど最初はdrain_filterの名前で提案されてたのね
自動で全部dropできないからdrain_filterとかdrain_ifだとだめらしい
drainが排出じゃなく吸収のイメージなのはFFが原因だな
自動で全部dropできないからdrain_filterとかdrain_ifだとだめらしい
drainが排出じゃなく吸収のイメージなのはFFが原因だな
557デフォルトの名無しさん
2025/05/17(土) 22:10:30.09ID:pKwTZqOi extract_if()はむしろretain()+捨てる分を取り出し(extract)と考えた方がいい
ただし残すをtrueか取り出すをtrueかで判定関数の真偽が逆に注意
ついでに判定関数の引数が&vec[i]から&mut vec[i]に変わってるため残すものも値書き換え可のおまけ付き
ただし残すをtrueか取り出すをtrueかで判定関数の真偽が逆に注意
ついでに判定関数の引数が&vec[i]から&mut vec[i]に変わってるため残すものも値書き換え可のおまけ付き
558デフォルトの名無しさん
2025/05/17(土) 22:46:26.94ID:t/yU0oIF 返されたイテレータを使い切らないと全部削除されないからretainとも微妙に違う
nextで取った分だけ削除だからpeekableとの取り合わせが悪そう
あと関数名はextract_ifじゃなくextractだけでよかった気がする
extractがないのにextract_ifがあるのは何かバランス悪い
drain_filterから紆余曲折あったみたいだから仕方ないけど
nextで取った分だけ削除だからpeekableとの取り合わせが悪そう
あと関数名はextract_ifじゃなくextractだけでよかった気がする
extractがないのにextract_ifがあるのは何かバランス悪い
drain_filterから紆余曲折あったみたいだから仕方ないけど
559デフォルトの名無しさん
2025/05/17(土) 23:12:09.74ID:pKwTZqOi >>558
書いた通り、retain()+捨てる分を取り出し(extract)
だから取り出さないと削除されない
イテレータが進んだ分だけretainと一致する
名前の_ifはすぐに類似のpop_ifが想起される
pop_ifでも条件判定の引数が可変参照で同じだからrangeをlastにしたものと見なすことができる
ifの付かないpopは無条件だから
ifの付かないextractも無条件となる
だからextract_ifというメソッド名が正解で一貫している
書いた通り、retain()+捨てる分を取り出し(extract)
だから取り出さないと削除されない
イテレータが進んだ分だけretainと一致する
名前の_ifはすぐに類似のpop_ifが想起される
pop_ifでも条件判定の引数が可変参照で同じだからrangeをlastにしたものと見なすことができる
ifの付かないpopは無条件だから
ifの付かないextractも無条件となる
だからextract_ifというメソッド名が正解で一貫している
560デフォルトの名無しさん
2025/05/18(日) 00:31:27.80ID:+SIFIDid すでにドレンフィルタって名称の一般的なものがあるけど…
排水管などのフィルター
排水管などのフィルター
561デフォルトの名無しさん
2025/05/18(日) 00:55:22.32ID:+SIFIDid coffee extractionはコーヒー豆の方を取り除いているのか液体(エキス?)を抽出しているのか
562デフォルトの名無しさん
2025/05/18(日) 01:05:08.64ID:GL3oFIgT extract は語源的には ex (外へ) - tract (引っ張る) だから、「取り出す・抽出する」といった意味合いが強い
563デフォルトの名無しさん
2025/05/18(日) 01:06:15.76ID:+SIFIDid コーヒー豆とコーヒーが混ざった物からコーヒーを抽出するよね
それをコーヒーを捨てているとは言わない
残ってる方は最後まで濾さないとコーヒー豆とコーヒーが混ざった物でしかないので無価値
一方で抽出したほうはコーヒーなので価値がある
この意味が判るかどうか?
それをコーヒーを捨てているとは言わない
残ってる方は最後まで濾さないとコーヒー豆とコーヒーが混ざった物でしかないので無価値
一方で抽出したほうはコーヒーなので価値がある
この意味が判るかどうか?
564デフォルトの名無しさん
2025/05/18(日) 07:46:36.17ID:AGGexLjT 企業献金、結論先送りへ 自公国法案、提出取りやめ [蚤の市★]
2025/05/17(土) 21:17:14.36
https://asahi.5ch.net/test/read.cgi/newsplus/1747484234/
全国1万1155の企業・団体の政治献金「97%」が自民へ、シンクタンク調査 [おっさん友の会★]
2025/05/14(水) 11:12:39.51
https://asahi.5ch.net/test/read.cgi/newsplus/1747188759/
2025/05/17(土) 21:17:14.36
https://asahi.5ch.net/test/read.cgi/newsplus/1747484234/
全国1万1155の企業・団体の政治献金「97%」が自民へ、シンクタンク調査 [おっさん友の会★]
2025/05/14(水) 11:12:39.51
https://asahi.5ch.net/test/read.cgi/newsplus/1747188759/
565デフォルトの名無しさん
2025/05/18(日) 09:41:45.81ID:6WAEpSNG Vecに含まれる構造体を参照しながら、別の構造体に変更を加える処理ってどれがベストでしょうか
566デフォルトの名無しさん
2025/05/18(日) 10:17:55.24ID:rfn3+MVd これは任意の方苦に向けて電波攻撃可能ということでしょうか?
プログラムの改造で下記が可能になるのでしょうか
「Xperia」が電波法違反、ソニーに行政指導--総務省
2024年12月13日 15時23分
https://japan.cnet.com/article/35227306/
>>スマートフォンにおいて「工事設計認証を受けた工事設計にない空中線を使用しての電波発射が可能な仕様となっている状態にあった事実が認められた」という。
プログラムの改造で下記が可能になるのでしょうか
「Xperia」が電波法違反、ソニーに行政指導--総務省
2024年12月13日 15時23分
https://japan.cnet.com/article/35227306/
>>スマートフォンにおいて「工事設計認証を受けた工事設計にない空中線を使用しての電波発射が可能な仕様となっている状態にあった事実が認められた」という。
567デフォルトの名無しさん
2025/05/18(日) 11:19:10.16ID:HgIqS8Uk >>565
色々方法があってどれがベストかは状況による
a. 変更内容を作成する処理と変更を適用する処理を分離する
b. split_mut系で更新部分と参照部分のスライスに分割する
c. takeとかreplaceで変更対象の構造体を一旦Vecから取り外す
d. Vec内の構造体を全部RefCellに入れる
可能ならaがベストかな
色々方法があってどれがベストかは状況による
a. 変更内容を作成する処理と変更を適用する処理を分離する
b. split_mut系で更新部分と参照部分のスライスに分割する
c. takeとかreplaceで変更対象の構造体を一旦Vecから取り外す
d. Vec内の構造体を全部RefCellに入れる
可能ならaがベストかな
568デフォルトの名無しさん
2025/05/18(日) 11:30:08.35ID:vhS9Z2b5 よくそんな意味不明な質問に答えられるなと思う
自分がアホなのか、予定された質問に予定された答えなのかわからない
本当にわからない
自分がアホなのか、予定された質問に予定された答えなのかわからない
本当にわからない
569デフォルトの名無しさん
2025/05/18(日) 11:41:01.25ID:6WAEpSNG >>567
かなり曖昧な質問に答えてくれてありがとう。
他の言語だとリストから参照で構造体を取り出して、他の構造体を変更したり色々できたけどRustだとかなり制限がキツくて躓いた。ChatGPTにも聞いたりだけどイマイチ納得できなくて、実際使ってる皆さんに聞きたくなったんだよね。
かなり曖昧な質問に答えてくれてありがとう。
他の言語だとリストから参照で構造体を取り出して、他の構造体を変更したり色々できたけどRustだとかなり制限がキツくて躓いた。ChatGPTにも聞いたりだけどイマイチ納得できなくて、実際使ってる皆さんに聞きたくなったんだよね。
570デフォルトの名無しさん
2025/05/18(日) 11:44:13.33ID:vhS9Z2b5 ChatGPTに聞いたなら質問を清書してくれただろ?
そっちを貼ればいいだろ?
謎すぎる
そっちを貼ればいいだろ?
謎すぎる
571デフォルトの名無しさん
2025/05/18(日) 11:45:25.47ID:wGoLP5Sv 意味不明な質問というのには完全に同意
質問と回答が矛盾してるので
さすがにこれは発達オジの自作自演ではないだろう
質問と回答が矛盾してるので
さすがにこれは発達オジの自作自演ではないだろう
572デフォルトの名無しさん
2025/05/18(日) 11:47:57.87ID:wGoLP5Sv あ・・・
自分の中では矛盾してなかったみたいww
自作自演発達オジの日本語能力の問題だったか
自分の中では矛盾してなかったみたいww
自作自演発達オジの日本語能力の問題だったか
573デフォルトの名無しさん
2025/05/18(日) 11:48:09.03ID:6WAEpSNG やりたいことは、構造体には関数も実装ししていて、その関数に大元のVecを渡してそれぞれの要素に変更をかけるみたいなやつだけど、ミニマムで質問してみた。一旦教えてもらったcに近い実装でコンパイル通ったけど、モヤモヤしたので聞いてみました。
574デフォルトの名無しさん
2025/05/18(日) 11:48:46.66ID:6WAEpSNG >>570
確かに、、、すまぬ
確かに、、、すまぬ
575デフォルトの名無しさん
2025/05/18(日) 11:52:57.81ID:GL3oFIgT 「別の構造体」というのは「同じVecの別の位置にある要素」という意味?
values[0] を参照しながら values[1] を変更するみたいな
values[0] を参照しながら values[1] を変更するみたいな
576デフォルトの名無しさん
2025/05/18(日) 11:57:42.82ID:zQyjSV37577デフォルトの名無しさん
2025/05/18(日) 11:58:51.15ID:vhS9Z2b5 書き方が回りくどいね わかりやすく
578デフォルトの名無しさん
2025/05/18(日) 12:05:59.38ID:6WAEpSNG >>575
そうです、言葉足らずでした。。。
そうです、言葉足らずでした。。。
579デフォルトの名無しさん
2025/05/18(日) 12:21:21.33ID:GL3oFIgT >>578
それはRustだと面倒なパターンなので仕方ない
{} でブロックを作って借用のスコープを短くする等でなんとかする
ここはボローチェッカーの気持ちの理解が必要
(なぜダメなのかはエラーメッセージが教えてくれてるから、そこは既に分かってるかもしれないけど)
同じことは構造体の別のフィールドを参照する場合も言える
構造体のフィールドaを可変借用しつつ別のフィールドbを参照するなど
それはRustだと面倒なパターンなので仕方ない
{} でブロックを作って借用のスコープを短くする等でなんとかする
ここはボローチェッカーの気持ちの理解が必要
(なぜダメなのかはエラーメッセージが教えてくれてるから、そこは既に分かってるかもしれないけど)
同じことは構造体の別のフィールドを参照する場合も言える
構造体のフィールドaを可変借用しつつ別のフィールドbを参照するなど
580デフォルトの名無しさん
2025/05/18(日) 12:26:55.54ID:vhS9Z2b5 う~ん
何が言いたいかわからる人にはわかるだろ?
何が言いたいかわからる人にはわかるだろ?
581デフォルトの名無しさん
2025/05/18(日) 12:29:43.83ID:NJShdjf5 何がやりたいのか全然わからん。
コードで示してよ。
コンパイル通らなくてもいいから Rust 風擬似コードって感じで。
コードで示してよ。
コンパイル通らなくてもいいから Rust 風擬似コードって感じで。
582デフォルトの名無しさん
2025/05/18(日) 12:54:12.76ID:uzz3fg67 複おじちゃんは今日もやらかしてるね
特有の癖が出てるのに自分ではバレてないと思ってるから面白い
特有の癖が出てるのに自分ではバレてないと思ってるから面白い
583デフォルトの名無しさん
2025/05/18(日) 13:00:12.37ID:zQyjSV37 困ったことが起きたらその問題が再現する最低限の最小構成コードを書いてみる
すると本質的な構造が見えてくる
その過程で自己解決することも多いだろう
わからなくてもその最小構成コードを貼って質問すればよい
すると本質的な構造が見えてくる
その過程で自己解決することも多いだろう
わからなくてもその最小構成コードを貼って質問すればよい
584デフォルトの名無しさん
2025/05/18(日) 13:58:46.67ID:6WAEpSNG >>579
やはりそうなんですね。ありがとうございます。
>>581
>>583
助言ありがとうございます。
ChatGPTにサンプルコード作ってもらいました。コンパイルは通らないですが、やりたいイメージはこんな感じです。
struct Unit {
id: usize,
hp: i32,
}
impl Unit {
fn act(&mut self, all_units: &mut Vec<Unit>) {
// 自分以外のユニットに攻撃したい
for unit in all_units.iter_mut() {
if unit.id != self.id {
unit.hp -= 10;
}
}
}
}
fn main() {
let mut units = vec![
Unit { id: 0, hp: 100 },
Unit { id: 1, hp: 80 },
Unit { id: 2, hp: 60 },
];
for unit in units.iter_mut() {
unit.act(&mut units); // ❌ コンパイルエラーになるが、やりたいことはこんな感じ
}
}
やはりそうなんですね。ありがとうございます。
>>581
>>583
助言ありがとうございます。
ChatGPTにサンプルコード作ってもらいました。コンパイルは通らないですが、やりたいイメージはこんな感じです。
struct Unit {
id: usize,
hp: i32,
}
impl Unit {
fn act(&mut self, all_units: &mut Vec<Unit>) {
// 自分以外のユニットに攻撃したい
for unit in all_units.iter_mut() {
if unit.id != self.id {
unit.hp -= 10;
}
}
}
}
fn main() {
let mut units = vec![
Unit { id: 0, hp: 100 },
Unit { id: 1, hp: 80 },
Unit { id: 2, hp: 60 },
];
for unit in units.iter_mut() {
unit.act(&mut units); // ❌ コンパイルエラーになるが、やりたいことはこんな感じ
}
}
585デフォルトの名無しさん
2025/05/18(日) 14:03:53.58ID:UzOJGd+R >>584
これも追加
// 自分以外のユニットに攻撃したい
↓
// 自分以外のユニットから奪い取る
if unit.id != self.id {
unit.hp -= 10;
self.hp += 10;
}
これも追加
// 自分以外のユニットに攻撃したい
↓
// 自分以外のユニットから奪い取る
if unit.id != self.id {
unit.hp -= 10;
self.hp += 10;
}
586デフォルトの名無しさん
2025/05/18(日) 14:16:39.01ID:UG4F7Ocv 自作自演スレ
587デフォルトの名無しさん
2025/05/18(日) 16:37:58.98ID:GL3oFIgT >>585
こんなのでどうだろう
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=871e0b5209dab043741c765000be6e5a
他言語からすると面倒に感じるかも
「要素 i への可変参照を持ちつつ、Vec全体への可変参照を持つ」のは借用チェッカーに引っかかるパターン
if unit.id != self.id の判定が必要なように「all_unitsの中にunitがいるかもしれない」という状況をそもそも借用チェッカーは防ぎたいので
なので、 split_at_mut() を使って参照範囲を ([i] への可変参照, 他の要素への可変参照) に分けてみた
他には Cell (内部可変性) を使うパターンもあるけど、このケースでこれを使うのはちょっと微妙な気がする
こんなのでどうだろう
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=871e0b5209dab043741c765000be6e5a
他言語からすると面倒に感じるかも
「要素 i への可変参照を持ちつつ、Vec全体への可変参照を持つ」のは借用チェッカーに引っかかるパターン
if unit.id != self.id の判定が必要なように「all_unitsの中にunitがいるかもしれない」という状況をそもそも借用チェッカーは防ぎたいので
なので、 split_at_mut() を使って参照範囲を ([i] への可変参照, 他の要素への可変参照) に分けてみた
他には Cell (内部可変性) を使うパターンもあるけど、このケースでこれを使うのはちょっと微妙な気がする
588デフォルトの名無しさん
2025/05/18(日) 16:40:13.34ID:GL3oFIgT >「all_unitsの中にunitがいるかもしれない」という状況
訂正:「all_unitsの中に自身がいるかもしれない」という状況
訂正:「all_unitsの中に自身がいるかもしれない」という状況
589デフォルトの名無しさん
2025/05/18(日) 16:59:42.16ID:tbHjRPms あんまりアドホックな対応で頑張ってもまた同様の問題でいちいち詰むよ
エンティティなんだから素直に内部可変性を使っておいた方が無難
僅かに遅くはなるだろうが、メモリアクセス効率まで気にするならECSパターンでも覚えた方がいい
エンティティなんだから素直に内部可変性を使っておいた方が無難
僅かに遅くはなるだろうが、メモリアクセス効率まで気にするならECSパターンでも覚えた方がいい
590デフォルトの名無しさん
2025/05/18(日) 17:43:23.59ID:HgIqS8Uk スライスを(init, mid, tail): (&[T], &T, &[T])に分割するsplit_midがほしいな
何かで似たような戻り値の型を見た記憶があるけど
何かで似たような戻り値の型を見た記憶があるけど
591デフォルトの名無しさん
2025/05/18(日) 18:24:32.38ID:UkfPMCWK 1つだけ外したい場合はOption+mem::take/replace使うのが自然だと思う
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=a84a532ace40d2bb6603510ca1307756
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=a84a532ace40d2bb6603510ca1307756
レスを投稿する
ニュース
- 「それでも、お米は高いと感じますか?」JA広告に批判殺到 コメ価格18週ぶり下落も、わずか19円…備蓄米の流通システムに潜む課題 ★2 [ぐれ★]
- 反撃の中居正広、一世一代の大勝負へ 元フジ女性アナとは「合意の上での性行為だった」と認識 ★17 [Ailuropoda melanoleuca★]
- 機動戦士ガンダム最新作『GQuuuuuuX(ジークアクス)』乃木坂46ネタで炎上 監督の鶴巻和哉氏は乃木坂ファン ★6 [Anonymous★]
- 自民 森山幹事長 消費税扱い“ポピュリズム政治は国がもたず” [少考さん★]
- 機動戦士ガンダム最新作『GQuuuuuuX(ジークアクス)』乃木坂46ネタで炎上 監督の鶴巻和哉氏は乃木坂ファン ★5 [Anonymous★]
- 消費減税・廃止すべき73% コメ高騰対応、不十分87% 共同通信世論調査 [少考さん★]
- 小泉進次郎(横須賀選出)、日産神奈川2工場閉鎖検討にブチギレ 「地元に情報が届いてない!本社に説明を求める!」 [377482965]
- GDP世界二位だった日本国がここまで衰退腐敗した原因って冗談抜きで何???? [804169411]
- 週末最後のお🏡
- 【実況】博衣こよりのえちえちネタバレが激しすぎるRPG9🧪
- 【悲報】日本人、「アフリカ料理」ときいてマンガ肉の丸焼きしか想像できない [377482965]
- 結局のところ幽霊って実在すんの? [342692744]