Rust part17

レス数が1000を超えています。これ以上書き込みはできません。
2022/10/06(木) 22:43:13.96ID:Re0G7B20
公式
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を学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part16
2022/10/06(木) 22:43:37.18ID:Re0G7B20
Rust The Book (日本語版)
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
2022/10/06(木) 22:43:46.54ID:Re0G7B20
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust Reference
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
2022/10/06(木) 22:43:58.88ID:Re0G7B20
☆WebAssembly(WASM) https://webassembly.org/ https://ja.m.wikipedia.org/wiki/WebAssembly
・Wasmer - The Universal WebAssembly Runtime https://wasmer.io/
-> WASI(WebAssembly System Interface)とEmscriptenに準拠したWASMを実行できるランタイム
・WAPM - WebAssembly Package Manager https://wapm.io/
-> WebAssembly製ツール/ライブラリのパッケージマネージャー
☆Rust
・wasm-pack - your favorite rust -> wasm workflow tool!
https://github.com/rustwasm/wasm-pack
-> WebAssemblyのrustcコンパイルサポート
・Yew - Rust / Wasm framework for building client web apps https://yew.rs/ja/
-> WebAssembly によってマルチスレッドな Web アプリのフロントエンドを作ることができる、モダンな Rust のフレームワーク
☆最近のWebAssemblyのニュース
・Publickey - Enterprise IT × Cloud Computing × Web Technology / Blog より https://www.publickey1.jp/programming-lang/webassembly/
・WebAssembly活用プロジェクト https://madewithwebassembly.com/
・WebAssemblyが気になるので調べてみた - Qiita https://qiita.com/t_katsumura/items/ff379aaaba6931aad1c4
・WASMとRustはVue.js/React.jsを打倒するのか? - JSへの侵略の歴史 https://zenn.dev/koduki/articles/c07db4179bb7b86086a1
・Typescriptの次はRustかもしれない https://zenn.dev/akfm/articles/81713d4c1275ac64a75c
・WebAssemblyはJVMやeBPFのリバイバルではない WasmがWeb以外でもアツい理由 - ログミーTech https://logmi.jp/tech/articles/324956
・Rust GUI の決定版! Tauri を使ってクロスプラットフォームなデスクトップアプリを作ろう https://zenn.dev/kumassy/books/6e518fe09a86b2
類似スレ
【wasm】ブラウザでC++。Emscriptenを語ろう https://mevius.5ch.net/test/read.cgi/tech/1547549448/
2022/10/06(木) 22:44:37.34ID:Re0G7B20
>>1
前スレのurlはれてなったよぉ…
Rust part16
http://mevius.5ch.net/test/read.cgi/tech/1656285423/
2022/10/07(金) 01:27:41.85ID:YCt9Quz7
>>1
おつ
7デフォルトの名無しさん
垢版 |
2022/10/07(金) 11:28:42.39ID:d4ub3t4L
>>1
O2

Nim に浮気中
2022/10/07(金) 12:26:19.13ID:+0mlf9Ez
Null安全でないGC言語のNimに浮気する人
2022/10/07(金) 12:31:49.01ID:7pvxFIpA
Null安全性が入れば雑なスクリプト用としては使えるんだけどな
2022/10/07(金) 13:04:35.78ID:KVLYaA/l
雑なスクリプト用途ならもっとシェアあって長続きしそうな競合が色々あるからなあ
2022/10/07(金) 13:36:57.50ID:yqDZzsii
Rustも意外に雑に手軽に書けるケースが多いと分かってきた
数値以外は先にスタック上に変数を用意(=メモリ確保)してしまえば
後はその参照を使ってアクセスするだけで所有権もライフタイムも気にせず気楽にコーディングできるんだな
2022/10/07(金) 15:04:20.94ID:xg0qXK5h
lifetimeや所有権よりshared xor mutableの方が煩わしいと感じる人は多そうに思う
2022/10/07(金) 15:24:21.69ID:BlyXu4eU
僕はヌルヌルおまんこは好きですね
2022/10/07(金) 15:25:06.27ID:CNFz94QB
>>12
Cだと可変ポインタだらけだからその感覚では書けないからねぇ
考え方から矯正しなきゃならんし面倒ではある
2022/10/07(金) 15:53:22.67ID:5wCZEj21
スレッド内ならばCellが使えるから可変性も自由自在だよ
2022/10/07(金) 15:57:51.33ID:4o6UHnyi
Cellを使ったら負け
2022/10/07(金) 16:08:39.72ID:CWgGAn1/
Cellは安全性・高速性・利便性を両立するRustの最重要パーツの一つ
2022/10/07(金) 16:27:35.67ID:tZ5nTuVj
だんだんトンデモスレになってきてるね
2022/10/07(金) 16:33:32.37ID:UzCytJZE
Rust2っていつぐらいになりますか?今のままだと使いづらいです。。。
2022/10/07(金) 16:36:51.77ID:XhwpMEr8
Cellを使わずにshared xor mutableに囚われて不自由なプログラミングしている初心者は意外と多いね
2022/10/07(金) 16:38:47.86ID:+z0uh25z
>>18
真に受けて複オジ2世が生まれないことを願ってる
2022/10/07(金) 16:49:17.62ID:Znh4X5V+
Cellの利便性を知らない初心者がいるのは直感に反するからだろう
Cellは可変参照なくても非可変参照だけで書き換えられるからな
2022/10/07(金) 16:51:07.23ID:BSEaYe20
Cellを使うデメリットはないの?
ないならデフォルトがCell相当になっててもよさそう
2022/10/07(金) 16:56:27.41ID:Znh4X5V+
>>23
Cellのデメリットは唯一!Syncだけ
つまりスレッド内部でしか使えない
2022/10/07(金) 17:20:16.20ID:Znh4X5V+
誤解のないように言えば
スレッドを使わずにシングルスレッドの状況でももちろんCellを使える
2022/10/07(金) 17:44:54.27ID:0oTv+2yR
組み込みとかだとヒープの利用が難しいので自然とスタックメインになる
2022/10/07(金) 17:45:11.12ID:uxbzrjvk
>>23
コンパイル時の検査を緩めるかわりに実行時に検査が入る。
借用規則に逆らえるわけではない。
2022/10/07(金) 17:53:21.56ID:xg0qXK5h
>>27
それはRefCellでは
2022/10/07(金) 17:55:50.86ID:Znh4X5V+
>>27
Cellは実行時検査も無くコストゼロです
スレッド内なので借用規則に逆らえます
2022/10/07(金) 18:21:14.63ID:uxbzrjvk
そっかー。
2022/10/07(金) 19:26:54.49ID:CNFz94QB
CellはCopy traitが必要なので場合によってはとんでなくパフォーマンスが劣化する場合がある

単なる数値なら問題はないが
2022/10/07(金) 19:45:02.34ID:Znh4X5V+
>>31
そんなことはない
Cell<T>のTは完全に自由でありCopy要件はない
Cellで数値だけでなくVecやString等も自由に使える
例外的に一部のメソッドはCopy要件を持つがそれはOption<T>等でも同じでありそのメソッド特定のみの話
2022/10/07(金) 19:48:12.01ID:xg0qXK5h
>>31
Cell::takeやCell::replaceなど追加されたのでCopyを実装してない型でも使えるよ
StringやVecなどCopyできない型を扱う場合でも
元の値をtakeして更新後replaceするなどうまく書けばそれほど非効率にもならない
2022/10/07(金) 19:52:07.74ID:xg0qXK5h
CellやRefCellはshared xor mutableを知った上で適切に使った方が良いと思うので
初学者へ勧めるべきかというと微妙な気はするなあ
2022/10/07(金) 19:58:58.94ID:Znh4X5V+
>>34
Cellは安全性が完全に保証される型
他の型と同様に万が一に間違った使い方をしたらコンパイルエラーとなり常に安全が保証される
初心者かどうかといった区別や考慮はそこに必要ない
2022/10/07(金) 20:08:27.14ID:YCt9Quz7
何がしたいの?
2022/10/07(金) 20:16:39.71ID:CNFz94QB
>>33
takeってデフォルト値に置き換えて所有権をもらうやつでしょ?
うーん、なんか気持ち悪さはあるんだよな
38デフォルトの名無しさん
垢版 |
2022/10/07(金) 20:49:01.57ID:3/fEI9MA
>>33
Cellの更新はset()で十分だね
もちろんreplace()してoldを捨てるのと同じ

>>37
take()はdefault値とのreplace()と同じ
これは気持ち悪いことでも何でもなくて
例えばmutableなOption<T>を維持しながら扱う時と同じ操作
その場合もSome(T)からTを取り出す時にdefault値と入れ替えるtake()を使うよね
何かが入っていないと未定義になるからその身代わり
もちろんすぐに更新する場合は概念上だけの扱いとみなせるし
実際の生成コードでもdefault値が入るコードは最適化で消えちゃう
未定義状態を避けるための自然な操作と捉えてよいかと
2022/10/07(金) 21:02:50.21ID:CNFz94QB
>>38
うーむ確かにそう言われるとむしろRust Wayな気がしてきた
2022/10/07(金) 21:12:11.57ID:4RElSAp/
不必要にCellを使ってみたくなるのはRust厨二病によくみられる症状
悪影響は少ないから温かく見守っておけばそのうち治るよ
2022/10/07(金) 21:18:22.03ID:7pvxFIpA
まとめると実行時に値を書き換えたいオブジェクトにはCellを使う
書き込む場合はset
読み込む場合はtakeを使う

RefCellはオワコン
2022/10/07(金) 21:30:00.49ID:Znh4X5V+
>>40
内部可変性を知らないのかな?
Cellは内部可変性を与えるものであり
& mutに縛られずにコーディングの自由度を上げるだけでなく
この内部可変性を使わないと記述できない場合もあるほど重要なもの
2022/10/07(金) 22:49:11.13ID:xg0qXK5h
> inherited mutability is preferred, and interior mutability is something of a last resort.
内部可変性は必要な時だけつかうべき
https://doc.rust-lang.org/std/cell/
44デフォルトの名無しさん
垢版 |
2022/10/07(金) 23:05:27.46ID:3/fEI9MA
スレッド間での共有ができないからその場合は内部可変性を避けないとコンパイルエラーとなっちゃう
しかし共有しないものならばいつでも安全に使うことが出来ます
不自由なプログラミングをしてまで内部可変性の利用を避ける必要はありません
そのような場合にはむしろ使うべき時ですよ
2022/10/07(金) 23:15:28.30ID:GE9TWYxP
The Bookの内容も理解してないようだから厨二病というより厨一病だねぇ
2022/10/07(金) 23:27:40.94ID:Znh4X5V+
>>45
The Bookでは
CellはSyncを実装していないからマルチスレッド間では使えないことしか書かれていない
2022/10/07(金) 23:41:21.31ID:xg0qXK5h
>>46
!Syncが許容される場面では常にCellを使うべきだと考えていますか?
2022/10/07(金) 23:44:26.62ID:Znh4X5V+
>>47
常に?
そんな極端な主張を一度もしていない
他のものと同じで有用な時に使えばよい
そして有用な時が多い
それだけだ
2022/10/07(金) 23:59:28.46ID:v90MyUH0
Cellは安全なだけでなく
実行コストもかからないし
データ設計の幅も広がるし
メリットだらけだよね
2022/10/08(土) 00:00:53.53ID:74M5kg9b
後で読むからブログにでもまとめといて
2022/10/08(土) 00:05:55.63ID:PJN/h6/8
Cellを嫌ってる人って何かの病気なの?
数ある型の一つに過ぎないのに
2022/10/08(土) 00:09:24.75ID:STUNJ/8C
Rustレスバトル会場
https://mevius.5ch.net/test/read.cgi/tech/1657382429/
2022/10/08(土) 00:21:36.43ID:iVJbbbtq
Cell使わずにshared xor mutableの制限で苦しんでいる人は単なるバカ
2022/10/08(土) 00:35:12.49ID:D3DCz8sQ
CellとかRefCellってRustの本にも殆ど解説がないよな
ちょろっとおまけ程度にしかない
これなしでは現実的なプログラム書けないと思うのだが本の著者らはRustを理解してないんだろうか
2022/10/08(土) 00:52:04.60ID:2tIWkITu
>>54
書籍は見たことないから知らなかったけどそうなのか
自分が使っている著名なcratesのソースを見てみるとCellを使っているcrateも多い
だから普通に皆がCellを使っていてそこにタブーは無いようだ
まあ当たり前か
2022/10/08(土) 00:58:18.16ID:QzbKhEyQ
Cellなしでは現実的なプログラム書けないというのは言い過ぎ
ある種のプログラムではCellが必要になるくらいが適当では
2022/10/08(土) 01:04:15.77ID:2tIWkITu
Cellが必須となるプログラムと
Cellが必須でないプログラムがあるだけだよな
まあこれも当たり前かw
58デフォルトの名無しさん
垢版 |
2022/10/08(土) 01:12:26.49ID:M3iYd9Ol
Rustで日本が変わる!世界が変わる!
などとほざいてる人は自分では使っていないと思う。
使ってたら、ウーン、こりゃ使えんなあ・・・って言ってると思う。
2022/10/08(土) 01:34:11.88ID:2tIWkITu
Rustは今までに登場したプログラミング言語の中では一番使いやすく効率がいい程度だな
世界や日本がどうなろうとどうでもいいが
理解できない人たちとの不利有利の二極化は起こるだろう
2022/10/08(土) 03:41:06.69ID:D3DCz8sQ
>>55
The bookにはRefCellの解説はあるけどCellの解説がないんだよね
だからCellを使ってる人が少ないのかと思う
2022/10/08(土) 05:12:58.83ID:ci/6kpez
各crateのソース調べたらtokioもasync-stdもwasm-bindgenもCell使ってるな
別方面でtauriもyewもeguiもCell使ってるな
他にもproc macro用のsynとかCLI用のclapとか様々なcrateがCell使ってるな
この状況を見るとCellは普通に使って当然っぽい
62デフォルトの名無しさん
垢版 |
2022/10/08(土) 10:23:03.05ID:2effy6oa
>>38
それってCellから取り出した値がdefaultだった時の処理を書かないとならないんじゃないんですか?
2022/10/08(土) 10:55:13.71ID:/5aPtbi3
>>54
Cellは扱いの小さい本が多いがRefCellはだいたいどの本でもしっかり解説されてるでしょ

オライリー本はCellも解説してる
2022/10/08(土) 10:59:24.30ID:HCP3bqwV
Cellはスレッドローカルの共有状態を管理する時に使う
カウンタとかフラグとか

shared mutability自体多用するもんじゃないからその辺をよく考えてね
2022/10/08(土) 10:59:37.80ID:kYZ69ulT
>>54
Cの入門本の8割はmallocの使い方を説明してない
2022/10/08(土) 13:18:33.57ID:HbWzH6SV
どうせなら不変な部分を取り出せるようにしてすればよかったのにな。
参照カウントみたいなどこでも付いて回るのは厄介だけど。
2022/10/08(土) 13:48:31.81ID:D3DCz8sQ
>>63
ここの議論を見るとCellの解説を最初にやるべきだと思うのになぜRefCellばかりなのだろうという謎が
歴史的経緯みたいなやつか?
日本人の書いた本もRefCellばっかだよ
2022/10/08(土) 14:04:15.39ID:cMY3Tlwa
カジュアルにCellを使って欲しくないからだよ
よく考えて使わないとバグのもとだから
必要な人向けにはリファレンスで詳しく解説してる
2022/10/08(土) 18:26:38.20ID:r98Hfriq
>>62
マルチスレッド間共有していないから
空っぽの時に知らぬ間にアクセスされることはないよ
だから大丈夫
そしてすぐに更新することで最適化される
あとはプログラムの組み立て方の話であって言語による管轄の話ではないね
2022/10/08(土) 19:07:57.58ID:vMI7I1P7
interior mutabilityを持ち所有権を自分が持たないケースは特殊だから説明した方がいいかもしれないが、
interior mutabilityを持ち所有権を自分が持つケースは普通の事だからわざわざ説明するまでもない。

write lockを取るからborrow checkが実行時に遅延されるのも説明しないといけないし。
2022/10/08(土) 19:14:27.64ID:N7i/LeD2
Cellの使い方教えればRustユーザーも増えると思うな
所有権そのものより副作用を簡単には許さないところにハードルがあるから
2022/10/08(土) 19:30:29.77ID:Xn47a3bW
>>70
実行時borrow checkされるのはRefCellだけ
Cellはborrow checkもlockも無くてゼロコスト
2022/10/08(土) 20:24:05.46ID:QzbKhEyQ
カジュアルに使うならマルチスレッドでも使えるMutex使っておけばよいのではという気もするが
2022/10/08(土) 21:19:30.79ID:BDP0djZ+
CellはCにおけるグローバル変数と同じで真に必要な時以外は極力避けるべきもの
ましてやRustの基本的考え方に慣れてないうちから使うべきものじゃない
2022/10/08(土) 22:01:30.85ID:LnEoG2Yz
>>73
そこは真逆
Mutexはlockのコストがかかる
Cellはコストがかからない

>>74
Cellはグローバル変数ではなくローカルにいくつも出現可能
そしてグローバル変数のような極力避けるべきものではない
2022/10/08(土) 22:04:07.45ID:QzbKhEyQ
>>75
ロックのオーバーヘッドを気にする必要があるのはカジュアルに含まれません
2022/10/08(土) 22:06:04.90ID:aSXXl0gc
immutableなのがいいと言いつつ
mutやinterior mutabilityを結局使わせるダサさなw
2022/10/08(土) 22:39:37.88ID:K1piK/7g
>>76
Cell<T>ならスレッド内部専用の代わりにロックがなくてTと同じコストで使えるからオススメ
2022/10/08(土) 22:40:45.08ID:QzbKhEyQ
immutableだけで書きたければそうすれば良いのでは
そのアプローチに窮屈さを感じる人が大半だからshared xor mutableという安全に使えるサブセットが生み出されたわけで
2022/10/08(土) 22:42:33.20ID:QzbKhEyQ
>>78
ただしマルチスレッド対応させようとすると書き換えが必要だし性能面に大きなこだわりがないなら最初からMutexにした方が良いのでは
Cell<T>はランタイムコスト面ではTと同じかもしれないけどコード記述は結局
2022/10/08(土) 22:43:05.48ID:QzbKhEyQ
途中で書き込んでしまった

コードの記述の面ではTとは異なるから同じ使い心地にはならないよね
2022/10/08(土) 22:53:58.00ID:IDy6SwOh
>>80
それは君が勘違いをしている
Cellはマルチスレッドであってもスレッド内で使用することができる
Mutexを使うべき時はマルチスレッドのスレッド間で共有メモリとする時
排他制御のためMutexはコストが重い
したがって両者を互いに代用することは有り得ない
2022/10/09(日) 00:09:47.59ID:RlW+XoWS
よくわかんないんだけどMutex<Cell<T>>は有効なの?
2022/10/09(日) 01:31:18.81ID:LqCUQ5jH
>>83
無効ではない
しかしMutex<T>はlockを取れたら& mut Tも得られて書き込みも可能なのでCellは不要
例えば

fn main() {
 let m = Mutex::new(Vec::new());
 sub(&m);
 let v = m.lock().unwrap();
 assert_eq!(*v, [123, 456]);
}

fn sub(m: &Mutex<Vec<i32>>) {
 let mut v = m.lock().unwrap();
 v.push(123);
 v.push(456);
}

つまりMutexの可変参照をもっていなくても内部の可変性を得られる
ようするにCellで内部可変性を得られるのと同じ
だからMutex<Cell<T>>と二段に重ねる必要はない
2022/10/09(日) 01:46:07.36ID:NMoxe/se
>>84
なるほどー
めちゃくちゃ勉強になる
2022/10/09(日) 01:48:31.99ID:2Hsnp4rW
>>82
ランタイムコストが無視できる場合はMutexが使えるけどCellが使えないシチュエーションはないよね
カジュアル用途なら大は小を兼ねる的な意味でCellよりMutexの方が良いのでは?
Cellにすべき理由あるの?
2022/10/09(日) 01:49:26.64ID:2Hsnp4rW
>>86
一文目逆だった。MutexがCellを置き換えられない場合はないよね、と言いたかった
2022/10/09(日) 01:53:55.32ID:LqCUQ5jH
>>86
話は非常にシンプル
スレッド間でメモリを共有するならばMutex (ただし排他コストがかかる)
共有しないならばCell (コストはかからない)
適切な方を選べばよい
2022/10/09(日) 02:00:16.80ID:NMoxe/se
というかRustマジで良くできてんな
考え尽くされてるわ
2022/10/09(日) 02:01:56.84ID:Z8ziuvVg
要するに変数は全部Cellで囲っておけばいいんでしょ
2022/10/09(日) 02:08:28.77ID:2Hsnp4rW
>>88
スレッド間で共有しなくてもstatic変数だったらCell使えないのでMutexは単純にマルチスレッド用とも言えないのでは
よくわからない人向けにはMutexをまずは勧めるのが良いのでは
2022/10/09(日) 02:24:40.07ID:zCVUy+MP
Qt使おうかと考えているけど
バインディングライブラリのritualを勧めている人がいたけど
最後のコミットが去年でサポーターが心配なんだけど
結局Cのライブラリ読み込みや既存ライブラリの利用とかどれを使えばいいの?
2022/10/09(日) 03:05:30.55ID:LqCUQ5jH
>>91
それは基本的な理解ができていない
static変数はスレッド間で共有が可能なためその型はSync実装を必要とする
だからCellが使えないのは当たり前

スレッド間で共有する必要がないならば
スレッドローカルに持てばSync実装を必要としないためCellを使える
例えば
thread_local! {
 static FOO: Cell<Vec<i32>> = Cell::new(Vec::new());
}
これでスレッド毎に持つことができる
もちろんスレッドを使わないシングルスレッドな状況でも使える
2022/10/09(日) 04:37:34.70ID:8tdOWvz3
Cellって基本的に値がムーブされるから構造体分はmemcpyが起きると思うんだけどそこはどうなの
RefCellやMutexなら直接参照取れるからそっちの方が効率的だよね
2022/10/09(日) 04:57:14.58ID:95mox/4o
複オジの嘘に騙される前には少しは頭使え
2022/10/09(日) 05:51:16.25ID:md7RXs4/
隔離スレに帰れ
2022/10/09(日) 05:51:33.43ID:LqCUQ5jH
>>94
memcpyは起きない
Cellに関係なく一般的にムーブはあくまでもRustの言語レベルにおける概念的なもの
したがって生成コードでは無駄なメモリ間のムーブ(コピー)は起きずに最適化される

Cellの場合でも同様に最適化される
&Cell<T>に対してtake()してTを更新してset()するコードは
& mut Tに対してTを更新するコードと同じ生成コードとなる

例えばそれらの比較コード
https://godbolt.org/z/1TY9v33YP
完全に同じ生成コードとなっていることが分かる
つまりCell<T>はTと比較して実行時ゼロコストである
98デフォルトの名無しさん
垢版 |
2022/10/09(日) 07:01:12.90ID:vVo7+K5Y
RustコンパイラとLLVMは凄いなあ
いつでもそうだけど生成コードではがっちり最適化してくれる
抽象的に書いても安全に書いてもCと同じ速さ
2022/10/09(日) 11:45:38.50ID:kycCKtGO
おまえも隔離スレに帰れ!ちょっと前にLLVMだから凄い坊があそこで暴れてたけど、ここはgccrsとかやる人の場だ、市ね
2022/10/09(日) 13:36:44.30ID:1+WY+ral
gccrsって使えるようになったの?
2022/10/09(日) 20:46:00.69ID:yOxuO3a2
Linux6.1ってRustで組んだってこと?
2022/10/09(日) 22:32:00.35ID:pzhOBcZ9
ドライバ等をRustでも書けるようになるだけ
103デフォルトの名無しさん
垢版 |
2022/10/09(日) 23:29:48.75ID:FY4RBnfH
Pattern alternativesってなんですか?和訳のパターンORもよくわかりません
https://doc.rust-lang.org/book/appendix-02-operators.html
https://doc.rust-jp.rs/book-ja/appendix-02-operators.html
104デフォルトの名無しさん
垢版 |
2022/10/09(日) 23:53:45.87ID:vVo7+K5Y
パターンの代替策
つまり「|」記号が
bit演算のORとしてだけでなく
パターンのORとしても使われるよってこと
105デフォルトの名無しさん
垢版 |
2022/10/10(月) 11:32:20.19ID:wEJNunBW
>>69
なるほど
マルチスレッドで共有する場合にはどうするのが適切なんでしょうか?
106デフォルトの名無しさん
垢版 |
2022/10/10(月) 11:45:42.80ID:wEJNunBW
>>105
これか

https://qiita.com/muumu/items/f264ad781486d3dd037b
107デフォルトの名無しさん
垢版 |
2022/10/10(月) 18:49:06.89ID:lNBbmc/N
Linux Kernel6.1は、Rustへ移行した最初のバージョンとなります。
Rustへ移行することにより、C言語バージョンの世代から、およそ30%の高速化を果たしました。
2022/10/10(月) 22:52:16.26ID:3WEeN/aN
気分はCelltic!
「実はshared xor mutableってしっくりこないんです!」
109デフォルトの名無しさん
垢版 |
2022/10/10(月) 23:11:02.61ID:U+uG6kFy
>>105
内部可変性を得たい場合
スレッド内ではCell<T>もしくは参照を持ち出したいならRefCell<T>を使う
スレッド内部で普通の共有ならばそれらの&を使う (&mutでなくてもOK)
スレッド内部で所有者が別となる共有ならばそれらのRc<...>を使う

スレッド間では完全排他のMutex<T>もしくはreaders複数可のRwLock<T>を使う
(ただしTがi32やboolならばもっと軽いAtomicI32やAtomicBoolが使える)
スレッド間で共有は所有者が別となるのでそれらのArc<...>を使う
2022/10/11(火) 18:04:30.49ID:BiNGLwWh
>>97
最適化頑張ってるだけでムーブは概念的なものじゃないぞ。RBMMなんだから。
2022/10/11(火) 19:16:08.16ID:Bl5ahscm
moveがmemcpy呼び出しになるかどうかはあくまでも実装の話で
move自体のセマンティクスはデータのコピーを要求しないということが言いたいのでは

最適化offにして構造体サイズ大きくするとmemcpy呼び出されるから、memcpy起きないというのは嘘だけど
2022/10/11(火) 19:23:40.64ID:61VrJvDY
>>110
あくまでもRustの言語レベルでの抽象的なレベルではムーブはムーブであってビットコピーの保証はそこには一切ない
そして我々は抽象的な概念に基づいてプログラミングすればよい
生成コードはムーブという抽象的な概念だけを保証して最適化される
だからこそ生成コードではムーブでビットコピーが消え得る
2022/10/11(火) 19:29:43.10ID:61VrJvDY
>>111
memcpyはたまたまムーブの最適化なしのデフォルト状態で行われる可能性のあるコードにすぎないね
Rustの言語としてはmemcpyが必ず行われることなんて全く保証しない
ムーブはもっと上位の概念であってRustが保証するのはその上位の概念のみだね
2022/10/11(火) 19:51:08.13ID:Bl5ahscm
>>113
はいはい、>>111は誤読されかねない表現でしたね
(常に)memcpy起きないというのは嘘
と読み替えておいてください

元々の>>94のRefCellやMutexの方が効率的かという質問については、そういう場合もある、というのが答えで良いですよね

生成されるコードがどうなるかは最適化レベルや周囲のコードに依存するわけで、必ずどちらかが効率が高いと言えるようなものではない
感覚的には格納するデータサイズが大きい方がRefCell/Mutexが有利に、小さければCellが有利になりそうだけど、
ちゃんと測定したわけではないので実際のところは分からない
2022/10/11(火) 20:23:10.29ID:iRs2n6UT
>>114
実はRefCell構造体のメンバーにCellが使われている(現状)

使用されるメモリサイズ
Cell<T> ← Tと同じサイズ
RefCell<T> ← Tのサイズに加えてborrow管理のために内部で使用するCellサイズ分加算

動作コスト
Cell<T> ← (利用後すぐset()すれば)Tと同じコスト
RefCell<T> ← Tのコストに加えてborrow管理のために内部で使用するCellの読み書き操作コスト分加算
2022/10/11(火) 21:44:42.19ID:P/g9+OyI
ホント笑っちゃうくらい嘘を散りばめてくるよねw
117デフォルトの名無しさん
垢版 |
2022/10/11(火) 21:58:52.19ID:lchMb24F
>>114
RefCellやMutexの方が効率的かという質問については
代用として使うならばそれらの方が遅いでしょう
RefCellはボローチェック処理が必ず入ります
Mutexは排他的ロック処理が入るのでさらに遅いです
2022/10/11(火) 22:06:38.86ID:Bl5ahscm
>>115
動作コストはT全体を置き換える場合だよね
TがVecで、一要素追加する場合のコストも計算してみてよ

>>117
ボローチェック処理が最適化で消えないことは保証されてるの?
ボローチェックや排他処理のコストはCellで発生するデータコピーより必ず高コストになるの?
2022/10/12(水) 14:10:22.75ID:IRDyECLz
ムーブ元の変数が使われないことがわかってるんだから
その変数の領域を使い回せばよいだけでしょ?
普通に考えてコピーとか起きないと思うんだが
2022/10/12(水) 18:26:20.15ID:R7/twQcO
自称分かってる人同士のケンカ
2022/10/12(水) 21:47:16.08ID:TdLmkMrU
RefCell使うのはアロケーションを避けたいからでしょ
2022/10/12(水) 23:29:45.96ID:MmGzrhE7
Cell<T>もTもメモリ領域は同じサイズで性質が異なるだけなのね

Cell<T>の更新はこうなるから
(1) メモリ→value読み出し // take()その1
(2) メモリ←default-value書き込み // take()その2
(3) valueを更新してnew-value
(4) メモリ←new-value書き込み // set()
コンパイラがまともなら(2)の部分はムダと判断して無くせそうね

さらにvalueの更新内容によっては (例えば足し算など算術の場合など)
その後にLLVMが最適化でメモリに対して直接実行する命令コードにするだろうから読み出し書き込みも消えるわけね
2022/10/13(木) 01:04:10.25ID:v9vBAx/l
CopyじゃないStringやVecで&mut selfとるメソッドを試せば違いが分かるよ
2022/10/13(木) 02:00:58.56ID:m/K7Pbd2
Copyを実装しない適当な構造体
#[derive(Default)]
struct Foo {
 inner: i32,
}
の &Cell<Foo> と &mut i32 の両方のケースで
>>122の最適化により同じ生成コードとなるから
Copyを実装してるか否かは関係ないみたい
2022/10/13(木) 03:36:21.71ID:Oo+uXzBV
>>124
それだと簡単にインライン化出来るからね
アロケーションが必要な型という意味でCopyじゃないStringやVecと言ったんだけど
Dropと言ったほうがよかったのかな
2022/10/13(木) 04:02:18.88ID:cMF4wuqy
アロケーション発生しなくても(i32, i32)とかにするだけでもう生成アセンブリ同じじゃなくなるね
2022/10/13(木) 08:01:16.32ID:wSzwAK9q
コンパイラが>>122
(2) メモリ←default-value書き込み
を削除する最適化をすれば
Copy実装なかろうがヒープを使おうが
生成コードは同じになるんじゃね?
2022/10/13(木) 15:12:31.34ID:FWxI+s/s
>>126
Copyにしてget/setにすれば同じになるかも
2022/10/13(木) 15:31:24.77ID:WZ96xtHr
macOSにおけるFirefoxのパフォーマンスを劇的に改善した方法とは?
メモリアロケーター「jemalloc」を独自にカスタマイズしたアロケーターを用いてメモリ管理を行っています。Firefoxのアロケーターでは並列処理時のロックを効率的に行うためにOSごとにネイティブなAPIを使用しているとのこと。このロックAPIとして、macOSではOSSpinLockが用いられていました。
https://gigazine.net/news/20221011-firefox-macos/

これって、Rustのメモリアロケーターがjemallocを基にしたRust実装になってるってことだよね?大昔はjemallocだったという話で
2022/10/13(木) 16:10:29.83ID:PFF+OL8h
>>129
現在の Rust はデフォルトではシステム標準のアロケータを使うはず。
一時期は Jemalloc (のバインディング) を使っていたけどだいぶん前にやめてる。
やりたければアロケータの差し替えは簡単に出来るので
大きなプロジェクトだと (必要な性質にあわせて) 専用のアロケータを持っていることはあるかも。
2022/10/13(木) 16:44:36.94ID:7pqOU2dm
>>129
この記事はrustまったく関係ないよ
Firefoxはすべてがrustで書かれているわけではない
2022/10/13(木) 17:51:45.20ID:Fb+ro4ZF
>>129
Rustでは1.32.0(2019/01/17)から jemalloc がデフォルトでなくなりましたが、理由はjemallocのほうがマルチスレッドでは
微妙に低負荷で速いですが、コンパイルバイナリで300kB追加されるのとjemalloc自体のバグなどで問題が出ていたから。

Firefoxは恐らく、Cargo.tomlでアロケターをjemalloc系(多分tikv-jemallocator)に変えていて速度を稼いでるのでは?
(完全に想像だけど・・・)

Rust で jemalloc を使ったら並列処理が速くなった
https://zenn.dev/hankei6km/articles/using-jemalloc-in-rust-speeds-up-parallelism
2022/10/13(木) 20:45:15.45ID:7pqOU2dm
>>132
C++とのinteropあるからrust側はC++のallocator呼び出しているだけで
独自に(オリジナルの)jemallocをリンクすることはしてないと思うよ
2022/10/13(木) 23:11:21.07ID:Fb+ro4ZF
>>133
元記事見ると、jemallocそのものを一部、リプレースして書き換えてるみたいね。firefoxのレタリングエンジン自体はservoで
tikv-jemallocatorを使ってるみたいだけど、リンクしてるのはその通りオリジナルではなく書き換えたjemallocになってるみたい
https://github.com/servo/servo/blob/master/components/allocator/Cargo.toml
https://searchfox.org/mozilla-central/source/memory/replace/logalloc/README
2022/10/13(木) 23:14:01.26ID:Fb+ro4ZF
いや動的リンクはしてないのかな?jemallocソースをリプレースして実行ファイルに組み込んでる
2022/10/13(木) 23:25:53.83ID:cMF4wuqy
Firefoxはservo使ってない定期
2022/10/14(金) 01:05:31.38ID:2gl6G2n+
>>127
コンパイラはそんなに賢くないってことじゃね?
2022/10/14(金) 10:36:15.19ID:P+TQoSXr
複オジの嘘をまともに相手してたらキリが無いよ
2022/10/14(金) 11:07:41.50ID:t+3JDnfr
おじさんなんで最近こっちにいるの?
隔離スレが機能しなくなったのとリンクしてるのが面白い
2022/10/14(金) 21:09:01.17ID:iCatm8xv
>>136
シッタカも出来ないかまってちゃん不定期
https://searchfox.org/mozilla-central/search?q=servo%2F&path=&case=false®exp=false
2022/10/15(土) 00:38:51.20ID:ZRY2KlKK
>>140
servoを構成するコンポーネントのうちfirefoxに取り込まれたstyloしか登場してないように見えるが
2022/10/15(土) 10:12:30.40ID:kho15VFl
複オジにマジレスしても意味ないよ
2022/10/15(土) 21:19:13.19ID:Sue68NiD
お前の主張は「Firefoxはservo使ってない」であって「styloしか登場してない」では無い、そもそもstyloだけじゃない
途方もなく低い技術力でマウント取りたいことが生きがいの薄汚いオッサン
2022/10/16(日) 01:52:37.08ID:xR2EqnpB
servoは独立したレンダリングエンジンだからservoを使うと言えるのはgeckoを丸々置き換えた場合では
というかallocatorの話はどうなったんだ
2022/10/16(日) 13:06:47.08ID:I4ihc4bO
「Firefoxはservo使ってない」定期、顔真っ赤の話しそらしオジサン、geckoを丸々置き換えた場合とか言い出したw
「styloしか登場してない」も消えたwww
あんたはアロケーターなんて興味ないだろwww
したけりゃしろ。自分からは詳しい技術的な話何もできない、マウントしたいだけ、業界にいる寄生虫
2022/10/16(日) 16:22:20.12ID:xR2EqnpB
>>134
firefoxのレンダリングエンジンはservoじゃなくてgeckoのままだよ
servoは次世代ブラウザ向けのレンダリングエンジンの実装を模索するための実験プロジェクトで、geckoを置き換えることを意図したものではないよ
servoの一部のコンポーネントは完成度が高くgeckoに取り込まれてはいたので、
servoが発展していったらgecko全体がservoで置き換えられる未来もありえたけど、
mozillaがservoの開発者レイオフしちゃったのでその可能性もなくなっちゃったかと

動的ライブラリや静的ライブラリとして他のアプリケーションにリンクするcrateの場合、リンク先のアプリケーションバイナリに含まれる(または、動的リンクされる)allocatorを利用するのが普通なので、
geckoのservo由来のrustコードもそうなっていて独自にallocatorを定義することはしていないんじゃないかな
2022/10/16(日) 18:59:51.30ID:qTG+zV4j
rust関係ないけどjemallocを日本語で読む時
ジェ-マロック派?それともジェム-アロック派?
2022/10/16(日) 20:24:24.45ID:xR2EqnpB
Json Evans mallocだからジェーイーマロックって呼んでる
2022/10/16(日) 22:45:33.29ID:SvF0Fhwf
それを言うなら malloc が (たぶん) memory allocate の略なんだから
ジェーイーエムアロックと呼ぶのが筋というものでは……。

俺はそもそも口頭で読み上げる機会がないから考えたこともなかった。
2022/10/16(日) 23:11:22.79ID:sz/XVYMu
開発者本人の動画見るとジェイ・マロックに聞こえるが
ジェイ・イー・マロックが短くなってるだけかなこれ
https://youtu.be/RcWp5vwGlYU?t=79
2022/10/17(月) 18:50:40.32ID:q3uOCHzu
>>146
servoじゃなくてgeckoのままは言い過ぎです、現にベクター系の2Dや、Canvasなどに使用するレンダラーはservo由来の
レンダラーが使用されます。その他はその通りでしょう
2022/10/17(月) 19:52:15.71ID:gBqRn20s
>>151
geckoを構成するコンポーネントの入れ替わりはあったけど
firefoxのレンダリングエンジンは生まれたときからずっとgeckoだよ
逆にgeckoじゃなかったら何なんだ
2022/10/17(月) 19:58:16.39ID:gBqRn20s
>>151
FirefoxにRustのコンポーネントを多く導入したQuantumプロジェクトの説明でも、ServoのコンポーネントをGeckoに取り込むと言っていて、
Geckoを置き換えるとは言っていない
https://wiki.mozilla.org/Quantum
2022/10/17(月) 21:29:09.32ID:MqsTBCMt
Rust関係ないからFirefoxスレでどうぞ
2022/10/17(月) 22:43:40.85ID:GuOtjDmV
もうその話題はいいよ
しつこいな
156デフォルトの名無しさん
垢版 |
2022/10/18(火) 10:08:56.84ID:1nhFYrk9
しつこくやって『Cell<T>はTと同じコスト』(真っ赤な嘘)を流したかったんでしょw
2022/10/18(火) 11:26:14.64ID:f2tKHPpy
termuxのrustずっとバージョン不整合で動かないな
rustupじゃそもそもインストール出来ない
158デフォルトの名無しさん
垢版 |
2022/10/18(火) 12:14:53.29ID:PMaXG0c3
>>157 俺は普通に動いてる
一応聞きたいんだけど、TermuxはF-Droidから入れたよね?
Play Store版はもうメンテナンスされてないから色々バグると思う
2022/10/18(火) 12:23:43.08ID:lAl7R2Of
>>153
あー、それ見てワカッタ風吹かしてんのな。「Rustのコンポーネントを多く導入」と言ってる時点で、styloだけじゃないし
2DレタリングのwebrenderもservoからのRust製だわ。”誰も”Geckoを置き換える=Geckoが無いなんて言ってない
https://github.com/servo/webrender
2022/10/18(火) 14:03:11.76ID:f2tKHPpy
>>158
F-Droidから入れてる
何故かlibllvm-14.soのリンクが出来ないと怒られてしまう
で入ってるllvmのバージョンが更新で15に上がってしまってる状態
俺環かも知れんね
161デフォルトの名無しさん
垢版 |
2022/10/18(火) 14:27:25.95ID:jB7ekv9R
あんまり自信がある訳じゃないんだけど、カーネルが64bitでユーザーランドが32bitみたいな環境だったりしない?
2022/10/18(火) 14:27:28.03ID:SAVTW7Pl
>>159
Geckoのコンポーネントを置き換える

Geckoを置き換える
は全然意味が違うでしょ

まあ日本語の問題で意図してるところは食い違ってないから反応するのはこれで終わりにするわ
2022/10/18(火) 14:32:25.86ID:JxWDHfdB
グーグル、Rustで書かれたセキュアなOS「KataOS」を発表
https://japan.zdnet.com/article/35194751/
2022/10/18(火) 15:37:54.47ID:f2tKHPpy
>>158,161
すまぬ色々やってる中で入れたnightlyの影響だった
お騒がせした
2022/10/19(水) 03:30:17.24ID:cvhlJCwu
fucsia「僕はいらない子なの?」
2022/10/19(水) 07:05:26.07ID:CJepXKVA
>>163
昔「おおっ!!!あのグーグルがまた何か新しいことを始めたぞ!すごそうだ!」
今「まぁーーたはじまったよ・・・」
2022/10/19(水) 11:11:44.42ID:H7L8/zfi
Googleが立ち上げては潰してきたサービス一覧「Killed by Google」
killedbygoogle.com
2022/10/19(水) 11:23:33.38ID:iHEkpSLR
何も産まないよりは健全よね
2022/10/19(水) 11:35:06.09ID:Dqx/r4FW
役に立つかどうかわからんものに手を出せる余裕が
個別の結果に関わらず
部分的な成果の積み上げで会社をブーストさせるんよ
2022/10/19(水) 11:38:58.17ID:Sj+PYk/j
まあ堅そうな名前ではあるな
2022/10/19(水) 12:24:59.02ID:j2B3ovC/
IoT向けOSって言ってるし組み込みOSなんて元々百花繚乱だろ。
組み込み機器の脆弱性対応なんて大変だし、そもそもその手の脆弱性が入り込みにくい言語を採用するのは合理的だと思う。
2022/10/19(水) 12:46:33.84ID:xwPbcXKV
日本ってやらない理由、出来ない理由並べる奴が多いよな
多くの日本企業よりGoogleの方が多く生み出しているし世の役に立っている
2022/10/19(水) 12:48:40.76ID:aUvB23KT
南朝鮮ってやらない理由、出来ない理由並べる奴が多いよな 多くの南朝鮮企業よりGoogleの方が多く生み出しているし世の役に立っている
2022/10/19(水) 13:00:38.45ID:xwPbcXKV
Rust Foundationへの参加はNECやFUJITSUよりSamsungの方が早いんじゃないかなぁ
国内大手で積極的にRustを推していこうなんて所はなさそうに見えるし
組み込みのRenesasとかもやる気なさそうだしな
2022/10/19(水) 19:58:52.34ID:+MAum9P/
出来ない理由を考えるのではなく!
176デフォルトの名無しさん
垢版 |
2022/10/19(水) 21:32:43.94ID:mHa4T+cl
日本が後進国になってきたのは政治の責任が大きいけど
IT分野で遅れてるのは総じて教育水準が低いからだよ
2022/10/19(水) 22:51:58.05ID:owfoFln4
民主主義国は政治の責任=有権者の責任
178デフォルトの名無しさん
垢版 |
2022/10/19(水) 23:03:48.16ID:kLmY2FYt
>>177
利権差配と中抜きしか考えない国賊を礼讃して
統一創価売国与党に投票し続けたやつの責任だろ
2022/10/20(木) 00:02:58.60ID:ce/AQgdF
まったく読むに値しないクソ書き込みの羅列の中で
>>170 だけが唯一価値ある輝きをはなっている
2022/10/20(木) 13:00:10.90ID:Px+TgmX7
在日だらけ。IT分野で遅れてるのは米国(英語圏)・中国の人口差だし、日本の人口減でもある。
世界中で、歴史上、移民以外で人口減を解決した国は1つもない
そういう意味では韓国などはでは優れたソフトウエアは1つもない。馬鹿な半島はAndoridのOSを
握ろうとTizenなどというゴミを掲げたが、食いついたのはNTTドコモぐらい
いま韓国で起こってるのはソフトウエアサービスの””ガラパゴス化””であり、GoogleやAmazon
Apple Payなどに対して参入障壁を作り防御するような、大昔の古臭い日本あった不公正貿易。
民主党政権時代だって3年あったわけだが、利権と中抜きしかしてない。やったことは仕分けだが
1つも役に立たないどころか、地方医療を崩壊させ、気象変動へ対処できるインフラ投資を
一時的止めた害悪しかなかった。その他にも野田政権による執拗な消費税増税もあった。
今彼らは英国が減税を匂わせただけで大混乱していることを見ずに、消費税ゼロを掲げている。

卑劣にも矛先を反らし、リベラルなのに移民反対派で、リベラルなのに「国賊、売国」などという言葉を使い、
まるで戦争前夜か、共産主義や社会主義のような物言いをするアホが出る時点で若い人の人材不足といえる。
2022/10/20(木) 16:07:13.38ID:zGrDbuOl
英国が減税しただけで、支持率が7% になったw
米国の金利上昇で、韓国の金利も0.5% 上がったw

なのに、借金が1千兆円もある日本の金利が、0%w

狂った世界中の経済学者達が、日本は不正をしている。
日本国債は破綻しなければおかしいと言ってるw

外人が幾ら日本国債を売っても、金利が上がらない。
破綻しないw

いい加減、借金が1千兆円もあるという財務省の嘘に気付け!w

YouTube で勉強しろ。
【TVじゃ絶対言えない話】国の借金は嘘!?中田敦彦が解説
2022/10/21(金) 19:45:15.15ID:xXJwtueL
WEB+DB PRESS、何度目のRust入門なんだい?
183デフォルトの名無しさん
垢版 |
2022/10/21(金) 20:10:13.59ID:HoCfXQGg
Rust入門は初めて
2022/10/21(金) 21:22:06.02ID:2TP3mE4K
pythonとrustを一通り試してみた
for文の入れ子で外側のforをbreakできるとか、数値を1_000_000と表現できるとか、
そんなところでrustのほうが行き届いている感じがした

ただpythonのリスト内包表記、添え字の-1で配列の一番最後を表すとかそんなのは便利だな
2022/10/21(金) 21:26:14.55ID:gnp0h5uN
Rust入門という感じではないな
Rustを使ったWeb入門という感じ
186デフォルトの名無しさん
垢版 |
2022/10/21(金) 22:25:35.46ID:YCtBy6Lb
>>185
Web+DB Press読者は簡単なWebアプリ開発はいろんな言語で経験済みで理解しやすいだろうからチュートリアルの対象に選んだだけでは?
2022/10/22(土) 13:19:56.51ID:OES5lhv+
>>186
普段読まないけどRustなので買ってみた
なかなかわかりやすかった
基本文法の解説が明らかに足りないけど
サンプルを理解するだけならこの程度で良いのか
面倒な部分が表に出ないようにうまくサンプルを調整してるし
2022/10/22(土) 21:03:49.60ID:Vp6sRBIs
借用がどうGCに関係するのかよくわからない
うまく説明しているサイトはないですか?
2022/10/22(土) 21:38:11.55ID:OES5lhv+
まずスタックとヒープを理解せよ
これは口を酸っぱくして言ってる
でないとRustは理解できない
190デフォルトの名無しさん
垢版 |
2022/10/22(土) 21:39:04.07ID:PO/EA+oY
とりあえずThe Bookの4章
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html

Rustをそれなりに習得しようと思うなら
The Bookとオライリー本を読むのが一番近道
2022/10/22(土) 23:56:07.88ID:OES5lhv+
両方とも初心者には辛いよなあ
わかりやすい入門書が待たれる
2022/10/23(日) 00:22:18.48ID:LnniM1YV
借用するときにデータをスタックに積む
スコープを抜けるときに一気にpopするので
GCがいらない、つまり、早い
heapだとGCのときにデータの移動が必要になる
ので遅い
この理解であってる?
193デフォルトの名無しさん
垢版 |
2022/10/23(日) 00:29:31.67ID:jNoMv4k0
ポインタとか参照とか他の言語で扱ったことない?
2022/10/23(日) 00:44:57.32ID:h/oZflgJ
heapが遅いの要因は、メモリの割り当て解放処理があるから処理量が多いとか、
割り当てた領域がバラバラになることでキャッシュ効率がさがることとかかと
195デフォルトの名無しさん
垢版 |
2022/10/23(日) 13:47:22.46ID:/F23RQvw
ページング処理みたいなのが、ヒープだと2重に行われるんじゃないの?
2022/10/23(日) 14:14:22.62ID:ioVOctq2
>>192
Rustでのその辺のメモリの動きはオライリー本に詳しく書いてあった気がするから読むべし
197デフォルトの名無しさん
垢版 |
2022/10/23(日) 15:30:09.10ID:t4UBj2/5
>>192
>>195
お前ら、具体的にどうされてるからスタックだと速いかわかって無いだろ、、、
2022/10/23(日) 18:33:19.09ID:QEVtmAwk
>>192
そんなに物事が単純なら良かったのに...
”スコープを抜けるときにGCがいらない、つまり、早い”、これは間違いでもある。インライン展開されるような高階関数なら良いが
ループ中でアロケーションしてしまうような記述をすると、その度に確保・解放されるので非効率になりかねないし、借用による
メモリーの管理ではないが、参照カウントを使用するSwiftでは、ループでボトルネックになることはある。
このためRustでは高階関数で書く事が一般的に(分かり易く)良い事とされる。あとスタックでどの言語も大体はスコープ外で
消えるのでヒープとスタックの区別は付けましょう

独立したGCスレッドが動く言語だと、スコープ外れでGCするとは限らないので、速い場合がある。一方で、高負荷な環境では
GCスレッドがありで、回収などインターラプトが入るのでRustが有利になる(=※こちらのほうがRustが重要視される理由)
いわゆるSTOP THE WORLD(DIO様風)だ。ただ、これが無ければ良いということではなく、循環参照などを作らなければ
問題ないという話で循環参照を作ってしまうのであれば、独立したGCスレッドは便利でもある

”GCのときにデータの移動が必要”になるかどうかは、GCのアルゴリズム次第であり、厳密には”データの移動が必要”になるのは
メモリーのフラグメント解消つまりコンパクション処理によるところが大きい。これは、近代的なOSでは似たような事を行っていて
これ自体が速度に大幅に影響を及ぼすとは言い難い
2022/10/23(日) 19:03:12.25ID:NZM9O6ur
>>198
> ループ中でアロケーションしてしまうような記述をすると
アホなコードで議論する必要あるの?
2022/10/23(日) 20:51:00.62ID:h/oZflgJ
一体何と何を比較しているのだ
2022/10/23(日) 22:09:39.72ID:HOBBKeJ+
なんかすごい早口で支離滅裂なこと言ってるけど
頭を整理した方が良いよ
2022/10/24(月) 16:50:56.92ID:SgELnO58
スコープを抜けるときにGCがいらない、つまり、早い

これが間違っている理由を教えてください
2022/10/24(月) 18:09:05.87ID:VKX4Fsrh
ヒープメモリの管理はそれなりに重い処理だというのが論旨のように見える。

GC を使った場合のように不要なオブジェクトの判別をしていくコストは Rust では生じないが
それを除けば空いてる箇所と使用中の箇所を上手いこと管理する実行時コストは
GC (に付随するメモリ割り当て) でやってるのとたぶんそんなに差はないんじゃね。
204デフォルトの名無しさん
垢版 |
2022/10/24(月) 18:49:41.29ID:8+UVFZyO
>>202
>スコープを抜けるときにGCがいらない、つまり、早い

確保したメモリはいつ解放するんだよバカ。
2022/10/24(月) 19:05:34.14ID:Off49nvS
文法で制約したら、書き手もコンパイラも
変数の寿命を厳密に特定することができて便利だろって事で、
どこにどう確保すると速いとか、そういう話とは別では
2022/10/24(月) 19:14:17.25ID:FdEAHzhz
GCがないので速い←わかる
スコープを抜けたらpopするだけなので速い←わかる
スコープを抜けるときにGCがいらない←スコープとGCは何の関係もないよね
2022/10/24(月) 20:07:47.96ID:rCA25jH/
まあGCは常に動く可能性があるからな
逆に全く動かない可能性もある
そこはGCのアルゴリズムによりけり
2022/10/24(月) 21:01:10.53ID:SgELnO58
スタックを使っているから
pop すればそのままメモリが解放されるという意味では?
209デフォルトの名無しさん
垢版 |
2022/10/24(月) 21:39:23.30ID:UxIqfb1a
何と何を比べて何が速いと思ってるのか整理しなよ
話はそれからだ
210デフォルトの名無しさん
垢版 |
2022/10/24(月) 22:49:30.31ID:c7GaYtEs
>>208
動的データ全部スタックに積むのか。すげーな。
2022/10/24(月) 22:54:45.01ID:9jOSWWIs
そんなことよりコンパイルの遅さマジでテコ入れろYO、非力なCeleronでactix-webのコンパイルしたら10分とかふざけてんのか?
2022/10/24(月) 23:05:21.00ID:XsMeW9pb
コンセプトがコンパイル遅くしても賢くするだから無理
2022/10/24(月) 23:18:23.86ID:b0depGja
依存ライブラリまで全部自前ビルドさせられてるわけだからな
コンパイル済みcrateの配布とかやってくれればなんとかなりそうではあるが
2022/10/24(月) 23:42:51.24ID:cJUnO/Lg
コンパイル高速化はユーザー側でもいろいろ工夫の余地はあるが
コア数多いマシンを使うのがいちばん効果がある
2022/10/25(火) 07:14:07.04ID:0Y9XP165
分散コンパイルか、差分コンパイルか、常にバックエンドでコンパイルか
2022/10/25(火) 08:16:49.84ID:A5TY3R0Y
>>211
流石にもっと良いマシン買えでFA
217デフォルトの名無しさん
垢版 |
2022/10/25(火) 08:49:49.17ID:1jHrAe9o
でもRustって錆だよね
2022/10/25(火) 11:17:17.09ID:5EjxpvPU
ライブラリ類も複雑化・大型化の一途をたどっているご時世だし
Androidをビルド出来ないようなマシンは開発用としては時代遅れじゃね
219デフォルトの名無しさん
垢版 |
2022/10/25(火) 16:49:21.94ID:pUVcngq8
環境負荷を下げるためにもTier1プラットフォームはビルド済みか半分ビルド済みを配布できるようにすべき
2022/10/25(火) 18:21:31.05ID:RZIJ148t
structのフィールドにasyncのクロージャ持たせるの面倒だな
2022/10/26(水) 00:21:17.27ID:+/Fbza6R
>>220
Pin<Box<dyn Future<Output = T>>> ではだめ?
2022/10/26(水) 01:59:13.05ID:TlW6c1+d
>>221
Box<dyn Fn() -> Pin<Box<dyn Future<Output = T>>>>
こんな感じ
2022/10/26(水) 03:12:53.76ID:J4zGWIbj
>>210
全部とは言っていないローカル変数だけだ
224デフォルトの名無しさん
垢版 |
2022/10/26(水) 07:48:04.37ID:i0Q+rT9S
>>223
GoだってJavaだってローカル変数はスタックを利用する。
2022/10/26(水) 08:03:17.30ID:xzd5i3vP
>>224
Go は知らんが Java は値型しかスタックに確保しないよ
配列使うだけでヒープ使う
226デフォルトの名無しさん
垢版 |
2022/10/26(水) 10:03:48.91ID:8iR+QuRY
んなこと言ったらRustだってBox使うだけでヒープ使われるだろ
2022/10/26(水) 10:28:26.80ID:poB2zSjv
ピープアレルギーでも湧いたのか?
2022/10/26(水) 10:55:30.37ID:xzd5i3vP
>>226
そりゃあえてBox使えばヒープ使うわな
極論バカ乙w
2022/10/26(水) 12:39:08.43ID:61QnplYU
ヒープで思いついたけどtest::benchってなんで使用したメモリ量出てこないの?Rustだってアロケーター自作できるなら出せなくないと思うんだが
2022/10/26(水) 13:39:05.90ID:29TlHyS0
c言語なんかも int a[n] とかはスタックから取ってきてる。昔はmallocしてたが。
とはいえlinuxのスタック領域はヒープとそんな変わらん。
2022/10/26(水) 13:49:21.71ID:OrdcPqRc
環境によるが、Rust のスレッドごとのスタックサイズのデフォルトが2MBとかで
バカでかいローカル変数や引数を使おうとすると、
簡単に実行時エラー/スタックオーバーフローを実現できるという
ちなみに、String はヒープを使う
232デフォルトの名無しさん
垢版 |
2022/10/26(水) 14:58:21.99ID:XcmPInF1
>>230
ん?
何が変わらんの?
2022/10/26(水) 16:10:38.33ID:+/Fbza6R
>>229
issueはあるが放置されてる
https://github.com/rust-lang/rust/issues/22666
こういうのは欲しい人が積極的に動かないとなかなか進まないよね
2022/10/26(水) 18:56:12.77ID:m/VlzFSs
C 以外の言語は、すべて浅いコピー・shallow copy でしょ。
実体はコピーされずに、参照だけがコピーされる

たぶん、ローカル変数も参照だけがスタックにあって、
実体はヒープにあるのでしょ
2022/10/26(水) 19:32:11.84ID:/Jbhrlo+
そもそもスクリプト言語はマシンスタック使ってないから
C/C++/Rust/Goみたいなコンパイル言語とスクリプト言語(PythonとかRuby)とではメモリモデルが全く違う

JVMのJITはVMスタックをマシンスタックに引き継ぐって処理をやってるけど
2022/10/26(水) 19:35:12.65ID:+/Fbza6R
>>234
Cにdeep copyの概念ある?
2022/10/26(水) 19:39:57.27ID:UI6BPQPg
>>236
たぶん >>234 は Java や C# などでいう参照型のことを言ってると思う。
2022/10/26(水) 19:41:30.91ID:WAf5RIwU
Box<T>って出現頻度の割に表記が長いよな
boxキーワードに変える案はどうなったんだ?
2022/10/26(水) 20:19:12.15ID:SEIcgM+j
>>230
まーた思いつきで適当なこと言ってるの?
2022/10/26(水) 21:39:27.98ID:xibmu52f
シャローコピーもディープコピーもプログラマに意識させるような言語の方がいいと思うけどなあ
2022/10/27(木) 17:59:59.22ID:36nf4K/2
C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
ポインタをそのまま複製するのがshallow copyでポインタをデリファレンスしてからその値を複製するのがdeep copyってだけやし
2022/10/27(木) 18:19:49.08ID:mzG41rMz
cだってポインタがネストされてたら順番に見てかないといけないのは他の言語と同じでしょ。
ネストを考慮しなくて良いならjavaだってcloneで一発コピーできる
2022/10/27(木) 22:00:27.64ID:rMi5UTbc
>>241
> C言語は低レベルすぎるからshallow copyやdeep copyを意識する必要がそもそもないしな
むしろ意識しまくりだろ
shallow copyとかdeep Copyとかのおしゃれな名前では呼んでないけど
244デフォルトの名無しさん
垢版 |
2022/10/27(木) 22:11:49.94ID:olmwGZ8d
複製おじさんディープコピー知らなかったもんねw
2022/10/27(木) 22:27:03.43ID:DBkkmtck
あえていうならCにおいては構造体のメンバをそのまま代入するのがshallow copy
構造体のメンバのポインタの領域を新しく領域を確保してコピー元の構造体を再帰的にmemcpyするのがdeep cooy
2022/10/27(木) 23:13:57.69ID:qcIge2ki
Cではというが大多数の言語がそうじゃね
2022/10/28(金) 00:02:58.28ID:Rl5QKwW8
deep copy は、ネストするから難しい

Ruby などは参照のリンクを断つために、
一旦、JSON などの文字列にしてから、オブジェクトを再構築したりする

Marshal もあるけど、色々な条件がつく。
IO, Proc, 特異メソッドが使えないとか
2022/10/28(金) 01:13:37.77ID:jXOvR4PJ
なんか話の脈絡も流れもなく各人が単語に反応して書きたいこと垂れ流すだけのスレと化してんな
2022/10/28(金) 03:43:44.96ID:01u53tKZ
高階関数はGCの性能に影響を及ぼすの?
2022/10/28(金) 09:27:53.24ID:jXOvR4PJ
Webpackの後継となる新バンドルツール「Turbopack」が登場。Rust製のネイティブアプリケーションでWebpackの700倍高速に。Next.js Conf 2022 - Publickey
https://www.publickey1.jp/blog/22/webpackturbopackrustwebpack700nextjs_conf_2022.html
2022/10/28(金) 16:15:00.57ID:AMrJHSke
JavaScriptっていつまでバンドルとかやるん?
252デフォルトの名無しさん
垢版 |
2022/10/28(金) 16:24:46.58ID:muqJ433+
いっそコンパイルしたら
2022/10/28(金) 16:28:04.57ID:AMrJHSke
wasmでそれやろうとしてるけど
wasmランタイムよりJavaScriptランタイムの方がまだ速いというトホホな状態
2022/10/28(金) 19:59:50.54ID:eNUtjibx
じゃあasmjsでよくね
255デフォルトの名無しさん
垢版 |
2022/10/30(日) 11:39:14.94ID:zV+ownbZ
何いってんだ
JavaScriptはRustの大口顧客だぞ
バカにするなんてとんでもない
JavaScriptの市場が大きいほどRustが儲かる仕組みなんだ
2022/10/30(日) 13:52:59.67ID:Ffhte1rz
moziraとgoogle, Microsoftと主要ブラウザメーカーが推進してるからな
2022/10/30(日) 19:41:21.29ID:TG2fSMWC
なんでvecの&mutに*が不必要なのか、いまいち理解してなかったけど

fn calc(n: &mut Vec<usize>) {
 (*n).push(1);
}

こういうことかー。そういうことだったのかー
258デフォルトの名無しさん
垢版 |
2022/10/30(日) 23:24:15.56ID:tkb7REiJ
struct User {
name : String,
age : u32,
}

fn main() {
let mut user = User {
name : "sato".to_string(),
age : 30,
};
user.age = 40;
user.name = "aaaa".to_string();
println!("{}{}", user.name, user.age);
}

"sato".to_string()で生成したStringは
user.name = "aaaa".to_string()後はどうなるの?
mainの}抜ける=プログラム終了時ようやく解放?
2022/10/30(日) 23:41:49.13ID:fG4j0a7a
Dropを自分で実装した型で試せばわかる
2022/10/31(月) 19:06:46.94ID:DHbQvQ7c
相変わらずLinusに怒られまくってるね
2022/11/01(火) 06:39:05.97ID:y5vMQo4Y
rust導入してもディレクトリ構造が汚くなるだけなのにどうして導入したんだろうね
正直撤回して欲しいわ
2022/11/01(火) 07:47:38.45ID:6ZBnCRFC
ディレクトリ構造なんかより優先すべきことがあるからだろ
rust使う意味を何も分かってないな
2022/11/01(火) 14:04:14.12ID:w6yg6Ajb
もうlinusがカーネル用にsafeな言語作った方がいいんじゃないの
既成言語じゃ既存の処理系と整合性をとらないといけないから
いろいろな不整合が生じる
2022/11/01(火) 14:12:23.10ID:XoXOtAeK
エコシステムの充実はユーザ規模によるところがあるから
たとえ言語の設計としてベストマッチでも特化しすぎると
(使い手が増えなくて) 雑多なツールやライブラリが出揃い難いということもありうる。

Linux くらいの規模なら専用言語を作っても割に合ったりするかな?
2022/11/01(火) 14:25:52.66ID:smDWdngC
linusがなんか言ったの?
ググってもlinux 6.1にrustが取り込まれた話しか見つけられなかった
2022/11/01(火) 14:50:17.04ID:FsVxrWah
>>263
なにそのgitな流れは。
凄まじく少ないコードで実現してしまいそうで恐ろしい。
ピーキーなのになって、普通の人は使えないのを期待しちゃう。
2022/11/01(火) 14:58:39.21ID:O+5UiM+O
>>263
linusはgcc拡張のCが最高だと思ってる人だよ
268デフォルトの名無しさん
垢版 |
2022/11/01(火) 18:29:34.49ID:cxS6KzKc
>>260
どれ?
2022/11/02(水) 15:56:44.98ID:ohjjd8k9
linuxもデフォルトcというよりもかなりカーネル用の拡張してるからrustもそうすればええわってのが
linusの主張でしょ。
2022/11/02(水) 16:18:07.00ID:qqWWqhkC
一応clangでもlinuxカーネルコンパイルできるようになっているということは、
LLVMに必要な機能はそろっているということだろうから、
rustcからそれらの機能を呼び出せるようにできれば良いのかね
271デフォルトの名無しさん
垢版 |
2022/11/02(水) 16:35:45.00ID:F11hp17c
リーナスゴシップとかどうでもいいスレチネタを続けるなよ
2022/11/03(木) 02:16:08.55ID:atTBpfYp
しょーもないシンタックスの話より有意義だけどな。
273デフォルトの名無しさん
垢版 |
2022/11/03(木) 05:38:58.72ID:CtTK5dM6
1要素タプルの書き方Pythonと同じなんだね
パターンマッチで参照外しと絡むとややこしいなぁ
// 要素1のタプルはカンマ必要
let (mut a, ) = (1, );
a = 100;
println!("{}", a); //=> 100

// 要素1のタプルはカンマ必要
let &(mut a, ) = &(1, );
a = 100;
println!("{}", a); //=> 100

// (式)と区別つかないからとか
let &(mut a) = &(1);
a = 100;
println!("{}", a); //=> 100

// error[E0308]: mismatched types
let &mut a = &1; // ←ココ
a = 100;
println!("{}", a);

// こっちはok
let &(mut a) = &1;
a = 100;
println!("{}", a); //=> 100

mutがどっちに付くのが優先なのか(イミュータブルなaの参照なのかaのイミュータブル参照なのか)覚えてないと適切に()付けられないね、覚えりゃいいんだけども
Rustの話に限らずもっと根本的な解決方法ってないのかな?
()をいろんな意味に酷使し過ぎでは?関数の引数部分、式の評価順変更、タプル、等々
型は後置修飾なのに&やmutはなんで前から懸かるの?
これ全部RPNにすれば解釈の曖昧さがなくなって優先順位の()が要らなくなり、関数呼び出しもf1(1, f2(2, 3), f3(4))は1 2 3 f2 4 f3 f1となって、タプル以外の()撲滅できないか?
274デフォルトの名無しさん
垢版 |
2022/11/03(木) 19:40:23.88ID:4W4icteo
>>273
()を色々使いすぎというのは同意だけどRPNだと今よりもっと使われないよ。
連鎖性言語とか好きだけど。
2022/11/03(木) 21:14:31.73ID:Z+updFpk
()については他の言語と同じだしそこで変に独自性を出してもなぁという感じ
2022/11/03(木) 21:15:01.48ID:t6ap+kyc
for &i in vec![0_usize; 5].iter() {
 //iのままなんちゃら
}

for i in vec![0_usize; 5].iter() {
 //*iでなんちゃら
}

参照外しはどっちをつかってる人のほうが一般的なん?
2022/11/03(木) 21:21:15.76ID:0fRPRys5
Copy実装してる型なら別にどっちでも……
2022/11/03(木) 21:35:17.79ID:b1nVlp4p
union で定義した型があり、タグビットに相当するビットで variant を区別できる場合に
enum と同じ表現でパターンマッチするというようなことは出来ませんかね?
マニュアルを見た感じでは出来なさそうなので駄目で元々な相談なんですが……。

それが欲しくなった事情としては抽象的なバイトコードマシンが定義されていて
そのバイトコードをそのまま enum にマッピングできれば楽なのになと思った次第です。
279デフォルトの名無しさん
垢版 |
2022/11/04(金) 04:42:50.90ID:QJXSkaei
.expect("なんとかかんとかfailed.");
expectの引数はこんな文章になりがち
.expect("なんとかexpected, but かんとか found");
ならまだいいけど
コード読むときexpectというメソッド名からその引数には"期待しているものの説明"を"期待"してしまう
慣れるんだろうか…
2022/11/04(金) 08:57:52.35ID:KcmeiRV8
>>279
英単語を声に出して読んでみ
2022/11/04(金) 09:12:11.15ID:NSu48ax/
>>279
公式のドキュメントにも
.expect("failed to parse number")
という例があるしあまり気にしない方がよさそう
https://doc.rust-lang.org/std/result/enum.Result.html#method.inspect
2022/11/04(金) 09:15:25.47ID:yWEsFaag
>>281
これ英語の分からん奴が書いたんだろう
2022/11/04(金) 09:25:36.66ID:u3TD418O
>>279
まあ慣れるしかないわな
俺もこの名前はおかしいと思うし世の中でもおかしいと思う人はいるようだ
https://stackoverflow.com/questions/66362625/why-is-rusts-expect-called-expect
284デフォルトの名無しさん
垢版 |
2022/11/04(金) 09:47:45.14ID:QJXSkaei
>>283
よかった、俺だけではなかったか
2022/11/04(金) 09:54:11.00ID:NSu48ax/
推奨されるメッセージのスタイルが定義されているので>>279は正しい
https://doc.rust-lang.org/std/result/enum.Result.html#recommended-message-style
どうしても気になるならこれを根拠にしてメッセージを修正するpull req送ると良いと思う
286デフォルトの名無しさん
垢版 |
2022/11/04(金) 11:58:42.90ID:hgziOenm
君、ぼくのおちんちんを舐めてみないかい
2022/11/04(金) 12:36:39.57ID:8jcY9XF+
.expect("ン拒否するゥ");
2022/11/04(金) 13:14:11.67ID:u3TD418O
.expect("もう少しぶっといイチモツを用意すべきです")
2022/11/05(土) 21:07:51.50ID:EPLuMYxk
expectがそもそも期待するという意味より、予想するという意味合いで使われてることが多い気がする
2022/11/05(土) 21:47:55.53ID:6MdwxjIj
ここまで1.65の話題ゼロか
291デフォルトの名無しさん
垢版 |
2022/11/05(土) 21:51:57.09ID:4ktyBPoJ
GAT難しいからw
292デフォルトの名無しさん
垢版 |
2022/11/05(土) 21:58:52.83ID:B2i8Nuif
Rust 1.65.0 の発表
2022 年 11 月 3 日 · Rust リリース チーム
https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html
新しい Rust リリースの詳細に入る前に、イランの宗教道徳警察によるMahsa Amini の悲劇的な死と、他の多くの人々の死と暴力的な抑圧に注意を向けたいと思います。詳細については、 https://en.wikipedia.org/wiki/Mahsa_Amini_protestsを参照してください。私たちは、人権のために闘っているイランの人々と連帯します。

↑BLMといいウクライナといい海外ITの政治的主張入れて当然みたいなノリ苦手
質実剛健のイメージだったがRustチームも同じでちょっとガッカリ
2022/11/05(土) 22:23:37.34ID:CC30py/U
嫌な世の中だな
2022/11/05(土) 22:33:26.02ID:zxpwXxCd
そういうのが嫌なら使わなければよろしい
2022/11/06(日) 03:47:36.18ID:5A+TXyoz
お、Backtraceがstabilizeされたか
めでたい
296デフォルトの名無しさん
垢版 |
2022/11/06(日) 23:25:31.82ID:tr7TV8Z+
>>295
うむ
2022/11/07(月) 14:30:18.00ID:5gh9UgGm
むしろ政治的な要素が少しでもあると過敏反応する日本IT連中のがキモいわ
2022/11/07(月) 14:37:07.26ID:3k6QMezQ
RustってSDGsだよね
2022/11/07(月) 16:35:16.97ID:F5fz3af4
みんなMSRVいくつにしてる?
2022/11/07(月) 21:29:16.68ID:oBOm8exD
日本人はまあ事なかれ主義だから仕方がない
2022/11/09(水) 08:18:29.70ID:JQdb1AnG
過剰反応というかツイッターでも左翼のトレンド操作がバレてしまったし
そういう必死な印象操作する奴らに全く反応しないのも正常性バイアスなだけで危険だと思うけどね
2022/11/09(水) 08:49:14.30ID:jv4fVWS/
別に操作でもなんでもなく前から人が選んでるって言ってたじゃん。
だからそういうのを過剰反応って言うんだよ。
303デフォルトの名無しさん
垢版 |
2022/11/09(水) 09:39:55.00ID:LmGx5OMY
>>301
ナイーブなやっちゃなぁ
どの国でも底辺ほど極右化しちゃうのは物事が見えてないからなんやな
2022/11/09(水) 09:48:57.31ID:fSnT1d04
貧困老人って左傾化してるイメージある
2022/11/09(水) 12:28:40.18ID:aAawVede
>>302
トレンドはどのように決定されますか?
トレンドはアルゴリズムによって決定され、初期設定では、フォローしているアカウント、興味関心、位置情報をもとにカスタマイズされています。

こういうAI系にRustが使われる可能性ありそうかな?
2022/11/09(水) 12:56:20.73ID:YZQA7nNX
>>305
コア部分がC++、FortranからRustに変わるとかはありそう
307デフォルトの名無しさん
垢版 |
2022/11/09(水) 13:03:43.26ID:tbXsBHme
>>304
それもまたナイーブな見方やなぁ
反自民党なら左、親自民党なら右やと思ってるんやろ?
2022/11/09(水) 14:25:41.02ID:bNBw/HLH
>>306
rustのGPU周りのツールチェインは整備進んでるの?
2022/11/09(水) 19:49:39.97ID:8uuc6jgH
>>308
GPGPU系は普通に使えそうな感じはしてるけどdeep learning周りはNvidiaが乗り気になるまで無理かもしれないと思えてきた
2022/11/12(土) 21:53:46.90ID:PWetNf5n
eguiつよそうだけどみんな興味ないの?
2022/11/13(日) 01:00:16.84ID:1Xo91Kz4
guiはeguiとtauriの2強になりそう
2022/11/13(日) 02:09:24.41ID:Uh0BavN1
eguiはエグイ
313デフォルトの名無しさん
垢版 |
2022/11/13(日) 02:33:53.13ID:RFRBhoEy
言うほど2強か?
https://www.publickey1.jp/blog/22/electrontauriguitauri-egui_010.html
2022/11/13(日) 21:44:40.30ID:SeSkk5iM
丸の内線ってマジでいらんよな
2022/11/13(日) 22:06:12.87ID:iM/fRtPp
脱Electronした純Rust製コードエディタが出ないことには評価し辛いな。
2022/11/13(日) 22:58:55.78ID:T5PK/vl5
そんなんLapceがあるだろ
317デフォルトの名無しさん
垢版 |
2022/11/15(火) 00:12:55.17ID:dw7MQVYD
Bevyの変更量エグいな。1.0到達まで様子見するわ
https://bevyengine.org/news/bevy-0-9/
2022/11/15(火) 00:20:45.30ID:aZkMwykQ
米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨
https://japan.zdnet.com/article/35195997/

ハッカーらによるリモートコード実行(RCE)をはじめとするさまざまな攻撃からコードを保護するために、C#やGo、Java、Ruby、Swift、Rustといったメモリー安全性の高い言語に移行するよう推奨している。
2022/11/15(火) 00:37:48.72ID:91d2LP66
CやC++で書かれているライブラリに依存するのもやめた方が良いのかね
2022/11/15(火) 01:26:07.72ID:5Bng48RE
実績というのは何にも代えがたい証明だからね。
十分に広く長く使われて枯れたライブラリをすぐさま使用停止するほどではないと思う。
長期的には移行せざるを得ないと思うが。
2022/11/15(火) 02:05:15.69ID:9SlnRoJw
>プログラマー側での実行に大きく依存している
言語の問題ではなくて、処理系と設計の問題だろうけど
C/C++と同程度の注意力であっても、
比較的楽に安全な実装が可能という話か
2022/11/15(火) 05:58:46.96ID:XpLYghoG
RubyはRustの誤植な気がする
323デフォルトの名無しさん
垢版 |
2022/11/15(火) 06:20:05.09ID:dw7MQVYD
Javaもnull非安全クソ言語じゃんぬるぽ
2022/11/15(火) 07:20:48.25ID:GEd0aXfX
>>322
元の記事でも
The National Security Agency (NSA) is urging developers to shift to memory safe languages – such as C#, Go, Java, Ruby, Rust, and Swift
って書いてあるから誤植とかでは無いと思うがNSAのソースを示してほしいね
https://www.zdnet.com/article/programming-languages-these-top-four-rule-and-developers-are-happy-for-now/
2022/11/15(火) 08:46:43.91ID:91d2LP66
メモリ安全という意味ではRubyは条件満たしてはいるのでは
Pythonがないのは気になるが
2022/11/15(火) 08:47:01.64ID:UduTysKC
ソース
https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF
2022/11/15(火) 09:09:11.17ID:ott+UO1u
人工衛星イザナミ・イザナギでも、mruby を使っている

C はポインターでバグるから、
文字列処理などはポインターを使わない、安全なmrubyが良い

それで、mrubyから、Cのライブラリを呼び出せば安全
328デフォルトの名無しさん
垢版 |
2022/11/15(火) 11:32:13.77ID:LEUpsbho
文字列処理でポインタを使わないってどうやんの?
2022/11/15(火) 11:45:11.75ID:Ohwd0nE1
陽に使わないって事だろ
2022/11/15(火) 12:05:46.25ID:91d2LP66
言わんとすることは分かるけど人工衛星と文字列処理はあんまり関係なさそう
2022/11/15(火) 12:16:51.72ID:REyE3AUr
>>326
これからメモリーセーフな言語が沢山出てきそうだな
2022/11/15(火) 12:57:18.27ID:37NRafRf
メモリセーフかつGC無しの言語ってRust以外に増える気配ないよな
需要あるのに
2022/11/15(火) 13:11:29.50ID:bU8+MPV6
C++ は安全な言語に混ぜてもらえなかったんだな。
C++はCに寄せられてしまったのかと。
2022/11/15(火) 13:50:50.90ID:eF4hIM3d
「生ポインタを使わずスマートポインタを使う」
「オブジェクトのコピーはすべてムーブを使う」
を徹底すればそこまで危険ではないんだけどね
2022/11/15(火) 13:53:08.34ID:Ohwd0nE1
>>333
まあやろうと思えばCと同じことができちゃうからね
2022/11/15(火) 14:25:30.22ID:5Bng48RE
>>334
知っててもクソみたいな誤りをするのが人だからな。
2022/11/15(火) 15:49:10.51ID:91d2LP66
Google Chromeのバグの7割がメモリ安全関連というし、
C++で安全性を保ちつつ大規模複雑なアプリケーションを作るのは難しいのでは
2022/11/15(火) 16:00:29.49ID:AMPFJlS8
そりゃ「〇〇するよう気をつければ良い」が通るんならそもそもバグらないよう気をつけられるはずだしな
人間が気をつけるのと機械的にチェックできることの間には大きな差がある
2022/11/15(火) 21:18:52.91ID:oaKUlL5c
>「オブジェクトのコピーはすべてムーブを使う」

微妙に意味が分からん
2022/11/16(水) 03:16:38.83ID:+3Ecu7Qb
>>339
クラスにムーブコンストラクタとムーブ代入演算子を必ず実装して
それが呼び出されように書くということね
ゼロから書く場合は可能
つまりRustっぽく書く
しかし外部ライブラリを使う場合は破綻するので無理なのだが
2022/11/16(水) 07:33:54.12ID:NR4h2Di6
F#をトライしていたのですが、VSは重いし、VScodeは動かすことができず
Sublimeは何とか動くが、ライブラリをうまくアクセスできず図を出力できず
コマンドラインでの実行もバージョンが古いせいかこれもライブラリにアクセスできず
で、似ているというRUSTをテストしてみました

インストールも簡単、クレートの設定も簡単
コンソールでコンパイル、実行も簡単
webにあるサンプルをテスト、5つほどwarningがでていましたが図を出力できました
F#では実行環境を作るのに四苦八苦しましたが、RUSTはあっというま
感激してここにアップしました
今から勉強します
2022/11/16(水) 07:35:45.01ID:16ZvLDN4
「コピーは使わないでムーブする」なら意味が通じたが
343デフォルトの名無しさん
垢版 |
2022/11/16(水) 12:12:43.09ID:I1e3AS0A
>>342
そのつもりで書いてた。
推敲不足だったな。回線ケーブルで首釣るかもしれん。
2022/11/16(水) 18:02:22.96ID:+n4YDZit
一部のアスペ以外はそれぐらいの推論はできるからあまり気にしなくていいよ
2022/11/16(水) 18:02:43.41ID:QMFF+6Ax
そういうのは吊るを使う
2022/11/16(水) 18:29:22.77ID:XyYlAbZW
>>343
お前は誰だよw
俺を語ってんじゃねー
2022/11/16(水) 20:20:41.18ID:Lkj73ShV
.netでrustが使えれば無敵なのに
2022/11/16(水) 21:13:44.67ID:y4GxYc69
GCのランタイム環境でRUSTは意味ないんじゃ?
2022/11/16(水) 21:37:10.96ID:eOApcCVI
ML 系言語が Rust を高水準にした感じじゃない?
(というか ML の研究からリージョン推論が生まれて Rust に繋がっていったのだが……。)
.NET 用だと F# があるから使ってみても面白いかもね。
2022/11/16(水) 21:59:45.42ID:/cIgFYP8
.NETのライブラリが使いたいとかでは
351デフォルトの名無しさん
垢版 |
2022/11/17(木) 00:08:08.45ID:Wvvh1amI
rust難しすぎません?
僕はまだまだ、たぶん無理だけど、そこそこできるようになったとしても、全体の底上げがなければ普及が難しいのではという自己弁護
2022/11/17(木) 00:34:44.66ID:/MItGujg
既存のC/C++のコードをRustに書き直すのは
頑張らなくても良いですと言われていても
世界に一人ぐらい頑張る人がいて
再実装しましたみたいなのが時々出てくるな
2022/11/17(木) 00:48:28.80ID:SzkkMxOu
C++ 何となく使っているけど、Rust って難しいの?
C++ より難しいなら、先に勉強しようかな
354デフォルトの名無しさん
垢版 |
2022/11/17(木) 01:00:11.07ID:EPum3E1i
>>353 とりあえず動かすのはRustのが難しい
正しく動かすのはC++のが難しい
2022/11/17(木) 01:28:33.22ID:MDHZgFO+
C++ は未定義を踏むのがさすがに簡単すぎるのがいけない。
2022/11/17(木) 01:54:53.99ID:6uPAxih4
>>340
これを徹底すればC++も問題ないよ
2022/11/17(木) 03:15:48.27ID:Oh632irx
>>354
Rustは安全性と処理効率を保ったままさらに高みに登ろうとすると、C++では
可能だったことが不可能なことがある。
358デフォルトの名無しさん
垢版 |
2022/11/17(木) 05:38:42.23ID:MvDxl/Xz
>>356
徹底するのが難しい、って話だろ
2022/11/17(木) 05:39:00.42ID:7vp/wPcJ
>>356
「〇〇を徹底します」みたいな精神論が再発防止にならないのは業界の常識
2022/11/17(木) 05:39:30.88ID:7vp/wPcJ
>>357
具体的にはどういうケース?
2022/11/17(木) 07:38:31.41ID:HsWuKvxv
>>360
大規模なマルチスレッドとかじゃない?
それこそ「共有メモリは排他制御を徹底すべし」ってだけの話だけど
数百万行のコードベース全体に対して常時気をつけ続けるというのは人間には無理だろう
362デフォルトの名無しさん
垢版 |
2022/11/17(木) 07:44:38.30ID:EPum3E1i
>>361 マルチスレッドこそRustの得意分野だと思うんだけど
363デフォルトの名無しさん
垢版 |
2022/11/17(木) 07:48:15.39ID:AvIWLuzY
rustは所有権とかライフタイムとかなければ簡単で使いやすそうって印象
2022/11/17(木) 07:53:43.04ID:HKu8SavS
所有権やライフタイムがいらないならrustである必要ないのでは
2022/11/17(木) 08:37:34.35ID:HsWuKvxv
>>362
あ、逆の話か
C++だと不可能なことがRustだと可能になるって読んでた
357のは思いつかんね
366デフォルトの名無しさん
垢版 |
2022/11/17(木) 08:42:54.13ID:t8CddWfY
複雑なマルチスレッドのアプリで俺にしか直せないバグを故意に仕込むことならC++でしかできないかな
367デフォルトの名無しさん
垢版 |
2022/11/17(木) 09:56:45.90ID:AvIWLuzY
>>364
プログラマが全知全能でメモリ関係のバグを踏まないって仮定したら所有権やライフタイムがなくてもrustはc++以上の優れた型システムを持ってる
2022/11/17(木) 10:21:30.69ID:oUYdn6MU
>>367
Haskellの方が優れてるよ
2022/11/18(金) 17:50:50.73ID:nTmfkfcZ
米GitHubは11月18日までに、2022年にGitHub上で多く使用されたプログラミング言語ランキングを発表した。

その結果、1位は「JavaScript」だった。以降、2位「Python」、3位「Java」、4位「Typescript」、5位「C#」、
6位「C++」、7位「PHP」、8位「Shell」、9位「C」、10位「Ruby」と続いた。

Rubyに負けたらいけないだろw
2022/11/18(金) 17:57:22.15ID:G2UZSnwT
企業の人ってGitHub使えるのかな?
企業が使い始めたら増えると思うけど。
2022/11/18(金) 18:25:40.22ID:nTmfkfcZ
真の意味でホビーユーザーに支持されなきゃだめだよ
2022/11/18(金) 18:31:52.75ID:UFs4jVzI
ゆきひろにより開発されたオブジェクト指向スクリプト言語か
373デフォルトの名無しさん
垢版 |
2022/11/18(金) 18:55:51.18ID:fYiWUan7
このグラフ、Typescriptの躍進とRubyの凋落が対照的で興味深かった。
374デフォルトの名無しさん
垢版 |
2022/11/18(金) 19:00:57.54ID:WkS6x7hj
これか
https://i.imgur.com/QE0WMb7.jpg
2022/11/18(金) 21:08:51.27ID:8iIh2nXZ
C/C++の減少分がRustじゃね
2022/11/18(金) 21:48:16.28ID:G2UZSnwT
その説が正しい使い方気がした
2022/11/19(土) 00:42:59.64ID:h9f1WTcb
>>360
効率よくリンクリストやグラフ構造を使うこと。
この(前?)スレで散々議論されていた。
2022/11/19(土) 00:49:11.67ID:UL/detO7
いい加減スレ違いはやめろって
2022/11/19(土) 04:53:18.01ID:c1VeRjNF
>>377
全然具体的でなくて草
そりゃ散々議論(のつもりw)になるわ
コードで示すとか出来ないの?
2022/11/19(土) 09:49:20.36ID:RDqVxLmi
tscがRustだと書き直すのが難しいとか聞いたが
2022/11/19(土) 10:48:30.65ID:AeJpea+k
>>380
tscをRustに一部移植
元のコードがGC前提だから全体の移植は大変なのでGoに変更
GoはGoで無駄な作業が多くて大変。やっぱりRustのほうが良かったのでRustに戻す

というのが今の状況
来年あたりまたGoに戻ってる可能性はあるが
2022/11/19(土) 14:18:44.14ID:UL/detO7
>>381
移植とか考えずに仕様だけ洗い出してからRustで実装するのがベストでしょうね
仕様解析チーム(tscを読み込んでドキュメント化する)
とRust実装チーム(Rustのエキスパートたち)
この2チームがいれば十分だし
2022/11/19(土) 20:51:33.06ID:W8eLHJQE
Rustで実装が難しいようなアルゴリズムは不安全で時代遅れだ説
2022/11/19(土) 20:55:58.15ID:LAn7MDSu
解析してる間にどんどんtscの仕様は変わっていくよ
2022/11/19(土) 21:07:54.54ID:2PIO0unP
Rustってお互いに参照し合うようなグラフ構造を表現しにくいイメージある
2022/11/19(土) 22:17:39.01ID:ibRUDL6T
し難いのか不可能なのかどっちよ
2022/11/19(土) 22:23:36.77ID:yb7KRrg5
rustcでグラフ構造扱ってるよ
ポインタではなくインデックスでアクセする実装
388デフォルトの名無しさん
垢版 |
2022/11/19(土) 22:41:12.16ID:yWSzX/NN
>>387
なるほどなあ
2022/11/19(土) 23:28:51.73ID:PCVv4O5z
>>387
前スレ読んでもわかるが、それでやれば出来るのは分かってるんだけど、
効率が落ちるから「ゼロコスト安全性」ではない。
2022/11/19(土) 23:29:54.28ID:PCVv4O5z
>>383
リンク構造を持つデータ構造は今も発展途上中で今後も開発されていくが、
Rustでは取り扱いにくく、むしろRustこそ時代遅れ。
2022/11/19(土) 23:31:24.06ID:PCVv4O5z
ポインタが理解できない人は、ポインタが中心に居るところのリンク構造を全て
無視するから、Rustの欠点が理解できないだけ。
2022/11/19(土) 23:32:17.52ID:Bzioz9F5
>>386
しにくいだけ
>>1のHow to not learn RustとかオライリーのProgramming Rustでも指摘されてたはず
2022/11/19(土) 23:44:21.19ID:PCVv4O5z
>>386
不可能ではないが、C言語のように参照やポインタでダイレクトに取り扱うのが
不可能なので、インデックスを介してアクセスした、非常に複雑な仕組みで
アクセスしたりする必要があり、効率が落ちる。
マシン語レベルで見ると、アクセスすすために必要なコードが増えるから。
2022/11/19(土) 23:44:57.71ID:PCVv4O5z
誤:インデックスを介してアクセスした、非常に複雑な仕組みで
正:インデックスを介してアクセスしたり、あるいは、非常に複雑な仕組みで
2022/11/20(日) 00:54:20.94ID:uh6X/Buy
窮屈だからとか言って車に乗るときにシートベルトを付けないタイプの人かな
2022/11/20(日) 01:12:16.21ID:RgPem6BD
見かけ上はインデックスアクセスでも最適化がかかると途中のアドレス計算はほとんど消滅してポインタでやるのとそんなに差はなくなるよ。
ポインタを露骨に使うのはコンパイラ技術の未熟さをプログラマに補わせてただけ。
十分に高い能力のコンパイラにとってはプログラマが細々とした効率のための指示をするのはむしろ最適化の邪魔になる。

全体の構成やアルゴリズムの話ならともかく、細々とした部分はコンパイラのほうが人間よりよっぽど賢いんやぞ。
2022/11/20(日) 01:28:00.24ID:8zb5D3SN
ahoの「アルゴリズムの設計と解析」という古い本で木構造をインデックスアクセスで実装していたけど
rustにふさわしい実装だったんだな
この本はポインタがない言語を想定していたのだろうけど
2022/11/20(日) 01:29:41.16ID:mdre8ZhB
ポインタで書いた方が速いじゃんて事は現にあったし
昔だと、それでも遅いからってアセンブリ言語で関数書いて呼んだりしたが
今なら、そこまでやらなくてもいいだろう
これは、コンパイラの進化もあるだろうが、CPUの進化の恩恵が大きい
2022/11/20(日) 01:32:00.55ID:8zb5D3SN
脱ポインタの流れは変わらないと思うけどね
安全性とは程遠いからこれを無くさない限り絶対にメモリ安全性は守られない
2022/11/20(日) 09:27:21.62ID:feChXjeV
unsafeつかえばいいじゃん
2022/11/20(日) 13:59:12.71ID:9/YCbfcZ
>>396
インデックスを使おうとすると、1つのオブジェクトを作成する際にヒープから確保できず、
同じ集約(コンテナ)に属する全オブジェクトが入っている配列をreallocするような
動作が必要となり、スプリアス的に「停止時間」が入る。
また、その際キャッシュが大規模クリアされてしまう。
2022/11/20(日) 14:00:19.95ID:9/YCbfcZ
>>400
前スレ(?)で、それでは済まないことが指摘済み。
2022/11/20(日) 14:05:25.97ID:9/YCbfcZ
>>399
自分が理解できないことは「ダメ」なこととしたり、排除しようとしてしまう。
典型例としては:
・数学が苦手な人 --> 数学不要論に走り、学校で教えることすら禁止させようとする。
・オブジェクト指向のメリットが理解できない人 -->オブジェクト不要論に走る。
・ポインタが苦手な人 --> ポインタを排除しようとする。
Rustはポインタを使うデータ構造を上手く使えなくなるようになっているので、
ポインタが理解できない人は、他の人も使えなくなって安堵の境地に浸れる。
オブジェクト指向で最も大事なclassの概念も使えなくなっているので、
オブジェクト指向が使えこなせなかった人は、他の人も使えなくなって、
競走上の劣等性を感じなくてすむ様になって得した気分になる。
しかし、現実は、そう甘くは無い。
2022/11/20(日) 14:06:00.71ID:RgPem6BD
>>401
> 必要となり

ならない。
2022/11/20(日) 14:09:39.17ID:9/YCbfcZ
>>404
インデックスは「連番」なので、その集約に属する全てのノードが、
1つの配列に入ってなければならない。
だから、ノードを追加した時に配列の容量が足りなくなると、
全ノードを入れるための配列の再確保が必要となる。
(全ノードが十分入る容量の配列を一気に確保して、move 動作が必要となる。
この際にキャッシュがほぼ全クリア状態になる。)
2022/11/20(日) 14:14:51.22ID:9/YCbfcZ
>>401
[追加]
さらに、それに加えて、インデックスからオブジェクトにアクセスする際には、
オブジェクトのアドレス計算が必要となる。
それに、次のような掛け算が必要となる:
size = sizeof(OBJECT);
address = base + index * size; // 掛け算。
掛け算は計算科学上遅い処理であり、避けるべき処理である事が知られている。
2022/11/20(日) 14:16:00.87ID:YFSLlDHr
Rustで複雑なことをさせなければいい
2022/11/20(日) 14:19:02.05ID:RgPem6BD
>>406
> 遅い処理

遅くない。
2022/11/20(日) 14:19:28.58ID:9/YCbfcZ
>>406
[補足]
ただし、index * size の値を、「offset 値」として予め計算しておいて、
index値ではなく、offset値をindex値の代わりにすると、この掛け算は
除去できる。
このoffset値は、「相対アドレス」や「相対ポインタ」に相当する。
2022/11/20(日) 14:20:12.92ID:9/YCbfcZ
>>408
ポインタよりは遅い。
32BIT値の掛け算は、16クロックほど掛かる。
2022/11/20(日) 14:20:23.64ID:8zb5D3SN
>>405
Vec使えばそんな不効率なことはせんよ
2022/11/20(日) 14:23:27.03ID:RgPem6BD
>>410
かからない。
原理的には掛け算が高コストなのはわかるが現代の CPU は
その差を埋めるために高度なアドレシングモードを用意した。
2022/11/20(日) 14:26:55.83ID:9/YCbfcZ
>>411
不可能。
2022/11/20(日) 14:27:54.72ID:9/YCbfcZ
>>412
>その差を埋めるために高度なアドレシングモードを用意した。
全く関係無い。
imul命令のlatencyはどんどん速くなって、いて、いまや 3 クロックほどに
なっているらしいが、アドレッシングモードは関係無い。
2022/11/20(日) 14:31:49.56ID:RgPem6BD
>>414
imul は使われない。
関係ないものを持ち出しているのはそっち。
2022/11/20(日) 14:34:23.52ID:8zb5D3SN
この人大丈夫か?
なんか支離滅裂になってきてるが
2022/11/20(日) 14:43:00.42ID:AxU0uBeT
速度求めるならsizeは2のべき乗にするだろうしそれならバレルシフタで相当昔から1クロックで済むだろ
それほど大きくないサイズならアドレッシングモードでサポートしてるプロセッサーもあるし
ID:9/YCbfcZ はもう少しちゃんと勉強した方がいいと思うよ
2022/11/20(日) 14:48:48.34ID:YFSLlDHr
Rustで作ったdenoはなぜか遅いんだよな

https://dev.to/codesphere/bun-the-new-javascript-runtime-competing-with-deno-and-node-115d
2022/11/20(日) 14:49:57.69ID:9/YCbfcZ
>>417
メモリの無駄になるので、一般にはObjectのサイズは2のべき乗には出来ない。
2022/11/20(日) 14:53:40.99ID:RgPem6BD
>>418
元が根本的にダメだったら単に作り直すだけでも速くなったりするが、
大きなプロジェクトの成果物の性能が良いのは細々としたチューニングを続けてきたという蓄積の賜物。
すぐには越えられないのはごく普通のこと。
2022/11/20(日) 15:06:31.98ID:9/YCbfcZ
>>415
配列
T a[N];
に対して、
a[index]
のアドレスを計算する時、
address = ((BYTE *)&a) + sizeof(T) * index;
の計算が行なわれ、マシン語レベルでは :
mov rax,(Tのサイズ)
imul rax,(index)
add rax,(aのアドレス)
と計算される。
Tのサイズが、1,2,4,8 の場合に限っては、
lea rax,[(aのアドレス) + (Tのサイズ) * index]
と書けるが、一般の場合には無理。
2022/11/20(日) 15:15:31.54ID:feChXjeV
>>418
bunが速いのは、denoやnodejsではJSで書かれている部分がbunではzigで書かれていることや
JSエンジンのJITの段数の違いによるもので
rust関係ないという理解なんだけど
2022/11/20(日) 15:17:09.91ID:9/YCbfcZ
>>422
Bunはおいておいて、node(C++製JSエンジン?)とdeno(Rust製JSエンジン?)
では、denoの方がnodeより遅いと読み取れる。
2022/11/20(日) 15:17:10.42ID:feChXjeV
>>402
どのレス?もっかい書いてよ
2022/11/20(日) 15:17:44.33ID:9/YCbfcZ
>>424
レスではなくスレ。
何度も書かない。
2022/11/20(日) 15:24:09.33ID:feChXjeV
>>423
Rust製JSエンジンとか書いてる時点でよくわかってないのが読み取れる
2022/11/20(日) 15:26:15.43ID:feChXjeV
>>425
スレのどのレスか教えてよ
2022/11/20(日) 15:26:41.67ID:YFSLlDHr
>>420
そっか、チューニング大事なんだな
2022/11/20(日) 15:30:49.96ID:9/YCbfcZ
>>427
検索してくれ。
2022/11/20(日) 15:34:04.94ID:9/YCbfcZ
>>426
nodeやdenoは余り知らないから。
2022/11/20(日) 15:39:36.41ID:feChXjeV
>>429
これのこと?
https://mevius.5ch.net/test/read.cgi/tech/1656285423/151
2022/11/20(日) 15:43:51.99ID:9/YCbfcZ
>>431
まあ、そうだ。ただし、それは議論の一部。
ただ、反論する前に、頭がいいことが資格だぞ。
この板は頭の良さに対して全くフィルターが掛かってないから議論が混沌とする。
文字だけで理解するのではなく、イマジネーションと脳内のワーキングメモリー
を働かせて図形的に考えないとダメだぞ。
2022/11/20(日) 15:45:48.15ID:feChXjeV
>>431のレスはすべてをunsafeにすれば可能と暗に言ってるから、
>>402の言うunsafeを使っても済まない場合には該当しないか
2022/11/20(日) 15:47:47.99ID:feChXjeV
>>432
そうだね、文章だけではあなたの脳内の意図をちゃんと読み取れないから想像力が重要だね
2022/11/20(日) 15:56:42.10ID:9/YCbfcZ
>>433
しかし、「すべてをunsafe」にするなら、Rustの意味が全く無いから、
「それでは済まない」。
2022/11/20(日) 15:57:37.84ID:9/YCbfcZ
>>434
ちゃんと書くには長く書く必要があるが、理解できない人が多いから書けない。
そもそも、5chでは文章が途切れて書ききれない。
2022/11/20(日) 16:13:12.85ID:RgPem6BD
>>428
チューニングの蓄積は大事だが、チューニングは実行環境 (など) の特性に合わせるということだから
前提となる特性が変われば今までの蓄積が今度は足を引っ張ることもある。
だからたまにはリセット (別プロジェクトとして始動) をするのも必要なことなんだよ。
少しづつ違う方針のものが併存しているのが健全な状態で、
真似したり反発したりしながら新陳代謝をしていくもんだ。
438デフォルトの名無しさん
垢版 |
2022/11/20(日) 19:14:36.78ID:0EAflA1G
グラフとかリンクトリストとかにはarena使えないの?
bumpaloとかtyped-arenaとかid_arenaとかgenerational-arenaとか色々出てるけど
2022/11/20(日) 19:36:54.78ID:feChXjeV
>>436
じゃあなんでこのスレに書いてるの?
2022/11/20(日) 19:37:03.39ID:feChXjeV
>>438
普通に使えるよ
2022/11/20(日) 19:39:01.04ID:feChXjeV
>>435
そもそもすべてをunsafeにする必要があるという前提が偽だよね
特定のデータ構造の操作がプラグラムのすべてなの?
2022/11/20(日) 20:33:05.68ID:Y0E2xhem
単純なLinkedListのdropでstackoverflow
https://matklad.github.io/2022/11/18/if-a-tree-falls-in-a-forest-does-it-overflow-the-stack.html

dropが再帰的に呼ばれそうなところでwarning出してくれたら嬉しいんだけどな
2022/11/21(月) 16:56:19.41ID:qlbniNQc
試しにいろいろやってみたけど
引数を含めて参照渡しなのか値渡しなのか完全に区別されてるのがいいね
444デフォルトの名無しさん
垢版 |
2022/11/21(月) 17:12:12.72ID:VM/mtrCu
unsafeは甘え
2022/11/21(月) 17:26:26.15ID:EfM99hS7
超エキスパートの皆さんが unsafe で
システムプログラミングしてくださるんだろうが
2022/11/21(月) 21:30:40.94ID:rgJVysd6
https://qiita.com/ohakutsu/items/5d29001f79d42d63e886
本筋と関係ない部分での強めの態度での批判(というかいちゃもん)、いかにも日本的な陰湿なマウント文化が凝縮されていて笑えない
2022/11/21(月) 21:46:20.48ID:bYPD5c9s
テスト
2022/11/21(月) 21:47:48.09ID:bYPD5c9s
お、書けたか

今日から勉強始めて Tour of Rust やってるんだけどなんか分かりづらいような...?
The Book からやったほうがいいのかな
2022/11/21(月) 21:54:54.43ID:sdhkglZS
Haskellからやった方がいいかも
2022/11/21(月) 22:00:50.98ID:bYPD5c9s
Haskell... モナド... うっ、頭が
451デフォルトの名無しさん
垢版 |
2022/11/21(月) 23:01:50.99ID:gRBDBkQB
>>446
本当にこれ
ワイもその記事のコメント欄読んでいたけど
@Akira-T-Hatakeyamaが的外れの癖に高圧的に書いていて見ていて気分が悪くなったわ
サンプルコードもそんなおかしいものではないし事実Cではするメモリリークも防げている
まったく害のない記事を上げたがために揚げ足取りを取られていて不憫や
2022/11/21(月) 23:15:45.42ID:SGMQ7SqF
> Cをきちんと理解していない人が RUST が安全ですと言っても、説得力皆無ですね。

ここに完全同意できてしまうから
この話はもうそこで終わってしまう

批判された側は改善するか記事消すかして
態度で反省を示してほしいわ
ゴミ記事量産すなって話
2022/11/21(月) 23:45:49.72ID:/NggQuuk
callocの代わりにalloca使えとか揚げ足取りがすぎる
普通のOSならメモリリーク起きないというのも意味不明
2022/11/21(月) 23:50:01.01ID:/NggQuuk
とはいえ元記事も微妙でメモリ安全の話をするならuse-after-free等の話をして欲しかった
2022/11/22(火) 06:46:59.40ID:5norvibI
ありがちな不具合を示すサンプルにこうすりゃいいとか言われてもねぇ...
そもそもstr_new()でalloca()使ったらstr_new()から抜けた時に解放されちゃうからもっと酷いことになるのわかってないだろw
456デフォルトの名無しさん
垢版 |
2022/11/22(火) 09:08:14.28ID:XE2I6odc
>>451
コメントしてるやつほどではないにしても
記事もそれなりに害のある記事やろ
457デフォルトの名無しさん
垢版 |
2022/11/22(火) 10:53:06.52ID:iGHsIGH/
コンパイル時評価の欠点
https://c3.handmade.network/blog/p/8590-the_downsides_of_compile_time_evaluation

Rustが攻撃されてる!許せねぇ!
2022/11/22(火) 11:53:04.77ID:7hOwVVcX
const fnと思ったらmacroの話か
書かれてることはもっともだと思うしrust-analyzerの作者も似たようなことを言っていたような
2022/11/22(火) 12:05:47.11ID:5norvibI
コンパイル時評価の欠点と言うかマクロは混乱しやすいって話だろ
まあ良薬も使いすぎると毒になるしほどほどに使うのは難しいし、処理系のサポートが難しくてエラーメッセージがイミフになるとかあるから半分ぐらいは同意する
460デフォルトの名無しさん
垢版 |
2022/11/22(火) 13:20:21.25ID:8XCnEjtt
>>457
この文脈でdownsidesを欠点と訳すのは微妙
「コンパイル時評価のマイナス面」みたいにプラス面の存在が当然の前提となる日本語にしないと与える意味が変わる
2022/11/22(火) 16:03:09.05ID:gDAAjuMT
0..10 で生成されるオブジェクトってイテレータですか?
462デフォルトの名無しさん
垢版 |
2022/11/22(火) 16:12:53.87ID:7RPBFD0W
>>461
はい

0..10はRange<i32>
impl<A> Iterator for Range<A> where A: Step
impl Step for i32
2022/11/22(火) 17:02:18.19ID:gDAAjuMT
>>462
ありがとうございました
464デフォルトの名無しさん
垢版 |
2022/11/23(水) 08:39:00.67ID:wkDaFc7P
>>463
どういたしまして
2022/11/23(水) 22:54:55.70ID:/vguy0QL
The Bookの日本語版がRust 1.58で英語版がRust 1.62っぽいんですけど、この差が問題になることありますか?
466デフォルトの名無しさん
垢版 |
2022/11/23(水) 23:36:05.63ID:Z55i7UcV
>>465 ほぼない
強いて言えば新しい書き方が載ってないぐらい
古い書き方でも問題なく動く
467デフォルトの名無しさん
垢版 |
2022/11/24(木) 01:19:12.75ID:4Rr7WzTC
>>465
バージョンの差は問題にならないが日本語版と原文の差は大きい

英語が苦手で原文だと読むのに3倍時間かかるような人でも原文読む方がRustを理解するには圧倒的な近道
2022/11/24(木) 02:03:20.81ID:7DmT43os
英語が駄目って人は百倍かけても読めない。
2022/11/24(木) 02:06:19.42ID:L4U2ehwP
The Book自体がそんな一生懸命読むべきもんじゃない
別のそのへんの本屋で売ってるRust本でもいい
2022/11/24(木) 02:06:45.58ID:01gKjbzi
機械翻訳も良くなったとは言え普通に間違えるし英語読めない人なら日本語版の方がいいでしょ
471デフォルトの名無しさん
垢版 |
2022/11/24(木) 03:11:31.83ID:7Kcsa8Zb
あの日本語版はないわな
Rust習得の弊害でしかない
472465
垢版 |
2022/11/24(木) 09:13:21.63ID:/ycVFx5q
様々な意見、ありがとうございます!
両方を見比べて大きな差がありそうなところは英語版を翻訳して読んでみようと思います
473デフォルトの名無しさん
垢版 |
2022/11/24(木) 09:14:00.12ID:ZOGzuV/a
日本語版の一番の欠点は、基礎や概念を説明している項目が所々抜けてることだろうな
なんもわからないまま結論を覚えるだけになってしまう
474デフォルトの名無しさん
垢版 |
2022/11/24(木) 10:04:24.95ID:wZ9/qcyF
Rustって難しくね?
できればライフタイムあたり意識しないでプログラミングしたいんだけど
2022/11/24(木) 11:37:21.52ID:rSYd8nrB
そういう難しいところに直に向かい合うための言語なので...
476デフォルトの名無しさん
垢版 |
2022/11/24(木) 12:37:17.60ID:5MNsXfkj
Typeshareが1.0になったけどどない?
https://github.com/1Password/typeshare
2022/11/24(木) 13:01:03.30ID:lMxgdHP2
日本語版ダメだと思うなら添削してくれればいいのに
英語出来る俺スゲーとかマウント取りたいだけの人なんかな
2022/11/24(木) 13:14:00.92ID:rSYd8nrB
仮に貢献してても5chじゃなくて別のコミュニティで表明するんじゃね
2022/11/24(木) 13:18:22.75ID:B8EZvrTz
横からだけど義務教育で人並みの勉強をして英語がまったくできないっていうのは
本人の資質に問題があると思っている
(もちろん面と向かってこんなことは言わないけど)
2022/11/24(木) 13:26:27.68ID:rSYd8nrB
やっぱり>>477の意見が正しいわ
2022/11/24(木) 13:29:37.83ID:B8EZvrTz
マウント取りたいではなく、それくらい基本的なことなので
日本語版が無いと無理、英語版は無理、的なこと言うのは
それだけで足元見られる可能性がある、という話です
2022/11/24(木) 14:12:12.17ID:Td5Dmo+3
余計なこと書くからマウント取りに来てると言われる
やりたくない理由とかいちいち書かなくてもいい
483デフォルトの名無しさん
垢版 |
2022/11/24(木) 14:16:41.96ID:ZOGzuV/a
まあ本当に必要なんだったら、翻訳してくれる人にお金を出したらいいんじゃないか?
2022/11/24(木) 14:22:39.63ID:B8EZvrTz
足元見られるとも知らずにRustに関する発言、情報発信はしないで欲しい。
背伸びしなくて良いよ、一発逆転なんて無いよと思う。
日本語版はそもそも無い方が良い。訳注満載の付加価値がない限り。(>>483には同意)
2022/11/24(木) 14:31:48.71ID:Td5Dmo+3
日本語版ダメだよ

だったら直してよ

金出して訳してもらえ

こんな感じ?「俺に金出せ!」でもないらしい。
2022/11/24(木) 14:36:47.65ID:L4U2ehwP
金出して本買え
2022/11/24(木) 14:39:33.49ID:B8EZvrTz
>>485,486
エンコーディング周り、OS毎の違いなど付加価値要素はたくさん有るので
誰かが有償orタダでやってくれるのには文句はない。
ところで、大人になって英語を敬遠している人って、学校時代、
授業で良い発音で教科書を読む人をクスクス笑ってた人でしょ?
2022/11/24(木) 14:50:48.56ID:7DmT43os
そりゃあ個々人としては英語を読めりゃあそれに越したことはないがなぁ。
だけど自国のコミュニティ、自国語の資料をそろえることが出来ないというのは格好悪い話であるのも確かだよな。
2022/11/24(木) 14:59:33.05ID:B8EZvrTz
>>488 クスクス笑ってた側の人ですか?
あと、このスレ、執筆家が何人かいる気がするのは何故?
2022/11/24(木) 15:18:32.24ID:/JtPgST+
>>479みたいな主張の人は能率の高低論を読める読めない論にすり替えている
日本の義務教育の英語レベルは英語の技術資料を日本語と同等にすらすら
読めるとはほど遠いだろう
英語が読めても日本語と比べたら低能率って人は少なくないという点を無視している
2022/11/24(木) 15:23:14.78ID:SV+v/fkD
ここはRustスレなので、英語の話がしたいなら英語スレへ
2022/11/24(木) 15:33:59.04ID:rSYd8nrB
一方rustコミュニティはコンパイラのdiagnosticの翻訳者を募集していたのであった
https://blog.rust-lang.org/inside-rust/2022/08/16/diagnostic-effort.html

>>484はこういうのもやらない方が良いと思ってる?
2022/11/24(木) 15:36:53.62ID:rSYd8nrB
bookもどんどん翻訳するなら支援するとのこと
> We'd love help translating the book!

https://github.com/rust-lang/book
494デフォルトの名無しさん
垢版 |
2022/11/24(木) 15:41:27.99ID:3VG0Xg5C
とりあえず日本語で学びたいという人はちゃんとした日本語書籍を買って読むことをすすめる
とにかく最初からあの低品質の日本語訳読むのはオススメしない

ただThe Bookレベルの英語は読めるようにしないとリファレンスも読めないしStackOverflowや公式フォーラムも読めないからすぐ詰むよ
2022/11/24(木) 15:41:58.17ID:B8EZvrTz
>>490
>英語が駄目って人は百倍かけても読めない。
これを受けて、読める読めない論を展開していたんだけど、読解力の問題?
>>492,493
>まあ本当に必要なんだったら、翻訳してくれる人にお金を出したらいいんじゃないか?
なんにしても、必死に日本語版、自国語の資料を擁護する勢力がいることに新鮮な驚き。
クスクス笑ってた側の人ですか?
2022/11/24(木) 15:45:21.17ID:B8EZvrTz
>>494 前半、後半、ともに同意です
2022/11/24(木) 15:55:09.50ID:rSYd8nrB
個々人の生存戦略としてはそりゃ英語読めた方が良いけど
コミュニティとしては裾野を広げるために各種言語のリソースは用意されてた方が良い
bookの翻訳が不十分なのは課題だが、だからといって翻訳の取り組み自体を否定するのは違うんじゃないの?
それとも英語等のハードルを越えた人間のみ触れるものであるべきという思想なのかな
2022/11/24(木) 15:59:42.08ID:gyRXVBW5
Rustの翻訳コミュニティって以前から揉めてるけど
それがよくわかるスレだね
2022/11/24(木) 16:03:48.82ID:B8EZvrTz
>>497
いやいや、英語を奉り過ぎだって。
それくらい基本的なことなのに英語を敬遠する勢力がRustコミュニティで発言、情報発信はしないで欲しい。
クスクス笑ってた側の人かどうか、そろそろ表明してくれませんか?
2022/11/24(木) 16:11:10.23ID:rSYd8nrB
>>499
残念ながらその態度はCoCに反するのでコミュニティで行動していけないのはあなたの方なんだよなぁ
https://www.rust-lang.org/policies/code-of-conduct
2022/11/24(木) 16:19:22.01ID:B8EZvrTz
>>500
ポリコレを真に受けて衆愚コミュニティにしたいなら、あなた自らが翻訳を率先するのが筋です。
2022/11/24(木) 16:23:22.95ID:rSYd8nrB
>>501
平気でライセンス違反とかしちゃう人?
少なくとも自分がコミュニティで望まれてない人材とは自覚しておいてね
2022/11/24(木) 16:32:29.37ID:B8EZvrTz
>>502
多分それは別人です。
自分はRustコミュニティに何の貢献もしてませんが、
あなたは、The Book日本語版(Rust 1.58)に携わった方ですか?
それともライターさんですか?
2022/11/24(木) 16:38:28.16ID:WiL1nOOz
Rust は崇高なものであるべき
みたいな人がいるんだな…
2022/11/24(木) 16:39:48.68ID:t2djUU2z
てかそんなやつばっかじゃん。プライド高くてさ。
2022/11/24(木) 17:03:55.18ID:B8EZvrTz
>>504,505
そんな思い上がりは全くありません。英語一つでここまで必死に拒絶する、単純翻訳を崇め奉る勢力の存在、その資質に興味があるだけです。
こちらは翻訳の際の付加価値について認めているのに、翻訳活動を全否定されたかのような反応、読解力。
最初は冗談半分でしたが、本当にクスクス笑ってた側の人、うぇーい、したいだけの人のイメージが浮かんで来ます。
純粋に、資質に興味があるだけです。
それとも、本当にライターさん(ネットメディア?)か何かなんですかね。
2022/11/24(木) 17:36:37.60ID:rSYd8nrB
>>506
あなたの言う付加価値はローカライゼーションにまつわる固有事情の記事を追加せよという話だよね
付加価値があって初めて価値があるという発言は翻訳そのものには価値を認めてないんだから翻訳自体を全否定してるんじゃないの

あなたの発言は英語もできないやつは人間のカスだからrustに近づくんじゃないとしか読めないんだけど、解釈間違ってる?
2022/11/24(木) 17:46:15.18ID:B8EZvrTz
>>507
前半:全否定されたかどうかが気になってしょうがないのでしょうが、こちらはそこに含意は無く、付加価値が満載なら文句は無いです、有償無償問わず。
後半:ずいぶん卑屈な受け止め方ですね。なんでそんな感性が身にしみついちゃったんですか?拡大解釈し過ぎです。
2022/11/24(木) 17:49:09.85ID:B8EZvrTz
追加:自分は一言多いとよく言われます。誤解されやすい人です。
2022/11/24(木) 17:52:10.07ID:CxyqHr52
仮に日本語で読解に1時間かかるとする。英語だと読解に1.5時間かかるとする
100人いたらその差は50時間
これを英語は読めれば問題ないなどと正当化していたら競争力が落ちるのは当然であろう
511デフォルトの名無しさん
垢版 |
2022/11/24(木) 18:12:49.43ID:/hunkqEb
俺は人に教える時に重宝してるけど
初めはざっくり理解できればいいし
2022/11/24(木) 18:13:50.45ID:B8EZvrTz
>>510
その仮定、その足し算に何の意味があるのか、誰の競争力の話か分かりませんが、とにかく頑張ってください。付加価値期待してます。
追加:1.5倍くらいなら英語で頑張り続けたら長くても1~2ヶ月くらいで、≒1倍になるのが適正な資質
その間の努力、時間配分が出来ないならタダの背伸び、無いものネダリ、わがまま、甘え
2022/11/24(木) 18:15:51.60ID:B8EZvrTz
>>511
わかります。ものになるかわからない人に時間を掛けたくないですよね。
2022/11/24(木) 18:16:33.16ID:7DmT43os
入門ってのは基本的な概念を知らん状態なわけだもんな。
母語の資料があってもそれなりにしんどいので英語は勘弁してつかぁさい。

基本理念がわかればそこから後はまあまあわかるよ。
515デフォルトの名無しさん
垢版 |
2022/11/24(木) 18:19:43.47ID:tZHOriba
言うてまあこれが一発目の言語ならともかく
普通は(?)CもC++もやってからこれに手を出すやろ?
今更英語とかどうとか言う話になる?
プログラミング言語一般のリテラシーが英語を乗り越えてしまうやろ?
2022/11/24(木) 18:20:35.82ID:4/0XLjMc
Rust入門レベルを英語で読むって学部1年レベルの線形代数を英語で読むようなものだよ
2022/11/24(木) 18:46:40.03ID:VGz25HBF
>>512
その理屈が通るなら日本語に限らず母国語の資料なんて不要になる
もちろんそんなことはない時点であなたの主張は破綻している
2022/11/24(木) 19:08:31.32ID:B8EZvrTz
>>514 100倍の人ですね。
>>515 せめてPython/JavaScriptでも十分(失礼)ですから先にやっておいて欲しいですよね。
>>516 線型代数、高校のベクトル・行列とは何だったのかレベル。
新概念習得と外国語(英語)は相性が良いですよ。すべてが専門用語だとみなせます。むしろ日常会話の単語チョイスに支障が出ますが。
2022/11/24(木) 19:16:37.71ID:B8EZvrTz
>>517 拡大解釈し過ぎです。何の話をしている文脈なのか、読解力、国語力とは。
1~2ヶ月くらいの努力、時間配分を怠ると、一生ローカライズ産業(非最先端)の食い物にされます。食い物にする側に組する立場ですか?
ライターさん?今後のRust記事注目します。
2022/11/24(木) 19:18:22.16ID:RwBqHjG8
どうしちゃったの、このスレw
まあ、それほど王道と言えるルートが無くて
多少混沌とした落とし穴のある、いばらの道なのかな
521デフォルトの名無しさん
垢版 |
2022/11/24(木) 19:31:21.34ID:tZHOriba
>>520
常にどうかしちゃってるのがこのスレ
意味不明なマウント合戦や
「所有権の複製」なる謎用語が平気で飛び交うスレ
2022/11/24(木) 19:34:18.21ID:gyRXVBW5
トレイト境界の翻訳で一生揉めてたから
翻訳の話題はNGにしないか?
2022/11/24(木) 19:44:14.11ID:wuF6EKEG
いっそのこと日本語での書き込み禁止で
524デフォルトの名無しさん
垢版 |
2022/11/24(木) 19:50:46.51ID:5MNsXfkj
みこちは一兎(ぺこら)しか追ってないのに得られないよね…
525デフォルトの名無しさん
垢版 |
2022/11/24(木) 19:52:52.93ID:5MNsXfkj
誤爆した恥ずかしい(*/□\*)
ちなみにこちらです↓
【バーチャルyoutuber】兎田ぺこら#254【ホロライブ/hololive】ID無し
https://egg.5ch.net/test/read.cgi/sugiuraayano/1669282879/
526479
垢版 |
2022/11/24(木) 20:23:00.17ID:B8EZvrTz
決して面と向かっては言えない私的な世界観ですが、予想以上の反応がありためになりました。
特に、執筆家・ライター・翻訳家・ネット記事・出版などと推測される、母国語資料勢・ローカライズ産業の存在を意識したことはこれまでなかったので。逆に英語一つで足元見る奴がいることに驚いた人もいるかもしれません。
自分的には、今後ネットのRust記事(日本語)と5chスレの関連性に注目してみます。
2022/11/24(木) 20:27:49.73ID:aQORibhF
この手の奴って英語なんて読めて当然だ言うくせに国語を英語にすればいいとか言わないよな
結局の所イキりたいだけの自己中なんだろう。社会にとって有害なタイプじゃね
2022/11/24(木) 20:33:45.50ID:sBZ5giiA
日本語版見て勉強してたけど英語版から欠落した情報があるんだな
よく分からなかったところを見比べてみるわ
2022/11/24(木) 20:45:47.88ID:ZPzzCY+f
英語読めるに越したことはないし翻訳怪しい所は原文見た方がいいけど日本語版あるのにわざわざ日本人が英語版を読む必要はない
英語の勉強するならそれ専用でやった方がはるかに効率的なので
530デフォルトの名無しさん
垢版 |
2022/11/24(木) 20:46:18.83ID:tqD1idY4
あの日本語訳はこういうのが盛りだくさん

「最後の違いは、定数は定数式にしかセットできないことです。関数呼び出し結果や、実行時に評価される値にはセットできません。」

時間を使って読むに値しない
2022/11/24(木) 20:55:01.86ID:V/Uo5ox3
英語もコンピュータ言語も全くできない人は無理せず日本語で勉強すればいいと思うけど、JavaScript を読めるレベルなら、英語読まないでコードから読んで英語は補助的に読んでみたりとか、工夫のしようはあるで。
2022/11/25(金) 00:02:56.61ID:HP+HUenZ
文句言うばっかりで誰もpull req出さないから変な日本語が放置されるという
変だなと思ったら気軽に修正案投げられるような仕組みがあるとよいね
533デフォルトの名無しさん
垢版 |
2022/11/25(金) 00:11:51.41ID:mKVQfMbx
プルリク何百個だせばいいんだよってなる
サンクコストとして捨てちゃったほうが日本のRustコミュニティにとってはプラスなんじゃないかな
2022/11/25(金) 00:14:11.06ID:9EBigD0X
>>530
確かにいい訳ではないけど
理解できない原因は
専門用語をちゃんと理解していないことに
起因することが多い

この文も「定数」「定数式」「セット」が理解できれば
そんなに難しいことは書いていない
2022/11/25(金) 00:32:29.91ID:HP+HUenZ
>>533
何百くらいなら一人一回PR送るだけでもほぼ直るんじゃね
2022/11/25(金) 00:39:08.22ID:+ImZ41H+
>>534
誰かが理解できないって言ってた?
537デフォルトの名無しさん
垢版 |
2022/11/25(金) 00:39:41.10ID:FYsweZxP
>>534
本当に書いてること理解できてるか
もう一度よく読み直そうか
2022/11/25(金) 07:45:02.58ID:HZEumDr5
>>536
理解できるなら問題なくね?
2022/11/25(金) 07:48:42.32ID:6Yi+j4c1
安心安全のために少し日本語がスパゲッティ状態になるのは仕方がないんだろ
2022/11/25(金) 08:02:50.13ID:v7fq4Pg1
プログラム一般論だけど
書籍抜きで進めて、分からない事をぐぐって行くと
最終的には stackoverflow 辺りにたどり着くんじゃない
2022/11/25(金) 08:11:39.93ID:m5nB+QH5
>>530
これ原文は

The last difference is that constants may be set only to a constant expression, not the result of a function call or any other value that could only be computed at runtime.

だけど、どう訳すのが適切なの?
2022/11/25(金) 08:12:56.32ID:ROoDFC7c
日本の商業技術書は中身がググるレベルのクソ雑魚なのはあるある
特に流行物はその確率が高く、下手すると同人技術書の方がマシまである
2022/11/25(金) 08:19:17.40ID:8BzXPUw/
日本での旧Xam○rinコミュニティの構図が思い出されます。
技術本位で勝負している人たちの大多数に見透かされましたからね。
Rust日本語訳勢の一部もそういう構図があるんですな。

英語苦手同士で助け合いましょ

わかる

機械翻訳を手作業で体裁整えました。すごい努力でしょ?

時間を使って読むに値しない

英語得意な人、普通に助けてくれるでしょ?一人一回PR送るだけなんだからね!

は?学生時代、クスクス笑ってた側を助けるわけないじゃん

私をマウントしないでください。英語苦手な人の方が多数派でコミュニティの裾野を広げるため...

は?繋がりピラミッド構図作ってマウントしたがってるのはそっち
2022/11/25(金) 08:23:37.14ID:tPlp31O1
学生時代にクスクス笑われたのがトラウマになってんのか、かわいそうに
2022/11/25(金) 09:06:15.37ID:fjezKZFE
旧Xam○rin(現MAUI)の話で言うと、多数の別スレで毎日大暴れのMAUI君、英語苦手なのにガンガン成果?を見せてくるあたりは技術志向が強くてバイタリティーがあるので、問題発言だらけだけど許容範囲かな(Flutter側にもバイタリティーが欲しい)
英語苦手って人もいろんな貢献の仕方があるよね。
2022/11/25(金) 10:07:23.50ID:9BOxb4Qm
>>544
あ〜あ言っちゃいましたね。Rustでガリ勉してる人の事も内心ではクスクス笑ってるんだろ。
2022/11/25(金) 11:07:23.77ID:vXLNQ2UM
機械翻訳使うなっていうのは志賀の件で合意得られたはずなのになんでやるかなぁ
2022/11/25(金) 11:15:50.25ID:cn0AfbS4
英語読めないやつはRustそもそも向いてないと思う
日本語の情報が充実している言語にしておいた方がいいよ
2022/11/25(金) 11:22:23.99ID:4bp1jaeM
被害妄想なんかにまじめに付き合ってられないよ
2022/11/25(金) 11:22:31.94ID:2L/AZJad
あれ?いつの間にか機械翻訳使ってるなんて証拠でも出たんか?
またいつもの人が妄想膨らませてるだけと思ってたけど
2022/11/25(金) 11:33:46.83ID:HP+HUenZ
>>541
定数は定数式にしかセットできない

定数には定数式しかセットできない
の方がすんなり読めるんだけどセットの意味合いが他と整合性とれなくなったりする?
2022/11/25(金) 11:47:02.77ID:PJRcnhAQ
そもそもの内容を理解していないのなら翻訳をする資格はないよね。
そっとしておいてほしい。機械翻訳なんてもってのほか。
2022/11/25(金) 12:05:22.61ID:v5uvIKgG
あるいは、原文の疑問点になりそうな箇所は須らくコードで実証すべし
機械翻訳がやってくれない人間による付加価値
2022/11/25(金) 12:17:11.54ID:9A6C+y48
>>548
これでいいと思う。
2022/11/25(金) 12:21:48.12ID:OY9VtEiW
>>548
現状はそれでいいと思う
2022/11/25(金) 12:24:24.73ID:tJ38pL4L
>>551
かく乱しないで欲しい。
2022/11/25(金) 12:32:01.12ID:pYHT3oH4
今構造体の勉強してんだけどユニット構造体ってどう言う時に使うの?
トレイトで使うって見たけどいまいちわからん
2022/11/25(金) 12:32:35.70ID:3NnLJm/9
マジで荒らすな
ここに来るな
単発Ngするぞ
2022/11/25(金) 12:32:54.94ID:hG6NI52Y
>>541
deepl下敷きにして修正すりゃいい。

最後の違いは、定数は定数式にのみ設定でき、関数呼び出しの結果や実行時にのみ計算される他の値には設定できないことです。

any otherが残念だけど、まあOKだろ。
2022/11/25(金) 12:37:02.65ID:9dhUDnXy
>>559
ダメだろ
ところで>>551 はSF時間で仕事している人かな?
2022/11/25(金) 12:39:37.74ID:hG6NI52Y
>>560
駄目な理由を指摘できない無能がマウントしてくるからRustは駄目なんだよ。
2022/11/25(金) 12:39:46.16ID:scn2u8sN
>>559
DeepL とか英語全く出来ない人の発想なので、他所では言わん方がいいで。
使うのはいいけど、コッソリ使ってね。
2022/11/25(金) 12:44:43.95ID:dNgwgIBZ
>>541
そういえば以前、全訳に挑んでいる、とかいう妄想を見たけど関連あったりする?
2022/11/25(金) 12:48:03.92ID:hG6NI52Y
>>562
内容を見ないで手段に文句をつけるのは無能のやることだよ。
2022/11/25(金) 12:57:12.51ID:qsZx06Ly
>>561
マジでRustはどうでもよくてピラミッド作りたい奴なのか。
ここにいるお人好しhelperさんを底辺に組み込みたいのか?
2022/11/25(金) 13:00:28.35ID:Y7KZiKcU
どうせ素人相手にマウント取っているアフィカスだろ
素人に毛が生えた程度なので突っ込まれても反論できない
具体的な議論は出来ないから話題そらしに終始する
最近この手の輩はここだけじゃなくあちこちのスレで見るわ
2022/11/25(金) 13:02:05.70ID:HZEumDr5
>>551
そもそも
> 定数は定数式にしかセットできない

> 定数には定数式しかセットできない
じゃ意味違うよね
上は「定数式 = 定数」
下は「定数 = 定数式」
英文読む限りは上のような気がするが言語仕様的には下のような気がする
どっちが正しいんだ?
2022/11/25(金) 13:08:19.55ID:ZVM62PVL
>>566
このスレは何処かでまとめられてるの?

話題そらし:
旧Xam○rin(現MAUI)の話で言うと...
今構造体の勉強してんだけどユニット構造体ってどう言う時に使うの?
ところで>>551 はSF時間で仕事している人かな?
どっちが正しいんだ?
2022/11/25(金) 13:21:30.46ID:D+kphDHJ
>アフィカス
まだ気が早いけどワッチョイを使えば多少は防げるもんなの?
570デフォルトの名無しさん
垢版 |
2022/11/25(金) 13:31:54.44ID:j44SSeWl
>>567
be setだから下だろバカ
2022/11/25(金) 14:44:15.84ID:wOyL9/CI
>>565
???
>>560のどこにhelper要素ある?

マウントばかり取ろうとする役立たずの無能を底辺に組み込みたいというのは肯定するけど、
>>560がお人好しhelperというのは否定するわ。
572デフォルトの名無しさん
垢版 |
2022/11/25(金) 14:52:48.53ID:NT6Ragjt
>>570
set A B (SVOO)…(ア)

A := B

set B to A (SVOC)…(イ)

A := B

(ア)は以下2通りの受動態に書き換えられる
A is set B …(1)
B is set to A …(2) (O2を主語にする場合O1の前にtoを補う必要がある)

(イ)は以下1通りの受動態に書き換えられる
B is set to A …(3)

(1)と(2)(3)ではA, Bの並びが逆になるから「be setだから下だろバカ」は間違いで、「be set toだから上だろバカ」が正しいように思える

しかしGoogle翻訳だと、
The variable is set to "バカ"
を英語に翻訳すると、
変数は「バカ」に設定されています
に、
"バカ" is set to The variable
を英語に翻訳するとこちらも、
変数に「バカ」を設定
に、
なるんだよなぁ…
不思議!
2022/11/25(金) 15:02:34.88ID:TzWxad5d
>>567
https://www.enago.jp/academy/set-to-be/

In the first case, gamma is set to 1.
で「最初のケースの場合、gammma は 1 に設定される」
みたいな意味らしいから、
I set X to 1.
は、「私は X を 1 に設定した」のような意味になることが有る。
一方、
I assign 1 to X.
は、「Xに1を代入する」の意味になる。
to Y と書いたとき、Y が代入先(dest)なのか、代入元(src)なのかは、
動詞や文脈によって変わってきてしまうのかも知れない。
assgin の場合は、assign src to dest に固定されているはず。
set の場合は、文脈によってどちらも有りうるかも知れない。
2022/11/25(金) 15:04:42.52ID:RgnS8UuF
>>569
ならない。IDコロコロがワッチョイコロコロになるだけだし常識ある人が離れる分悪化する可能性が高い
奴の主張によればワッチョイが違うから別人だ!になるのは明らかだし、それで盲目信者の巣窟になった
スレをいくつも見てきた
てかアマゾンや一部のブログを弾いているくせにアフィYoutbeが野放しになっている時点で・・・
2022/11/25(金) 15:06:25.98ID:v7fq4Pg1
定数をバインドする式を定数式と呼ぶってことだろ
公式原文も色々怪しくて論議があるから、脳内で意訳しとけ
576デフォルトの名無しさん
垢版 |
2022/11/25(金) 15:08:01.76ID:TzWxad5d
>>573
[続き]
I set X to 1.
とかけて、Xがdest(式の左辺)、1が src(式の右辺)であり、
X = 1;
の意味になる。
「The last difference is that constants may be set only to a constant expression,
not the result of a function call or any other value that could only be computed at runtime.」
の意味は、定数の右辺は、定数式、つまり、
constants = constant expression.
だけが許されて、
consttants = f(・・・);
などの、実行時に計算するしか結果が分からないような値は、右辺に来ることは無い、
という意味になるようだ。
2022/11/25(金) 15:13:16.78ID:TzWxad5d
>>572
>set B to A (SVOC)…(イ)
>も
>A := B
set以外の動詞の英語の基本原則からするとその通りで、
動詞 A B

動詞 B to A
は多くの場合、同じような意味になることが多い。
ところが、set の場合、話がややこしいらしく、
実は、
set B to 1
は、
B := 1
の意味になるらしい。
setだけが原則を破って必ず逆になっているのか、それとも、
文脈によって変わってきてしまうのかは不明。
2022/11/25(金) 15:21:16.45ID:HP+HUenZ
>>575
バインドの主従が逆じゃね
定数は定数式しかバインドできない
const文の左辺が定数、右辺が定数式
2022/11/25(金) 15:22:45.12ID:TzWxad5d
>>577
[補足]
(例)
He gave me a chocolate. (1)
He gave a chocolate to me. (2)
は、原則的な意味としては同じ。ただし、meの様な代名詞の場合(1)で書くとは
聞いたことがある。
I assing 1 to X.
I assing X 1.
も同じ意味になるはず。
ところが、
I set X to 1.
は言えても、
I set 1 X.
は多分言えないような気がする。
英語は難しい。
2022/11/25(金) 15:26:46.87ID:8N49L/hO
力説中のところ申し訳ありませんが、大事なことだと思いますので。

日本語訳の方には、ページごとに原文の特定バージョンへのリンクがあると良いと思いました。

理由
>>541が持って来た原文が現在の原文
The last difference is that constants may be set only to a constant expression, not the result of a value that could only be computed at runtime.
と違うので、はて?と思いHistoryを調べました。

Committed on Jul 24, 2021
https://github.com/rust-lang/book/commit/05d9c4c2312a6542f792492d17a62f79ad6dfd7b#diff-babf686b8b57cc7dd67fd06d087303fe92115f8a5d9fd5dca7cef8645a25bb58R104

日本語版のトップに書いてある日付よりも多少ラグがありました。
https://doc.rust-jp.rs/book-ja/title-page.html
>このテキストのこの版ではRust 1.58(2022年1月13日リリース)かそれ以降が使われていることを前提にしています。

探すのは難しいことではありませんが、手間と言えば手間で、せっかくのcontributeの意欲を削ぎかねません。
2022/11/25(金) 15:35:57.85ID:TzWxad5d
>>579
どこの話なのかと思っていたが、
https://doc.rust-lang.org/book/ch03-01-variables-and-mutability.html
に書いてあるものだった。
こうなっているから、>>576の解釈で有っている気がする :

The last difference is that constants may be set only to a constant expression, not the result of a value that could only be computed at runtime.

Here’s an example of a constant declaration:

const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
2022/11/25(金) 15:41:09.30ID:TzWxad5d
>>581
[補足]
>const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
>The constant’s name is THREE_HOURS_IN_SECONDS and
>its value is set to the result of multiplying 60 (the number of seconds
>in a minute) by 60 (the number of minutes in an hour) by 3
>(the number of hours we want to count in this program).
と書いてあり、能動態に直すと
XXX set its value to 60 * 60 * 3.
となるから、
set A to B

A = B
の意味を伝達しようとしていると考えられて、裏づけが取れた。
2022/11/25(金) 15:45:19.49ID:xaW1nBc4
>>581,582
混乱の極みを見事に体現してる。原文見た方が良いでしょ?
2022/11/25(金) 15:55:04.06ID:THLf878Z
>>581,582
昨日の1.5倍の人か100倍の人かわかんないけど、原文見たら0.1倍だったね。
2022/11/25(金) 16:13:51.74ID:scn2u8sN
プログラム関連で出てくる単語とか限られているから、慣れたら英語でも速く読めるからね。
2022/11/25(金) 16:53:44.00ID:BP7ibfc5
>>563
いや、全くないが
「読むに値しない」とまで言い切ったからにはどんなすごい名訳が出てくるんかと気になっただけ
2022/11/25(金) 17:08:35.12ID:N+Zpejdn
>>586
×「読むに値しない」→名訳が出てくる
〇「読むに値しない」→原文を読む
2022/11/25(金) 17:37:57.21ID:XtySliSs
The Book日本語版、issueやPRが放置気味
https://github.com/rust-lang-ja/book-ja/issues
https://github.com/rust-lang-ja/book-ja/pulls
4人でメンテナンス?頑張ってる方かな?
https://github.com/orgs/rust-lang-ja/people
2022/11/25(金) 18:51:27.43ID:bTqKud61
日本語かどうかの話とちょっと逸れるけど
MDNのドキュメント初めて見たとき感動したな
親切というか見やすいというか

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from
↑これは今てけとーにクリックして開いたページだけど
・最初の一行目付近で概要は十分掴める
・実行して試せる
・解説や例が充実

こーいうレベルまでまとまってると捗るよね
2022/11/25(金) 18:55:07.58ID:HP+HUenZ
>>589
標準ライブラリのrustdocとかこんな感じでは
2022/11/25(金) 19:51:17.64ID:6Yi+j4c1
英語できないやつはRust禁止でいいだろ
2022/11/25(金) 20:14:50.25ID:HZEumDr5
>>582
なるほど、なら

The last difference is that constants may be set only to a constant expression, not the result of a function call or any other value that could only be computed at runtime.



最後の違いは定数には関数呼び出しの結果や実行時に計算される値ではなく定数式のみを設定できる事である

くらいかな
593デフォルトの名無しさん
垢版 |
2022/11/25(金) 21:44:29.00ID:6OlwGlFl
日本語訳読んだだけで秒で間違いに気付ける箇所を指摘したつもりだったんだがw

そうならないのは>>534が書いてるように「定数」「定数式」「セットする」「値」あたりの意味を理解してないってことなんだよね
2022/11/25(金) 22:47:54.20ID:GlJDmObA
> 確かにいい訳ではないけど
用語以前に誤訳なわけだが
2022/11/25(金) 22:51:14.61ID:OHrntoLc
>>557
RangeFullやSinkがunit-like struct
structの中身は空でtrait implのみ

でもそういう用途よりもジェネリックと一緒に使って状態を型で表現して
状態ごとに呼べる関数を制限したいときに使われることが多い
struct NotActivated;
struct Active;
struct Expired;
struct License<State> {…}
impl<State> License<State> {…}
impl License<NotActivated> {…}
2022/11/25(金) 23:36:14.56ID:9EBigD0X
原文がちょっと不親切ではあるな
これはいい、これは駄目という例を
挙げてくれれば文とかはどうでもよくなるのに
2022/11/26(土) 07:16:42.40ID:PBcpo5Pj
さんざん他言語・多言語愛好者をこけにしておちょくり倒してヘイト集めまくって、
挙句の果てに寄ってたかって素人騙してたくせに、その歴史が消える訳ないだろ。
今度は被害者のふり。最近ちょっと大人しくして良い人ぶって許されたと思ったら大間違い。
2022/11/26(土) 09:45:44.06ID:jkgTkEQQ
ちょっと何言ってるのか分からない
599デフォルトの名無しさん
垢版 |
2022/11/26(土) 13:29:02.11ID:NN/Ee4C5
「定数は定数式にしかセットできません」だけならともかく
「定数は関数の呼び出しの結果にはセットできません」
「定数は実行時に評価される値にはセットできません」
と重ねてダメ押しされてるのに間違いに気づかないのは致命的すぎるわな
600デフォルトの名無しさん
垢版 |
2022/11/26(土) 21:14:12.05ID:WPAl7BZB
翻訳者の能力の問題もさることながら体制がダメなんだろ
601デフォルトの名無しさん
垢版 |
2022/11/26(土) 23:30:38.96ID:MK1npdNM
1コードブロックに3つもバグが埋め込まれて本番環境で不具合でてるのに中の人は誰も気づかない状態

恐ろしい
2022/11/26(土) 23:44:35.96ID:cbpgSLEO
>>592
「定数に定数式を設定」という言葉はsrcとdstがどっちなのかに曖昧さが残るので
「定数を定数式で初期化」または、
「定数に定数式を代入」
「定数=定数式のように初期化」
とはっきり書いたほうが分かり易い。
603デフォルトの名無しさん
垢版 |
2022/11/27(日) 02:00:12.48ID:PMZ9qEdk
日本語としてものすごく読みにくいとは思うが
どっちをどっちに設定するかという部分の曖昧さはないだろ
2022/11/27(日) 02:20:50.36ID:uyoA8rg1
タイムアウト時間を30秒に設定する
timeout_secondsに30を設定する
2022/11/27(日) 07:55:44.11ID:azI8+vf1
こんなところじゃなくて翻訳版bookのレポジトリで議論してきなよ
2022/11/27(日) 10:18:44.07ID:8gJa+XiI
個々人の生存戦略としてはそりゃ英語読めた方が良い

同意

コミュニティとしては裾野を広げるために各種言語のリソースは用意されてた方が良い

Rustコミュニティは英語に集中してリソース拡充してきている段階では?

翻訳版bookのコミュニティが、日本でのRustコミュニティとして中心的な位置を取りたいという野望でしょうか?
そんな求心力は無いと思いますが。

497: デフォルトの名無しさん sage 2022/11/24(木) 15:55:09.50 ID:rSYd8nrB
個々人の生存戦略としてはそりゃ英語読めた方が良いけど
コミュニティとしては裾野を広げるために各種言語のリソースは用意されてた方が良い
bookの翻訳が不十分なのは課題だが、だからといって翻訳の取り組み自体を否定するのは違うんじゃないの?
それとも英語等のハードルを越えた人間のみ触れるものであるべきという思想なのかな
607デフォルトの名無しさん
垢版 |
2022/11/27(日) 10:36:54.77ID:Zv27eWsM
>>604
「30秒にはタイムアウト時間を設定できる」とか言わんやろ
英語を誤訳したやつみたいに日本語ネイティブじゃないやつが誤訳する可能性でも考えてんの?
2022/11/27(日) 11:01:37.30ID:gXtPf0qn
>>606 日本でのRustコミュニティとして中心的な位置を取りたいという野望
>>607 日本語ネイティブじゃないやつ

えっ、この二つリンクしてるのか?
なんとか協会とか資格試験を作るんですか?
そんなことしたら乗っ取りじゃないですか!
英語原文主義者でも捨て置きならないぞ!
2022/11/27(日) 11:59:56.08ID:azI8+vf1
>>606
>>492にもあるがすでに翻訳も拡充していこうとしている
というかローカライズにリソース割くのやめたところで英語版の執筆ペースが速くなるわけでもなかろう
2022/11/27(日) 12:31:41.07ID:H/u9072G
>>609
翻訳版bookの中の人ですね。
本家公認だからって、日本人作のcrate等で活躍している人達を差し置いて
日本Rustコミュニティの中心見たいな態度はどうかと思うぞ。

605: デフォルトの名無しさん sage 2022/11/27(日) 07:55:44.11 ID:azI8+vf1
こんなところじゃなくて翻訳版bookのレポジトリで議論してきなよ
2022/11/27(日) 12:41:05.07ID:iW9ldzKP
>>ID:azI8+vf1
こんなところでリクルート活動してないで率先してガンガン品質向上しろよ

本家の代弁者見たいな顔するな。
説得力ゼロ
2022/11/27(日) 12:48:50.89ID:f1nHPrCO
クスクス
2022/11/27(日) 13:27:25.24ID:/KqYda7b
おれ、この気持ち共感できる
>日本人作のcrate等で活躍している人達を差し置いて

これだけは断固反対
>なんとか協会とか資格試験を作るんですか?

翻訳版book中の人は、やらないと誓約する必要がある
2022/11/27(日) 13:59:45.41ID:WnQW1xBa
翻訳議論スレ作れよ
2022/11/27(日) 14:35:21.35ID:azI8+vf1
>>610
ちょっと思い込みが激しすぎやしないですかね
こんなところで翻訳案議論しても何の役にも立たないからせめてコントリビューションして来なさいよという意味
2022/11/27(日) 14:44:21.27ID:obDxoM1f
横失礼します。
>>613そのものは共感に値します。
>>615さんも同感ですよね?
2022/11/27(日) 15:01:53.97ID:uyoA8rg1
低レベルな内容ほど議論が紛糾する
英語ではbikesheddingと言います
2022/11/27(日) 15:41:13.95ID:Cs02dWTs
>>595
どうもありがとう
なんかスレが殺伐としてるね
2022/11/27(日) 16:55:26.99ID:uHmuK07x
>>607
30秒などの具体的な数値が有る場合には誤解は無い。ところが、
「XをYに設定する。」と書いた場合、
X=Y
Y=X
のどちらにも解釈可能。
620デフォルトの名無しさん
垢版 |
2022/11/27(日) 17:09:13.26ID:N296u3Hi
>>619
「XにはYを設定できる」や「XにはYのみ設定できる」という文がY = Xの意味にとれるのか?

日本語ネイティブじゃない人には分かりにくいというのなら理解できなくもない
2022/11/27(日) 17:16:08.15ID:TRua3A2I
>>620
>>530はそのどれでもなくて「XはYにしかセットできない」の形式だけど
これはどう思う?
2022/11/27(日) 17:17:31.45ID:F7pPowDS
怪しい部分も大半は文脈と照らし合わせつつコード読めば理解できるレベルの翻訳なのに一々文句付けるぐらいなら翻訳に参加した方が早いのでは?としか思わない
623デフォルトの名無しさん
垢版 |
2022/11/27(日) 17:20:04.83ID:ZSA0r6oY
まあそんな些細なことよりさ
項目が抜けてるところに<未翻訳の項目があります>って表示したら、かなり親切になるんじゃないかな
624デフォルトの名無しさん
垢版 |
2022/11/27(日) 17:26:26.85ID:97SCWnfr
>>621
どう思うも何も>>530はダメだろ
間違った逆の意味にしか取れないよ
そこに異論がある人はいなくね?
2022/11/27(日) 17:29:51.04ID:uHmuK07x
>>620
日本語訳では、「定数は定数式にしかセットできない」と書いてあるので、
定数=定数式 (1)
定数式=定数 (2)
のどちらにも解釈可能。
しかし、原文読むと正しいのは、(1)。
626デフォルトの名無しさん
垢版 |
2022/11/27(日) 17:32:52.38ID:BVKfKgFe
>>622
ちゃんと読もうとすればほぼ原文全部読まないといけない品質だぞ
あの日本語訳に飛びつくやつがそんなことするとでも思ってるの?
2022/11/27(日) 17:33:05.29ID:lJvzY49o
google翻訳にかけたらそうなったんだから、しょうがないだろ
という事では
628デフォルトの名無しさん
垢版 |
2022/11/27(日) 17:47:05.67ID:UmH2UGTE
>>625
定数や式についての知識が全くない人か
日本語ネイティブじゃない人でなければ
(1)の解釈は無理
2022/11/27(日) 17:58:03.70ID:Tzlpv0SL
>>621
>>592 の話じゃないのか?
なぜ今更 >>530 の話なんてしてるんだ?
630デフォルトの名無しさん
垢版 |
2022/11/27(日) 18:01:08.13ID:AOVlF7rL
>>627
ところがgoogle翻訳のほうがマシな場合も多々あるんだよこれが
2022/11/27(日) 18:48:05.90ID:WjtNHhGH
ざっと見た感じこの流れが気になる。こんなの秒で同意できるのに。

613: デフォルトの名無しさん sage 2022/11/27(日) 13:27:25.24 ID:/KqYda7b
おれ、この気持ち共感できる
>日本人作のcrate等で活躍している人達を差し置いて

これだけは断固反対
>なんとか協会とか資格試験を作るんですか?

翻訳版book中の人は、やらないと誓約する必要がある

615: デフォルトの名無しさん sage 2022/11/27(日) 14:35:21.35 ID:azI8+vf1
>>610
ちょっと思い込みが激しすぎやしないですかね
こんなところで翻訳案議論しても何の役にも立たないからせめてコントリビューションして来なさいよという意味

616: デフォルトの名無しさん sage 2022/11/27(日) 14:44:21.27 ID:obDxoM1f
横失礼します。
>>613そのものは共感に値します。
>>615さんも同感ですよね?
2022/11/27(日) 18:52:53.78ID:WnQW1xBa
翻訳の話題NG
想像以上の闇がありそう
2022/11/27(日) 19:05:09.68ID:vnIlphb/
今の状態でいきなり協会が立ち上がったら遺恨を残すだけ。
2022/11/27(日) 19:25:30.10ID:oBBhjDqK
てか現状の雑翻訳の張本人=英語マウント君の可能性すらある
2022/11/27(日) 20:48:36.17ID:Bc2lJjRX
rust-jpあたりに私怨ある人が盛り上がってる感じかな
お大事に
2022/11/27(日) 21:42:32.15ID:lFtjfrKw
書いてもないことを勝手に読み取って燃え上がるタイプっぽいからいろいろ大変そうだね…
637デフォルトの名無しさん
垢版 |
2022/11/27(日) 21:46:47.14ID:ZNWbm5aC
次スレのテンプレから
日本語訳へのリンクは削除で
>>980
2022/11/27(日) 22:01:49.36ID:WnQW1xBa
翻訳の話題禁止も追加しといてくれ
639デフォルトの名無しさん
垢版 |
2022/11/27(日) 22:07:24.37ID:berpMXHg
協会立ち上げるならRust検定も必要だろね。
2022/11/27(日) 23:00:31.47ID:N2XeKp1i
協会立ち上がったらRustの保証範囲内で国内法損害賠償に応相談?
641デフォルトの名無しさん
垢版 |
2022/11/27(日) 23:11:10.98ID:berpMXHg
プログラムに起因する損害を全て保証すれば、Rustの名声も高まるだろうな。
642デフォルトの名無しさん
垢版 |
2022/11/27(日) 23:12:33.38ID:berpMXHg
Rustにおいてコンパイルを通るとは、すなわちバグが無いと保障されること。
と宣伝してたからな。
643デフォルトの名無しさん
垢版 |
2022/11/27(日) 23:14:15.63ID:berpMXHg
Rustサムライという映画があったような。
2022/11/27(日) 23:29:35.46ID:NsWs/3+t
rustの勉強に前に英語の勉強を
645デフォルトの名無しさん
垢版 |
2022/11/27(日) 23:44:50.88ID:berpMXHg
日本が世界に誇るRust言語。
646デフォルトの名無しさん
垢版 |
2022/11/28(月) 08:14:55.76ID:u/1oLUrZ
リンクトリストやグラフ構造が地獄という話題に戻ろう
GC無し言語のRuneはrelationという機能で解決してて素晴らしいのではないでしょうか?
有向グラフのコード例↓
https://github.com/google/rune/blob/main/doc/rune4python.md#the-directed-graph-example
2022/11/28(月) 09:39:33.33ID:MVujw8Ga
>>646
その言語が何を保証しているのか解説よろ
2022/11/28(月) 09:52:18.49ID:sJQkfuAF
>>643
ググったら何かいそうなのww
649デフォルトの名無しさん
垢版 |
2022/11/28(月) 11:16:45.67ID:BYOiineU
>>595
このジェネリック使った静的チェック付きのStateパターンは他の言語では見ないんだがRustと同じように実装できるんだろうか?
2022/11/28(月) 11:26:51.11ID:VpBGmQkI
>>646,649
保証がないなら無意味なのでは
2022/11/28(月) 11:48:49.74ID:ysUCvAXy
>>649
C++で言うところのタグディスパッチ
2022/11/28(月) 11:51:10.38ID:cwhW39fK
>>650
保証の有無は分からないんだけど、
仮になかったとしても、rustのunsafeと同じでプログラマの責任で自由にできる部分があるのは意味のあることでは
653デフォルトの名無しさん
垢版 |
2022/11/28(月) 12:37:21.67ID:B8Z/qDA7
>>651
タグディスパッチの場合はある状態がサポートしない操作もオーバーロードできるように書かないとダメじゃない?
それだと他の言語の一般的なStateパターンの実装方法と基本的には同じ
2022/11/28(月) 13:02:49.16ID:wvJe/vpd
>>653
一般的なStateパターンではなく、静的チェック付きのStateパターンだと何が保証されるのですか?
655デフォルトの名無しさん
垢版 |
2022/11/28(月) 14:37:02.92ID:goiShTMa
>>654
ある状態でサポートされてない操作を呼び出す(可能性のある)コードはコンパイル通らない
ジェネリックを使わない形の静的チェック付きStateパターン実装は他言語でもよく見るよ
2022/11/28(月) 15:00:23.08ID:pom2iae5
>>655 全体的にちょっと回りくどい表現で理解できません。

>>655は、Rustではコンパイルが通れば実行時エラーが起きない事が保証される、
という事を言っているのでしょうか?
(他の言語との比較ではなく)
2022/11/28(月) 15:00:27.21ID:pom2iae5
>>655 全体的にちょっと回りくどい表現で理解できません。

>>655は、Rustではコンパイルが通れば実行時エラーが起きない事が保証される、
という事を言っているのでしょうか?
(他の言語との比較ではなく)
2022/11/28(月) 15:01:45.50ID:pom2iae5
すみません。マウスのチャタリングかな。。
659デフォルトの名無しさん
垢版 |
2022/11/28(月) 15:23:59.23ID:mX/IntZU
>>656
Stateパターンに明るくないようならthe bookに2種類のStateパターンの実装が出てるので読んでみて
https://doc.rust-lang.org/book/ch17-03-oo-design-patterns.html

1つめの実装はある状態でサポートされない操作が呼び出されたら何もせずselfを返したり空文字列を返したりしてる
2つめの実装はある状態でサポートされない操作を呼び出すコードが有ればコンパイルエラー

>>595のやり方は2つめの実装をジェネリックとmarket typeを使ってPost<Draft>みたいな形にするもの
2022/11/28(月) 15:38:39.29ID:26iHAu1B
Modern C++ Design で Policy と呼ばれているパターンに近くない?
基本的な言語機能が違うので単純に比較はできないかもしれないけど。
2022/11/28(月) 16:45:22.66ID:gmgHbWWJ
>>659 ありがとうございます。おかげ様で理解が深まった気がします。

>>655が言っていることから理解したこと
静的"型"チェックの出来る言語なら適切なStateパターン実装を用いれば、
各状態に対応した型に実装されていない操作をコンパイルエラーで検出できる。

>>655が言及を意図的に避けている単語
保証
2022/11/28(月) 17:30:33.44ID:CGc28UZt
ん〜、Rustで保証を持ち出さないんだったら、>>649=653?は何をマウントしようとしたのかすら不明
あと655は別人じゃね?
2022/11/28(月) 17:41:27.83ID:/aP8eVMy
話の流れとは全く関係無いが、
twitterでは、rustで検索するとゲームが多数を占めてしまうので問題だが、
rustlang lang:ja
で検索すると割りと上手く行く。
2022/11/28(月) 17:53:52.03ID:x/Rrw6wy
ググったら一発で出てきた

doc.rust-jp.rs/rust-nomicon-ja/
>また、様々な種類の安全性や保証についてもたくさん説明します。
2022/11/28(月) 18:00:25.08ID:JOAT4gaO
>rust-jpあたりに私怨ある人
こんなやついるのか?保証に敏感な人はrust-jpの何を拗らせたの?濡れ衣でしょ
2022/11/28(月) 18:15:54.07ID:hRO2AtDN
言及する価値無し
2022/11/28(月) 18:19:33.94ID:9jvbe+te
誰もYesかNoか答えない(含む自分)5chアンケート調査

Rustではコンパイルが通れば実行時エラーが起きない事が保証される

(ちなみに拗らせてないしrustjpに私怨ありません. >>635のデマでは)
2022/11/28(月) 18:33:51.31ID:LDNjf6uN
実行時エラーを心配するって、どういうレベルの人たちだよ
2022/11/28(月) 18:35:25.02ID:kKtU7ET1
「Rustではコンパイルが通れば実行時エラーが起きない事が保証される」
これ自体が大嘘だろう?I/Oのある呼び出しは必ずRuntimeパニックの可能性があるし、実行時エラーが起きない事が保証されるのは
一部の実行時エラー(主にメモリー関連、例:配列インデックス範囲外など)であり、unsafeでもチェックが働く部分を強調してるだけ
2022/11/28(月) 18:47:02.30ID:cwhW39fK
そんなに慌てて連投なさらなくても大丈夫ですよ
おちついてください
2022/11/28(月) 18:48:22.90ID:/aP8eVMy
RustがC++に勝るのは(原因特定の難しい)メモリー関連バグが防げるというだけで、
その他のバグは防げない。
しかも、メモリー関連バグですら、実行段階で始めて発覚するものがRustでも
有りえる。ようは、メモリー関連バグの原因特定がし易くなるというだけで、
メモリー関連バグを綺麗さっぱりなくせるという意味ですらない。
また、FORTRAN、BASIC、Perl、Ruby、PHP、Java、C# などはメモリー安全で
メモリー関連エラーは発生しないが、古来、バグはいくらでも入る。
2022/11/28(月) 19:09:17.89ID:sJQkfuAF
twitter で検索するのって若者かな。
欲しい情報にたどり着けるのだろうか。
https://togetter.com/li/1977794
これを思い出した
2022/11/28(月) 20:00:00.32ID:nxIypHTQ
The Book にコンパイルは通るけど実行時エラーが出る例あるじゃん、何の話をしてるの?
2022/11/28(月) 20:03:31.87ID:Wp/I5FPo
実行時エラーが起きないことが保証されると書かれている公式サイトのURLを下さい
文脈も合わせて読まなければ判断できないので
日本語で引用しているということは誤訳の可能性もあるし
2022/11/28(月) 20:04:25.28ID:ptllJlnS
>>671
>古来、バグはいくらでも入る。
Rustでもバグfixが追いつかない実例->lapce
code editorは数人(+ごく稀なcontributor)で対応するには余りにも複雑なプログラムだと思う。
2022/11/28(月) 20:07:06.18ID:TT/P6KwG
他の言語ってインターフェースを関数から返せるっけ?
Rustはトレイト返せるけど
2022/11/28(月) 20:09:20.88ID:ptllJlnS
https://github.com/lapce/lapce/issues

他スレで上がってたのを思い出して見てみたら放置されてた
https://github.com/lapce/lapce/issues/1668
2022/11/28(月) 21:13:58.78ID:2w53O7+w
>>674
文脈あって範囲を限定すると今度は証明が~となるので、そうなると正直判断できない。
結局大雑把な文脈での話しか出来ない自分です。
679デフォルトの名無しさん
垢版 |
2022/11/28(月) 21:38:31.45ID:LooEy8MN
>>676
返せるでしょ
むしろRustはなんで直接trait返せないんだ?ってなるのが普通
680デフォルトの名無しさん
垢版 |
2022/11/29(火) 00:09:28.41ID:zwTDTYOm
これ一番速いのはいいんだけどなんでバイナリサイズGoの倍もあるんだ?そこが不服だわ
https://ecostack.dev/posts/wasm-tinygo-vs-rust-vs-assemblyscript/
2022/11/29(火) 00:28:33.22ID:fvnZTYNV
>>680
GoじゃなくてTinyGoだから別コンパイラじゃないのか?
しらんけど
2022/11/29(火) 00:29:24.71ID:bjuqnrsq
確かに。GC無いから転送サイズ小さくなる、と言う触れ込みは再考の必要があるのか。
https://i.imgur.com/nCVoHXW.png
683デフォルトの名無しさん
垢版 |
2022/11/29(火) 00:40:07.72ID:zwTDTYOm
なんかこうやって纏められるとAssemblyScriptがわりと高いレベルでバイナリサイズ・実行速度・メモリフットプリントのバランス取れてていい感じがするな
wasmターゲット専用言語だからセットアップ単純だし
Rustはwasmターゲットだと若干セットアップ手間だけど速度は文句無しだからバイナリサイズだけせめてGoよりは小さくなってくれ
てかGo(TinyGo)よりサイズが必要な道理はないよな?
まさかデバッグビルドか何かかしら?
2022/11/29(火) 00:51:42.61ID:GvyrOa7B
randじゃね?
Math.randomで揃えたほうが意味のある比較が得られるかも
2022/11/29(火) 01:20:35.39ID:zkGFWomx
これが最新情報かどうかわからないけど、wasm-bindgenに対応していないかも
https://blog.logrocket.com/comparing-random-number-generators-rust/
>Note: Unlike JavaScript, there is no Math.random method equivalent currently available in Rust.

randの方は、これで行けた
[dependencies]
wasm-bindgen = "0.2.63"
rand = {version = "0.7", features = ["wasm-bindgen"] }

デバッグビルドの心配はなさそう
https://i.imgur.com/Y1Cut3b.png
686デフォルトの名無しさん
垢版 |
2022/11/29(火) 07:42:30.08ID:SJ6gC8Ff
>>680
https://zenn.dev/dozo/articles/14b76b561f3b45
2022/11/29(火) 10:50:30.64ID:kK2YPnkZ
>>686のリンクには
>WebAssemblyを使う上で、最早定番となっているwasm-pack, wasm-bindgenだが、これらを使うことでサイズが小さくなる。
と書いてあって、>>680の手法と同じ

今は
サイズ我慢で速度重視→Rust
トータルバランス重視→AssemblyScript

AssemblyScriptでループアンロール→最強の可能性
2022/11/29(火) 18:52:25.76ID:K9a8IO+l
文脈を限定すると答えられる5ch意識調査

RustはGC無いから○○では○○が有利/不利。自由に○○を埋めてください
2022/11/29(火) 18:55:24.50ID:t+w4gnFQ
次スレはワッチョイ付けとくか
2022/11/29(火) 19:25:03.39ID:KYdU3S5N
>>689
次スレ待たなくていいからワッチョイスレ建ててよ
2022/11/29(火) 19:54:15.57ID:VRBW4+C+
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/

あるやん
2022/11/29(火) 20:07:43.93ID:oIl8dOKJ
>>691
表面的にはひどい荒らしスレに見えますが、ワッチョイなしスレに誘導したい思惑でしょうか
2022/11/29(火) 20:14:44.32ID:VRBW4+C+
スレタイしかみてないから知らんがな (´・ω・`)

> ワッチョイなしスレに誘導したい思惑
ここがそうなんだけど、どういうこと???
2022/11/29(火) 20:25:34.24ID:XdsjIrxf
次回からこう聞くように

限定された文脈なのに誰もYesかNoか答えない(含む自分)5chアンケート調査

RustはGC無いからwasmでは転送サイズ小さくなる可能性がほぼほば100%
2022/11/29(火) 20:44:54.77ID:CCXgN4qQ
>>694
何と比べてるのか限定されていません。

RustはGC無いからwasmでは、GC付き言語のGoと比べて転送サイズ小さくなる可能性がほぼほば100%

これだと大嘘です。GCマウント禁止
2022/11/29(火) 23:14:29.40ID:JTTSm0Nf
ワッチョイでスレが健全化された例ってあるん?
2022/11/30(水) 01:36:38.11ID:CGVOYd9m
新規ワッチョイスレを他言語比較マウント禁止のスレとして立ててくれませんか?

複オジがマウントするから荒れるわけなので、こちらは隔離スレ
こちらの隔離スレではたぶん複オジが嘘つきマウントし放題だけど、心ある人が都度、嘘認定をする流れで
2022/11/30(水) 08:15:37.71ID:zxU0c19+
>>696
自分は知らないな。原理主義者の言論弾圧に使われるのがオチ
センシティブな話題も客観的に議論できるようになった例は見たことない
2022/11/30(水) 08:41:56.63ID:5hu//ubR
スレは健全化しないけど、NG指定が簡単になるからchリーダー使用者の恩恵は大きい。
2022/11/30(水) 08:50:23.49ID:JOQsrdYp
やる気のある荒らしにとってはワッチョイスレの方が自作自演やりやすい
701デフォルトの名無しさん
垢版 |
2022/11/30(水) 08:52:45.01ID:G7Z4SD5Z
>>690,697
自分で立てなよ
2022/11/30(水) 09:59:30.85ID:GLbLL33e
翻訳論議が一段落して、次はワッチョイ論議
つまりこのスレは話題があんまり無い
703デフォルトの名無しさん
垢版 |
2022/11/30(水) 10:15:08.01ID:oBo+tKG7
リンクトリストやグラフ構造が地獄という話題に戻ろう
2022/11/30(水) 11:14:03.81ID:i6HTre51
>>699
論理的な主張をする人が消えるからデメリットはかなりある

>>700
ほんそれ。ワッチョイ入れると情報リテラシーが低い奴の比率が増えて荒らしにとっても
議論を誘導しやすく都合が良い
ワッチョイ導入したスレはネガティブダメ絶対で盲目信者の巣窟と化した所ばかりだわ
2022/11/30(水) 11:39:08.76ID:zgBPYpzJ
>>704
C++相談室 part162
https://mevius.5ch.net/test/read.cgi/tech/1667194175/

を見る限り、論理的一貫性をもった主張の出来る人ほど、コテハンやワッチョイを長期間維持しているように見えます。

ワッチョイスレを否定したり、建てられても過疎化させようとしている人の側に複オジおよび複オジ軍団?がいると思います。
2022/11/30(水) 11:45:59.09ID:GLbLL33e
そのスレ、先週の木曜から丸1週間
連想配列とハッシュについて、用語の使い方でもめててカオスなんだが
2022/11/30(水) 12:04:15.09ID:/jkyAEdJ
だから、>>696,698,700,704がその、複オジおよび複オジ軍団?、の工作だと思われ
C++スレにも複オジ軍団が居て、事実を捻じ曲げておちょくってる

ワッチョイはブラウザ次第で結構似たものになるので、他の板で実験してから紛らわしいワッチョイになるようにして工作している

もっと効果の高い、地域表示があるワッチョイスレ、どうやって立てるのか教えてくれ
2022/11/30(水) 12:13:40.18ID:cmtce+MC
複オジ軍団はここしばらくは他スレを荒らして、このスレではバレバレな潜伏しているのはなぜ?
2022/11/30(水) 12:15:14.45ID:jPWRqkwi
自作自演できないとめっちゃ困るヤツがいるみたいだなw
710デフォルトの名無しさん
垢版 |
2022/11/30(水) 12:23:21.21ID:2gwAbMS9
>>703
じゃ、まずRustで書いた地獄のようなコードを公開しようか
2022/11/30(水) 12:23:29.98ID:OzkchGTR
地域表示があるワッチョイスレ、これでいい
2022/11/30(水) 12:39:01.46ID:pEwW8jKj
このスレ他の荒らされスレも自衛のために地域表示があるワッチョイスレを導入するべき
713デフォルトの名無しさん(茸)
垢版 |
2022/11/30(水) 12:39:21.42ID:IuI5QH4S
test
http://hobby23.net/archives/wacchoi-ng/
ID+W
!extend:checked:vvvvv:1000:512
ID+IP
!extend:checked:vvvv:1000:512
ID+W+IP
!extend:checked:vvvvvv:1000:512
2022/11/30(水) 12:52:42.68ID:AuqILHPE
ワッチョイを入れるともっともらしい事を書きつつ論理性のない奴ばかりになるんだよな
2022/11/30(水) 12:58:59.97ID:pEwW8jKj
でも地域コロコロは相当な手間だろうから効果的
716デフォルトの名無しさん
垢版 |
2022/11/30(水) 13:15:44.12ID:qQx/nUVl
いやいやw
ボタン一押しで変えられるからw
2022/11/30(水) 13:22:01.95ID:UkkEZSxh
>>716 複オジ軍団おつ
本当にそこまでしてると犯罪集団の疑いがかかるよ
大人しく納得してよ
718デフォルトの名無しさん
垢版 |
2022/11/30(水) 13:31:07.04ID:RA9ND8/X
>>705
まともなスレなのかと思ってみたら予想以上に酷かった
NGが捗るのだけは間違いない
719デフォルトの名無しさん
垢版 |
2022/11/30(水) 13:33:05.03ID:HgZFIyO3
>>717
おいおいw
複オジ軍団に入れるなよ
リテラシーの低さを指摘してやっただけだぞ

つか複オジに軍団がいるわけないじゃんw
2022/11/30(水) 14:33:18.63ID:bBS0BhSp
そう思ってよく見ると、これ軍団?なのかは知らないけど

C++相談室 part162
https://mevius.5ch.net/test/read.cgi/tech/1667194175/392-393

アウアウウー Sa5b-*
ちょくちょく話の腰を折るのが楽しくて仕方ない、ポエオジに見えてきた
2022/11/30(水) 15:11:10.30ID:WOTWHh4+
その人競プロスレにもいる
そのワッチョイだとよそ者扱いなの気づいてないかも
その仲間もいる
722デフォルトの名無しさん
垢版 |
2022/11/30(水) 15:45:12.01ID:pJupgOvS
アウアウウーはNGにしてるわ
同じやつかもしれんがロクなやついないので
2022/11/30(水) 16:09:27.62ID:luaLXMjy
>>707
妄想乙。陰謀論とかすぐに信じちゃいそうだから気をつけような
2022/11/30(水) 16:26:36.69ID:C5ItOzWN
C++スレ、だいたい見分け付くから安心して
725デフォルトの名無しさん
垢版 |
2022/11/30(水) 16:45:35.81ID:Wzirhnl9
そこに某オジが混ざってるのは確か
2022/11/30(水) 19:27:06.50ID:FAHQHXzj
ワッチョイ導入を吠える奴に限ってワッチョイコロコロだよな
2022/11/30(水) 19:33:03.35ID:VjUnhy87
オイコラミネオの方が特徴を出している
2022/11/30(水) 19:47:27.00ID:wYxb0V08
競プロスレではオイコラミネオがマウントしてアウアウウーがたしなめてる?
2022/11/30(水) 20:19:35.44ID:30W6u2RH
オイコラミネオはかのMAUIと意気投合してる

WPF(.NET, WinUI) GUIプログラミング Part30
https://mevius.5ch.net/test/read.cgi/tech/1667010874/279
279: デフォルトの名無しさん sage 2022/11/26(土) 11:06:15.13 ID:1ldKsJnP

これの少し上(265以降)からx:Nameの話のやり取り。質問者は別人で知ったかしてるのがオイコラミネオ

ID:1ldKsJnP == ID:1ldKsJnPM (オイコラミネオ MMab-ykd8)
http://hissi.org/read.php/tech/20221126/MWxkS3NKblBN.html
2022/11/30(水) 20:25:16.86ID:dptuEtJz
オイコラミネオ語録
天才
漏れ
のであった
のであっる
2022/11/30(水) 20:50:59.01ID:D0f5nOYN
語録 意味論+のであった コンボ

次世代言語29 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1663409149/352
352: デフォルトの名無しさん sage 2022/09/22(木) 06:32:39.62 ID:KYC2ssXj
>>343
意味論(semantics)はコンピューターサイエンスでは常識かつ必須のものであり
今回のような証明においてももちろん不可欠のもの
そして>>319の論文を見てみたら当然のように今回の核心部分で意味論(semantics)が出てきている
皆が言及しているのも当然なのであった
2022/11/30(水) 20:56:14.68ID:xA9q89X1
こういう単発ガイジの対策になるわけですよ
2022/11/30(水) 20:58:56.08ID:3owZWjDR
Doc本家代弁者の思い込み? 本スレ ID:rSYd8nrB

>>492: デフォルトの名無しさん sage 2022/11/24(木) 15:33:59.04 ID:rSYd8nrB
一方rustコミュニティはコンパイラのdiagnosticの翻訳者を募集していたのであった
https://blog.rust-lang.org/inside-rust/2022/08/16/diagnostic-effort.html

>>484はこういうのもやらない方が良いと思ってる?
734デフォルトの名無しさん
垢版 |
2022/11/30(水) 23:53:41.68ID:BfCpCYnc
これは他の開発環境でもよくあることだけど、こんなの訳されたらググりづらくなるだけじゃねえのか
2022/12/01(木) 00:17:38.55ID:8yYXZOAf
rustcの場合はURLやエラーコード出るからメッセージが日本語でも特に支障はないのでは
2022/12/01(木) 08:02:15.14ID:CTIQwGqT
英語のメッセージでググっても中身のないアフィカス日本語サイトしか出てこないようになっているからどっちもどっち
日本語のメッセージがアフィカスサイトを上回るならメリットあるね
2022/12/01(木) 10:50:28.62ID:aRdHv5SW
昨日のヒントで掘ったら、某オジがなんでPerl偽装するほどハッシュを拗らせてるのか分かった
2022/12/01(木) 12:18:36.87ID:C8o9eLrx
すごく久しぶりにRust関連みたらめっちゃ荒れてんのな。
一体何で揉めてんの?
2022/12/01(木) 13:18:45.22ID:hut8tsqa
翻訳の話題になると単発Rustガイジが急に湧いてきたから
そこに関わって雑に扱われた人なんだろう
私情がむき出しになってる
怖い怖い
2022/12/01(木) 13:36:00.00ID:fiJuDPd3
そうかな?おれは某オジが公式のお手伝い的立ち振る舞いをする事が迷惑
2022/12/01(木) 13:40:04.93ID:QSGflsTk
↑単発Rustガイジ
2022/12/01(木) 13:48:38.39ID:LRCAz4YI
オイコラミネオさ~ん、別室で呼ばれてますよ~
2022/12/01(木) 14:10:19.16ID:+8V7DDLQ
オイコラミネオさ~ん、先生がお待ちですよ! #確率的探索中
2022/12/01(木) 14:15:29.05ID:p39MirQK
オイコラミネオさん、じゃあ始めますね~
745デフォルトの名無しさん
垢版 |
2022/12/01(木) 14:17:59.07ID:qbMIrOAL
言われてみれば低品質翻訳オジと某オジは言葉使いが似てるな
2022/12/01(木) 14:33:23.35ID:o5v4IIF+
おれは某オジがそういうフリをしている可能性を問題視してる
2022/12/01(木) 14:39:13.55ID:jvRfhEdy
私怨論に話をそらせたいのが某オジ >>635,739
748デフォルトの名無しさん
垢版 |
2022/12/01(木) 14:47:44.37ID:FTdOeqRZ
rust-jpに私怨てw
自意識過剰もいいところ
2022/12/01(木) 14:58:55.31ID:KbSqTJy2
#オイコラミネオさ~ん、知らない事は調べてきて答えてくださいね!
当分の間はコロコロ禁止ですよ!
お友達もあとから呼び出しがありますから伝えておいてくださいね!
2022/12/01(木) 15:18:16.92ID:QSGflsTk
ここまで単発Rustガイジ
もうおわりだよこのスレ
2022/12/01(木) 15:27:01.81ID:3qQOITc+
お友達さ~ん、ま~た数学拗らせて~
Rustの保証は数学的証明付きだとかホラふかないで~
恥ずかしいからやめてくださいね!
2022/12/01(木) 16:19:19.59ID:jEoqaGTE
別室での話だけど、
別人が誤ったから、同じ主張やその後の間違いを放り投げて幕引きとか、特徴出し過ぎ
2022/12/01(木) 16:29:41.61ID:jAeBwf3w
こんな所でコソコソしてて草
2022/12/01(木) 16:37:42.16ID:xrmQW8I1
>>753
#某オジはお願いだからこっち来ないで #MAUIとお幸せに!
2022/12/01(木) 16:38:32.69ID:35O+q6ze
なんでID変えたの?
2022/12/01(木) 16:46:32.24ID:aw0kAUIM
>>755
意味不明
2022/12/01(木) 16:49:44.04ID:jAeBwf3w
>>754
>>752みたいなアホを排除したらよくね?w
2022/12/01(木) 16:54:15.87ID:xSaC71UL
いや俺のプロファイルだと間違いなく関わってる人間だ
2022/12/01(木) 17:00:53.18ID:SU5R7n94
すごいな。万が一、仮に裏方かなんかで関わっていたとしても、もう表舞台は無理だよね

ちなみに別の別室も注目>>756
760デフォルトの名無しさん
垢版 |
2022/12/01(木) 17:09:30.19ID:fD4PDcdr
C++隔離部屋のくだらないレスバをRustスレに持ち込まないでくれる?
2022/12/01(木) 17:23:29.67ID:uXbJjnno
即解決じゃないでか。手元でやってませんがvalgrindでしょうね

コンパイルエラー→Rust (マウントじゃなく)
valgrind/sanitizer/etcで確認→C/C++

それぞれの流儀に従うまでです ← ここ重要

C言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/707
707: デフォルトの名無しさん(ワッチョイ ff63-RPwI) sage 2022/12/01(木) 16:47:51.25 ID:knNtAgEU0
y[200001];とd[200001]がスタック壊してしまいます涙
2022/12/01(木) 17:28:44.40ID:uXbJjnno
一つ言えるのは

C言語なら俺に聞け

即解決、機能した
2022/12/01(木) 17:38:11.07ID:fp7Y5Vje
今なら貼っていい?

RustとModern C++によって目が醒める
https://codezine.jp/article/detail/16769?p=5&anchor=4
2022/12/01(木) 18:17:06.08ID:Wq6wsgb9
別室の先生方は毎日ボクシングして切磋琢磨している、という説
くだらないレスバだけ、に見えるようでは青い、という説
2022/12/01(木) 18:40:23.81ID:PeHv0CKI
#某オジはこれを作って活躍してください

Rust言語なら俺に聞け

コテハン/ワッチョイ有の方が徳を稼げると思います
#MAUIもこの手法で少数?の支持を得始めたかもです
2022/12/01(木) 22:44:34.30ID:cwSC/i2f
本気で提案したつもりでしたが残念です。

私は書き込みせず見ただけですかが、
#某オジ = ID:mPKw+fm5 ですね。
http://hissi.org/read.php/tech/20221201/bVBLdytmbTU.html
2022/12/01(木) 23:06:28.23ID:oYnak1Dn
#某オジは自分に球があると自他共に認める状況が発生するとすかさず放り投げて、
空いた回線で他のスレを荒らしに行く

>>658-659の懸念が現実化してRustに泥を塗らなぬよう即刻やめろ
2022/12/01(木) 23:47:30.33ID:VP+MjCQ6
今更Modern C++に目覚めるぐらいならGoogleのCarbon Langに人生賭けた方が良くない?
2022/12/01(木) 23:54:13.57ID:Vi6mnuHJ
いろいろプロファイルすると、複オジ軍団説、完全否定できない。

Carbon Langの状況なんて無視して話を逸らす>>768 複オジ軍団ですか?
2022/12/01(木) 23:57:07.42ID:xX1TOujC
複オジ軍団に次世代言語にやたら興味がある人物がいるようだ
2022/12/02(金) 00:12:34.82ID:TMuqcbhv
C++の本 //鈍器
Rustのほん // ペラペラで字が大きい
こんなイメージなので勉強する気Maxの時はビャーネ・ストラウストラップの本を買ってしまおうかと、気の迷いが起こる
2022/12/02(金) 00:15:42.04ID:U8ThSRxs
>>768がyes/no答えない質問

Rustのメモリ安全性の何らかの保証に関して数学的証明がされている?
yesの場合はその、何らかの保証、を詳しく

俺らに恥かかせないでよね
2022/12/02(金) 06:22:19.71ID:1evFSF3k
このスレはオジをNGワードにすると割とスッキリする。
774デフォルトの名無しさん
垢版 |
2022/12/02(金) 06:28:40.89ID:dhVfz/AS
複オジww
2022/12/02(金) 16:07:31.52ID:ef8lBYgh
>>771
いまさら禿本とか
776デフォルトの名無しさん
垢版 |
2022/12/02(金) 16:15:41.71ID:KasCtwYY
本の厚さと内容の濃さは比例しない
良本なら反比例することもよくある
777デフォルトの名無しさん
垢版 |
2022/12/02(金) 18:41:11.95ID:zxUfj+om
C++は余計な機能が多すぎて、解説する本が分厚くなっている面もある。
シンプルイズベストという言葉もあるくらいなので、HSP最強説。
2022/12/02(金) 19:55:07.44ID:xiR4WMyB
ハゲ本は結構良いよ
ただ難しい内容を説明してるわけでもないのに
説明が回りくどいのでそこが好みと合うか
2022/12/02(金) 20:25:09.96ID:mKFQqkua
解説は平易に越したことはないけど本来もつ複雑さより平易には出来ない。
解説が回りくどいように見えるかもしれんが C++ が回りくどい分がそういう形で表れてるだけ。
回りくどくない C++ 本は何か省いてる。

Stroustrup の本は D&E しか読んだことないから他は知らんけど。
2022/12/03(土) 00:26:57.58ID:dPKr1JJo
>>779
ところで、C++は他にどんな本で学びましたか?
2022/12/03(土) 14:07:20.58ID:6D7qwbVS
C++の人がRustも使っているだけで、大半の人は両刀使いって事でOK?
2022/12/03(土) 14:34:57.98ID:jUK3mt1e
今の段階でC/C++全く使えないでRust使える人は見たことがない
2022/12/03(土) 14:49:09.11ID:PqbNO9jz
自分の周りには普通にいるけどな、Web系メインだった人とか
単にやったことないってだけで別に今からやればできるようになるとは思うけど
2022/12/03(土) 14:50:45.29ID:wt3jQGAX
自分もC/C++は書いたことないよ
2022/12/03(土) 15:13:46.08ID:riW5om/o
>>780
私は古い世代の人間だからそんなことを聞いてもこれからの役には立たないよ。
とりあえず入門したのは「注解 C++リファレンスマニュアル」だなぁ……。
あとは雑誌を見たりウェブ上のリファレンスとかニュースとかで細々としたことは知った感じ。
2022/12/03(土) 15:24:14.86ID:uzIr2bMT
Windows の場合、Visual Studio に追加で入れるから最初はC# か何かは使ってないと拒絶しそう
2022/12/03(土) 15:37:09.41ID:nkG5MvF7
C++も書けるが最近はPythonメインで使っていて今はRustに傾倒してる
2022/12/03(土) 17:06:05.61ID:ecXQ+fMx
Rust の Vec::vec は、push() で末尾追加できますが、
このメソッドの signatureを見ると戻り値は存在しておらず、
メモリー確保に失敗すると panic するという理解で合ってますか。
仮にそうだとして、それを C++ の try catch 構文の様なもので補足することは
できませんか。別に構文はそれに限らずなんでもいいのですが、メモリー不足
が起きた時はpanic して強制的に必ずアプリが終了してしまってアプリ
からの制御は何も出来ない、ということですか。
2022/12/03(土) 17:08:41.38ID:ltklWITu
モダンC++はハゲ本か独習C++くらいしかまともな入門書がない
2022/12/03(土) 17:09:29.11ID:yu/BUrHT
>>787 Rustに傾倒中の勢いで力試しだと思って、春先からやられっ放しのCountWords最適化に挑戦してはくれないか?
2022/12/03(土) 17:58:23.87ID:8XRumJlQ
これからcodezineでモダンC++の連載始まるぞ
792デフォルトの名無しさん
垢版 |
2022/12/03(土) 18:16:35.82ID:SoE3tSBB
>>788
try_reserve
2022/12/03(土) 18:54:46.71ID:AI9TLj2L
最初から全部モダンな書き方だといいな。
本によっては昔のものと混ざっている。
2022/12/04(日) 14:50:02.38ID:Mg8RdVSD
自分がモダンc++で書いてても旧式と絶対に出会ってしまうのでそっちもできるようにしないといけない
これが困る
2022/12/04(日) 16:14:46.07ID:RV2/jwt7
モダンモダンって、意味不明。
自分の生誕年と比して新しいってだけで、どんだけ自己中心的なの。
2022/12/04(日) 16:22:30.31ID:qWdYVkpM
実は、Modern C++というものは厳密には存在しません。
プログラミング言語C++の、あるバージョン以降をそのように呼んでいます
2022/12/04(日) 16:57:30.52ID:fmKWV/wp
生誕年とか関係なくてC++11以降の新機能を優先的に使うことを一般的にモダンと呼ぶだけだぞ
2022/12/04(日) 17:20:06.36ID:OHPAilb6
C++11も10年以上前だし今モダンと言ったらもう少し新しいんじゃないの
2022/12/04(日) 18:17:34.92ID:SUiviY+F
CodezineのModern C++連載はC++14、C++17、C++20の3バージョンを主題してるなぁ。
2022/12/04(日) 18:18:58.95ID:E8sA5vC6
飛び越えられる程度の低い段差が盛段な気がしている
801デフォルトの名無しさん
垢版 |
2022/12/04(日) 18:28:19.68ID:EQ4pAAP6
Rustと関係ないC++の話は隔離相談室でやれ
2022/12/04(日) 21:28:17.17ID:oPsAeS3X
どんなにモダンな書き方してもそれがレガシーになっていくんだからそれなりの対応力がなけりゃプログラマなんて無理
2022/12/04(日) 22:42:17.79ID:SnbSooMc
そう、Rustはもう時代遅れ
804デフォルトの名無しさん
垢版 |
2022/12/04(日) 23:35:05.06ID:pqDz82uP
『モダンRust入門』
2022/12/04(日) 23:48:46.52ID:mqdeTGzg
レガシーRustってどんなやつだろう?
・try!マクロを使ってる
2022/12/05(月) 00:26:29.50ID:pon/y3Oa
clippyに直せって指摘されるやつ
2022/12/05(月) 00:27:02.53ID:pon/y3Oa
edition2018以前はレガシー
2022/12/05(月) 03:26:17.69ID:IAPEqd2s
>>184
そのpythonの添え字の-1で配列の一番最後を表す仕様は完全に失敗した
プログラミングのミスで添字がマイナスとなった時もエラーとならず最後から数えた場所を指して意図せぬ動きで混乱を招いている
別途アクセスメソッドを用意するのが正解
809デフォルトの名無しさん
垢版 |
2022/12/05(月) 21:58:50.38ID:zZIMoY87
>>808
同意
2022/12/05(月) 22:20:16.15ID:85vlj8hv
最初にnegative indexを採用したのはPascalだが-1が最後の要素を表さない。恐らくメジャーな言語で最初はRubyかLuaだわ。
Pythonは1.4から入りだして完全にサポートされたのが2.4なので主犯ではない
それを君は間違いだといいたいだろうが、カタナシのスクリプト言語で長々としたプログラムを書くのがそもそも間違っているYO!
それでアクセスメソッドという結論に安易に行き着くのはget(-1)と同じで正直やめてほしい....
だからと言ってRustのusizeインデックスは正当化できない、使いづらいだけ
2022/12/05(月) 22:21:07.81ID:m5vf/Aut
打ち間違い?がたまたま文法的にOKなんてことは、
どの言語でも、いくらでもシチュエーションとしてあり得ることだろ
812デフォルトの名無しさん
垢版 |
2022/12/05(月) 22:38:33.84ID:NTxK7UYQ
利便性とリスクのトレードオフだからね
いちいち長さから計算する時代じゃない
2022/12/05(月) 22:47:56.84ID:jQ8cc2lX
>>810
そんな細かいことってどうでもよくね?
2022/12/05(月) 22:54:27.15ID:9YGPhFSH
>>810
> 最初にnegative indexを採用したのはPascalだが
ALGOL だろ
2022/12/05(月) 23:11:47.28ID:MKpQGtij
Cの入門書を読んで一応ある程度理解したつもりというレベルですが、Rustの入門におすすめの本やサイトがあったら教えていただけませんか?
816デフォルトの名無しさん
垢版 |
2022/12/05(月) 23:44:22.33ID:PMru5zTg
>>815
オライリー本
2022/12/05(月) 23:51:52.39ID:MKpQGtij
>>816
Amazonの試し読みで2章Rustツアーを読みました
オライリー本が置いてあるような本屋が近くになく試し読みでも3章以降が読めないのですが、辞書的な感じでしょうか?
通読にも向いてますか?
2022/12/05(月) 23:54:41.51ID:uIcr3Drw
目次を見て判断しなさいよ
819デフォルトの名無しさん
垢版 |
2022/12/06(火) 01:04:16.95ID:AYQzZ/1Z
>>817
辞書的な本じゃないよ
The Bookと同じように通読するタイプのRust入門本
820デフォルトの名無しさん
垢版 |
2022/12/06(火) 03:26:07.35ID:SqysrJ92
>>810
.last()と.get(-1)は全然違うと思うんだが
821デフォルトの名無しさん
垢版 |
2022/12/06(火) 07:58:01.16ID:zEklaQTD
>>815 The Book
https://doc.rust-jp.rs/book-ja/index.html
822デフォルトの名無しさん
垢版 |
2022/12/06(火) 10:02:55.32ID:EPp4mQNt
>>821
それは低品質版の勝手日本語訳
本物のThe Bookはこっち
https://doc.rust-lang.org/book/

本気で学びたいなら日本語訳のThe Bookに手を出したらダメ
2022/12/06(火) 10:31:58.81ID:vigVXzh5
>>822
勝手日本語訳ってどういう意味?
824デフォルトの名無しさん
垢版 |
2022/12/06(火) 10:38:42.71ID:6z0cppnT
>>822 基本的には日本語版で問題ない
それどころか英語版をGoogle翻訳しながら読むよりは質良いから気になるとこがあったら原文読む感じでいい
2022/12/06(火) 10:57:55.33ID:aMDIqhh+
釣られんなよ (´・ω・`)
2022/12/06(火) 11:05:39.12ID:aMwchw3Z
こうして、日本におけるRustの学習曲線はさらに険しくなるのであった。
827デフォルトの名無しさん
垢版 |
2022/12/06(火) 11:20:31.41ID:HA2LFIoo
定数すら知らないやつが訳した誤訳をそのまま垂れ流してるのが問題ないってww
頭わいてるのかな
そんなんだから所有権を複製しちゃうんだろ
2022/12/06(火) 12:32:25.37ID:rE8cfGd/
出版社/著者の為にも、本を買ってあげて。
2022/12/06(火) 12:39:34.84ID:swsmryOJ
数値型やブール型などは所有権の移動はなく常に複製される
830デフォルトの名無しさん
垢版 |
2022/12/06(火) 12:46:01.49ID:6z0cppnT
>>827
https://doc.rust-jp.rs/book-ja/ch03-01-variables-and-mutability.html
> 最後の違いは、定数は定数式にしかセットできないことです。関数呼び出し結果や、実行時に評価される値にはセットできません。

ここの話だと思うが、読み間違いやすい文章だな
誤訳と言うほど間違ってはないけど要改善
2022/12/06(火) 12:58:10.61ID:tS6tYBbH
またその話やんの
832デフォルトの名無しさん
垢版 |
2022/12/06(火) 13:04:06.15ID:6z0cppnT
ほんそれ
アホ臭いから突っかかってこないでほしい
833デフォルトの名無しさん
垢版 |
2022/12/06(火) 13:16:01.68ID:lM2TuwNH
>>830
なるほど
あの日本語訳はこの日本語が誤訳だとすら思えない人向けってことなんだな
ガベージイン・ガベージアウトのいい例
834デフォルトの名無しさん
垢版 |
2022/12/06(火) 13:40:54.01ID:Vu2BcSww
>>833 お前が誤訳だと思うならそれでいいから黙ってろ
835デフォルトの名無しさん
垢版 |
2022/12/06(火) 13:41:28.90ID:FStkMgHU
>>829
複製されないよwww
836デフォルトの名無しさん
垢版 |
2022/12/06(火) 13:45:42.32ID:vtEUfIF0
>>830
>読み間違いやすい文章だな
明らかな誤訳を読む側に責任転嫁しちゃうのか
2022/12/06(火) 13:52:05.31ID:tS6tYBbH
機械翻訳あるいはどこの誰とも知らぬ人でしょ
そんなの相手にムキになってないで、言語の話しろよ
2022/12/06(火) 15:15:37.73ID:RihiShBF
もうそれ飽きたから誤訳言うなら他の場所の誤訳をあげてくれ
まだその方がみんなのためになるし
2022/12/06(火) 15:39:16.64ID:vigVXzh5
ここから日本語版へのリンク張られてるけど外してもらうように働き掛けた方が良いのかね?
https://doc.rust-lang.org/stable/book/appendix-06-translation.html
2022/12/06(火) 16:53:25.53ID:rE8cfGd/
>>839
止めて下さい。
日本語も見ます
2022/12/06(火) 17:08:44.79ID:5YlTlO+b
普通に「翻訳の改善に協力しては?」って言われるだけでは
5chならともかくリアルのGithubアカウントでそんな恥ずかしいPR出せんな…
2022/12/06(火) 18:40:54.66ID:vigVXzh5
https://blog.rust-lang.org/2022/12/05/survey-launch.html
今年もrust survey来たぞ
日本語訳もある
2022/12/06(火) 20:00:08.84ID:sedVUjKM
本当に日本人って何もせず文句だけ言う人が多すぎだな
改善してほしくて改善点も分かってるなら自分でやった方が圧倒的に早いのに
844デフォルトの名無しさん
垢版 |
2022/12/06(火) 21:25:02.08ID:RDoWQe9F
あの日本語訳の改善なんて誰も望んでない
845デフォルトの名無しさん
垢版 |
2022/12/06(火) 21:37:33.14ID:FCw1RUR4
問題ありまくりの日本語訳を参考にするのはやめましょうって話であって改善しようって話ではないわな
846デフォルトの名無しさん
垢版 |
2022/12/06(火) 22:49:17.43ID:zEklaQTD
>>839 無いよりマシ
2022/12/06(火) 23:00:32.77ID:N+cyFIt6
元の英語もあんまりよくないな

最後の違いは、定数は定数式に対してだけしかセットできない
実行に計算されるかもしれない値の結果にはセットできない
2022/12/06(火) 23:03:10.60ID:h/ukiy7O
英語文献をありがたがる、典型的な舶来コンプレックス
2022/12/06(火) 23:08:53.69ID:gk9SZTYC
誤訳ですよって説得して修正させることができないなら結局主観でしかないってことよ
850デフォルトの名無しさん
垢版 |
2022/12/06(火) 23:43:26.61ID:wxmB/YEK
>>847
それが誤訳だっての
2022/12/06(火) 23:51:16.30ID:Ow+XJZhk
主観を無くすには無人か少人数の方がよさそうなのに
人が多いほど主観が少ないって誰が言ったのか、それも人が多すぎて特定できない
2022/12/07(水) 00:00:30.38ID:xLbd5eMx
参考にするのやめた方が良いような情報ならやはり英語版からのリンクは外してもらった方が良いのでは
初学者惑わすだけでしょ
853デフォルトの名無しさん
垢版 |
2022/12/07(水) 00:02:06.86ID:3JEhjr2d
>>848
英語文献をありがたがってるんではなく
某翻訳がゴミすぎるという話だぞ
854デフォルトの名無しさん
垢版 |
2022/12/07(水) 00:09:51.51ID:IJoOi7Sy
文献や資料の質を見極める力もプログラマーにとってはかなり重要な能力
質の低い文献にひっかかったなら失敗から学べ
855デフォルトの名無しさん
垢版 |
2022/12/07(水) 00:21:26.68ID:rpgrLTt2
AndroidもRustで書かれてたのかよ!
しかもRustの部分は脆弱性の報告0件って恐ろしいほどの安全性だな……
これマジでRust一強の時代がくるかも……
Ubuntuにデフォルトで入るまで待とうとのん気に構えてたけど急いで勉強しないと……!〆(.. )カリカリッ!!
https://japan.zdnet.com/article/35196972/
2022/12/07(水) 00:35:34.36ID:21cwGaas
>>855
まじ?
というか20%がrustってえぐいな
2022/12/07(水) 00:41:52.20ID:xT6Hu5AC
C/C++ の書き方の何が危ないのか、Rustはどうやって回避しているのかは何を読めば分かるの?
Out of memory なんか防げるんだっけ?
858デフォルトの名無しさん
垢版 |
2022/12/07(水) 00:58:54.43ID:fQ3/NsZR
kLOCあたり1つ以上の脆弱性があったものが1500kLOCでゼロ
unsafeが量も気になるな
2022/12/07(水) 01:00:43.82ID:+scmKVbE
Google製のRustライブラリはどんなのがあんの?
2022/12/07(水) 04:00:04.20ID:0xPH+d9p
>>855
> システムプログラミングからCやC++を排除するつもりはないという。
これの理由を知りたいわ
まだRustでは書きにくい所があるんだろうか?
2022/12/07(水) 04:05:04.23ID:+scmKVbE
ってか、Googleはその分野で使うためにCarbon開発したんじゃなかったのか?
2022/12/07(水) 04:17:31.35ID:21cwGaas
CarbonもRust使えるならRust使えと言ってる
2022/12/07(水) 09:06:42.16ID:Mw8qZqut
google発のOSSって社員の個人プロジェクトをgoogle名義で公開してるだけの場合もあるからな
2022/12/07(水) 09:19:24.95ID:vqEtcxl0
どれがいい感じに発展するか事前にわかるもんではないからな。 狙いとは違う方向で結実することもあるし。
色々やっておく (それが出来る環境を用意する) とどれかは上手くいくし、上手くいかずに消えるものも多いってだけのこと。
2022/12/07(水) 10:24:44.39ID:G2nMx9FR
そこまで誤訳だと言うならコントリビューションすれば良いのではないの?
866デフォルトの名無しさん
垢版 |
2022/12/07(水) 10:39:11.42ID:KNXoSnHr
>>855
結果だけみると凄まじい
システムプログラミング関係の置き換えは案外急速に進むかもしれんね
867デフォルトの名無しさん
垢版 |
2022/12/07(水) 11:16:25.80ID:6Eaq6nhz
>>865
誤訳だらけでキリがない
ゴミから小さなゴミを取り除いてもゴミのまま
だれがそんなことに時間使うのさ
2022/12/07(水) 12:26:52.65ID:El0pJGUF
>>867
2chで文句言って他の話題を出にくくする方が有意義だと思うやつもいるんだな。
2022/12/07(水) 12:31:58.03ID:74PfFudB
複おじ以前と以後で明らかに話題の質が落ちてるよね
おのれ複おじ
2022/12/07(水) 12:39:55.04ID:m46mCwKQ
>>865
難癖つけて嘲笑って愉しんている奴がそんな無駄なことするわけがない。
自分がマウントできればいいだけだから、そもそもRustを良くする気なんて全く無いだろ。
2022/12/07(水) 12:46:13.68ID:g3+WCnxI
>>860
Cなら分かるがRustが分からない人
のことを老人と思うのは憶測で、むしろ子供である可能性が高い
子供を排除や淘汰しても進歩など起きない
少子化が加速するだけ
2022/12/07(水) 12:53:44.84ID:Mw8qZqut
>>860
元記事に以下とあるから既存のコードをrustで書き換えることまではしないという意味だと思われる

As we noted in the original announcement, our goal is not to convert existing C/C++ to Rust, but rather to shift development of new code to memory safe languages over time.
2022/12/07(水) 12:54:18.57ID:Mw8qZqut
>>872
元記事のurl貼り忘れた

https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html
2022/12/07(水) 15:17:49.39ID:Xzjw4n/l
>>872-873
ありがとう、まあ普通はそうするよね
ただそうするとAndroid 13は20%が新規のコードなんだ...
それはそれで凄いな
2022/12/07(水) 15:24:21.27ID:3HHCfxiv
マジでrust本腰入れよ
ゾワってしたわ
C/C++書いてたけど取り残される
2022/12/07(水) 15:28:39.71ID:h/t9+qo5
>>856,874
違う
天然か煽りかわからなけどちゃんと読もうな
2022/12/07(水) 15:40:23.08ID:3HHCfxiv
せっかくモダンC++とoneTBB覚えて万能感感じてたのにさ
リセットかよ
2022/12/07(水) 15:51:23.23ID:Mw8qZqut
>>874
新規コードの20%ね
In Android 13, about 21% of all new native code (C/C++/Rust) is in Rust.

There are approximately 1.5 million total lines of Rust code in AOSP
ともあるからAOSPの全体のコード量分かればrustの割合も分かるはず
2022/12/07(水) 15:52:33.64ID:Mw8qZqut
>>878
新規コードの20%というのも不正確で新規のネイティブコードの20%
java等で書かれたものは除外したうちでの割合ね
2022/12/07(水) 15:58:02.82ID:JdTFl5al
There are approximately 1.5 million total lines of Rust code in AOSP
*Android Open Source Project (AOSP)

1.5mてどう考えても、例によってRustコンパイラやサードcrateのソースツリーも含まれている悪寒
2022/12/07(水) 16:58:18.23ID:Mw8qZqut
>>880
AOSPのソースツリーではrustcはpre-built binaryがコミットされてるから行数カウントには含まれてないっぽい
外部crateは含まれてるかも知れないけど、実際にそれだけのコードが使われているという意味では正しいんじゃないの
2022/12/07(水) 17:03:21.31ID:n0jQbyrj
>>881
その発想がrustクオリティ

Java/C++勢はそんな嵩増ししてない
2022/12/07(水) 17:15:07.05ID:g3+WCnxI
実際に使われているC/C++
を捨てることの正当性ももう無いんだからいいじゃないか
2022/12/07(水) 17:35:07.63ID:8PgDeggG
>>880
>1.5mてどう考えても、
同感。この短期間に150万行ってどの範囲?これが普通の感想

>>881
>AOSPのソースツリーではrustcはpre-built binaryがコミットされてる
何処?
github mirrorの方で教えて https://github.com/aosp-mirror

>>883
新規nativeコードの21%という数字が水増し、かどうかに係るので整理するべきかと
2022/12/07(水) 17:40:15.78ID:21cwGaas
割合とか増えていくんだからどうでもいいだろ
それよりAndroidでrustが使えるところはrustを使うという判断がとっくにされてたのが衝撃
886デフォルトの名無しさん
垢版 |
2022/12/07(水) 17:42:58.56ID:NHS9DFe3
珍しく良い記事紹介だったのに
急に下らない議論になっちゃうのな
2022/12/07(水) 17:44:20.91ID:Mw8qZqut
>>884
GutHubでどこにあるのかは分からないがAndroid Code Searchでは以下が出てきたのでpre-built binary使ってるのかなと判断した

https://cs.android.com/android/platform/superproject/+/master:prebuilts/rust/linux-musl-x86/1.63.0/bin/rustc;l=1?q=rustc&sq=

C++もrustも外部ライブラリはexternal配下にまとめられているようなので、それぞれで集計の仕方を変えるなんて事をしてない限りは、同一条件での比較になるんじゃないかな

あと150万行ってのはAndroid13の話じゃなくて累積のコード量がって話しだよ
2022/12/07(水) 17:44:50.45ID:8PgDeggG
>>884 追記
なんかRust批判みたいな印象になっているけど、881が多少調べたっぽいので詳しく知りたいだけ
889デフォルトの名無しさん
垢版 |
2022/12/07(水) 17:47:35.12ID:JLiaiVk0
>>886
次世代隔離スレがなくなると暇してるオジサン達が溢れてくるのよ
2022/12/07(水) 17:55:32.50ID:8PgDeggG
>>887 ありがと
ただし、ここ見るだれでもrustコンパイラを構成するソースファイルが山ほどある
https://cs.android.com/android/platform/superproject/+/master:prebuilts/rust/linux-musl-x86/1.63.0/src/

さすがにgccの方はsoになってる
https://cs.android.com/android/platform/superproject/+/master:prebuilts/gcc/linux-x86/

>C++もrustも外部ライブラリはexternal配下にまとめられている
こうした統計ではソースとしておいてあるかどうかで結構差がある
2022/12/07(水) 17:59:46.34ID:vqEtcxl0
割合で言えば大したことは無くてもある程度は積極的に使おうとする雰囲気は感じなくもないってところかな。
2022/12/07(水) 18:00:13.04ID:8PgDeggG
>>887
>あと150万行ってのはAndroid13の話じゃなくて累積のコード量がって話しだよ

累積のコード量で、Android向け書き起こしRustソースが150万行、という主張であれば水増しの疑いを持ってる
2022/12/07(水) 18:01:45.15ID:8PgDeggG
>>891
>ある程度は積極的に使おうとする雰囲気
それは同感
2022/12/07(水) 18:01:53.83ID:Mw8qZqut
>>890
コンパイラじゃなくて標準ライブラリのことね
確かにlibcとは扱いに差があるかもね

詳細な数値が気になるならソースダウンロードして測定してみたら良いのでは
https://source.android.com/docs/setup/download/downloading
2022/12/07(水) 18:04:39.07ID:8PgDeggG
>>894
そんな手間かけたくないから聞いたんだけど、皆そうなんだろうな

>累積のコード量で、Android向け書き起こしRustソースが150万行、という主張であれば水増しの疑いを持ってる
これで継続だな
2022/12/07(水) 18:06:43.25ID:Mw8qZqut
>>895
> Android向け書き起こしRustソースが150万行、という主張
原文ではそんな主張はしていないよ
2022/12/07(水) 18:11:19.10ID:8PgDeggG
>>896
そう。原文は意図的かどうかは分からないが、あやふやな表現なので範囲を問うてみた
ここだけ読んでそう捉えて誤解をした人がいたら、まず範囲を疑うのが普通、と思った
2022/12/07(水) 18:13:51.76ID:8PgDeggG
ちなみにPhoronixで読んだが、LinuxのRust対応は賞味2万行
2022/12/07(水) 18:20:26.12ID:wjXnim/d
>>867
じゃあ一から訳したら?
誰かがそうやったから存在するんだが…

>>870
情けないよね。マージされたらそれなりに嬉しいのに。
2022/12/07(水) 18:24:03.55ID:8PgDeggG
例えば、ここだけど、150万行はおろか、2万行すら程遠いかな
https://github.com/aosp-mirror/kernel_common/tree/android-mainline/rust
2022/12/07(水) 18:36:53.47ID:M+Adnv0G
もっと有意義な話しようぜ
fn<T>foo(x: &T); のTにSized制約付くの邪魔くせーとかさ
2022/12/07(水) 18:39:18.13ID:CifLjB7G
>>878
そうするとまたはじめの疑問が...
> まだRustでは書きにくい所があるんだろうか?
2022/12/07(水) 18:41:18.29ID:Mw8qZqut
>>901
x: TのときはSizedついて欲しいけど、&Tのときはついて欲しくないということ?
Box<T>やRc<T>やユーザー定義のスマートポインタの扱い考えるとめんどくさいから一律Sizedがデフォルトでよくない?
2022/12/07(水) 18:48:05.32ID:Mw8qZqut
>>902
今出てきている情報だけではなんとも言えないかと
Android開発者の内Rustを使える人の割合が少ないだけの可能性もある
2022/12/07(水) 18:51:46.12ID:8PgDeggG
>>902,904
その21%が水増しかどうかは重要なわけではなく

>ある程度は積極的に使おうとする雰囲気
これに意義がある
2022/12/07(水) 18:53:03.86ID:21cwGaas
そりゃC++とのInteropが絶対に必要だしRustはそこが弱い
そういう用途としてはCarbonがあるけどセキュアではない
(C++よりはマシだろうが)
2022/12/07(水) 18:58:45.38ID:8PgDeggG
>>906
は20%(水増し?)で浮き足立ったり、Carbonの話に拘ってるけど
当分の間はCarbonの話をすると鬼が笑うと思う
2022/12/07(水) 19:02:37.66ID:glN0FB8M
Androidの中のRustはGabeldorsche, keystore2, DoH, UWBくらいだっけ
もう3年くらいかかってるからそれなりの行数になってる気もするけどどうなんだろ
aospのrepo sync全部やるの時間かかるんだよな…
2022/12/07(水) 19:05:40.97ID:8PgDeggG
>>908
>aospのrepo sync全部やるの時間かかるんだよな…
そこを何とかお願いします
どの範囲を集計したら150万行に到達するのか皆気になってます
2022/12/07(水) 19:09:14.99ID:/TInWduh
repo sync 終わらんよな
今3時間経過
2022/12/07(水) 19:14:14.71ID:8PgDeggG
期待大

原文では
>There are approximately 1.5 million total lines of Rust code in AOSP across new functionality and components such as Keystore2, the new Ultra-wideband (UWB) stack, DNS-over-HTTP3, Android’s Virtualization framework (AVF), and various other components and their open source dependencies.
となってますので、

Keystore2
Ultra-wideband (UWB) stack
DNS-over-HTTP3
Android’s Virtualization framework (AVF)
and various other components and their open source dependencies.
これで150万行の大半を占めているかのような書き方です

まさかこれが大半を占めていたり
>open source dependencies
rustコンパイラのソースツリーが入っているとは言えませんよね
2022/12/07(水) 19:30:47.68ID:/TInWduh
期待すんな
gitとpython入ってるwsl環境とかあれば簡単にとってこれるぞ
https://source.android.com/docs/setup/download/downloading
ただ時間がかかるだけ
この程度出来ない奴がrustについて云々言うとか片腹痛い
2022/12/07(水) 19:35:42.75ID:8PgDeggG
>この程度出来ない奴がrustについて云々言うとか片腹痛い
そうだね(笑)

こっちでもやってみるかな
2022/12/07(水) 19:35:54.12ID:glN0FB8M
半年ほど前のやつがあったのでそれでtokeiかけてみた
とりあえずexternal内が180万行でprebuiltsが500万行くらい
なので1.5mの根拠はexternalの方かな
prebuiltsの方に上で挙がってたmuslとか入っている
external内はrustディレクトリ内の依存クレートが150万くらい
依存クレートでないので最大はcrosvmが30万行くらい

というわけでAndroidのために150万行書き下ろしたというのは言い過ぎ
ただ150万行のソースコード使ってるという原文の主張は正しそう(コンパイラのコードとかは入ってない)
まぁ依存クレートにも明らかにAndroid用っぽいのもあるし
これ以上の切り分けは難しいな
2022/12/07(水) 19:50:48.43ID:CifLjB7G
>>904
それなりに優秀な人たちだと思うんたけどそれでもハードル高いのかな...

>>905
水増しとかどうでもいいのでいちいち絡んで来ないでね
2022/12/07(水) 20:03:05.60ID:glN0FB8M
一応依存クレートも一通り見てみたけど大きいのはメジャーなやつだね
というわけでAndroidのために書かれたコードは全体で40万行以内ってとこかな

まぁtokioやらcrossbeamがちゃんと使われているのは水増しと批判するようなことではなく
むしろいいことなんじゃないか?
2022/12/07(水) 22:19:15.93ID:Lb4jZ7zf
それにしても無駄の多いコーディングだな。
そもそもAndroidで使われたというだけであって、Rustが広まったという訳ではない。
2022/12/07(水) 22:24:52.03ID:Lb4jZ7zf
かつてCが流行したのは、LatticeC、SmallC、TurboC、MS-C、WatcomC など
色んな企業がコンパイラ作りを競い合った結果だったかも知れん。
TurboCが流行ったが、それ以前からCは雑誌I/Oなどでも取り上げられて、
さまざまな人が話をし、良い言語であるという噂が立っていた。
当時を知っている俺が言わせて貰えば、なぜか、Rustはビビっとこない。
Cはビビっと来た。
C++は、初期の頃にびびっときたが、C++11では、こりゃもう駄目だ、
と思った。
919デフォルトの名無しさん
垢版 |
2022/12/07(水) 22:39:14.39ID:UARY1o0b
>>918 蓋を開けてみれば様々なバグ(特にメモリ関連)の元凶だったから、その感覚の逆が正解かな
2022/12/07(水) 22:42:23.65ID:cTs8jKu4
アセンブラとBASICしか無かった所に
Cが登場したから、そりゃ喜んで使うわ
2022/12/07(水) 22:59:32.88ID:Odhm3loP
>>918
今は何にビビっと来るの?
2022/12/07(水) 23:01:58.13ID:Xa+0WmXy
>>918
LSI C-86も入れといてね
2022/12/07(水) 23:23:48.68ID:g3+WCnxI
スタックかグローバル変数しか無い文化でCを流行らせてもヒープのバグは少ない

ヒープを使わないなら変数の寿命は固定長、という伏線が回収されたことに
まだ気付いてない人もいる
2022/12/07(水) 23:25:35.88ID:21cwGaas
>>918
ロートルは去れ
2022/12/07(水) 23:26:15.82ID:Lb4jZ7zf
>>921
そうだな、まだ決め手となるものは無いが、(個人的には好きではないが)JSに
人気が有るのはブラウザがそれしか使えなかったから「では無い」と思ってる。
Rubyと比較すればJSの方が優れているように感じる。
また、C#はJavaよりは改良されていると感じる。但し、これも好きではない。
Pythonも好きではない。人気が有る理由は恐らくAIのライブラリと使用例が
多いからではないかと思ってる。
ということで、今はびびっとくるものが無い。
2022/12/07(水) 23:31:51.79ID:Xa+0WmXy
結局RUSTに限った話じゃなかったかw
2022/12/07(水) 23:34:48.20ID:Lb4jZ7zf
Rustは大々的には流行らないんじゃないと思うぞ。
理由は色々有るが、
・流行ってる言語は、JS、Python、Java、PHP、C#、Ruby、VB など、初心者向けの
 簡易言語が多い。
・Rustは中途半端。伝統を無視。習慣を無視。直感的でない。
・そもそもRustは低レベル向け言語、上記に書いた簡易言語のターゲット層には
 被らない。
なお、Googleは色んな言語に手を出す企業。
使ってる言語も幅広く、(同列に入れるべきでないものも混ざるが)
C++、NaCL(*)、Java、Kotlin(*)、Go(*)、Dart(*)、Carbon(*)、Rust、Wasm、
などなど。[(*)は自社製言語や自社製仮想言語(?)]
自社製言語だけでも4つ、仮想言語が1つ。
2022/12/07(水) 23:36:08.15ID:cTs8jKu4
MS-DOS 向けで最初に入ってきたのは
optimizing C86 だったと思う
2022/12/07(水) 23:40:24.00ID:Lb4jZ7zf
そもそも低レベル言語でもココまでメモリ管理に気をとられる言語はなく、
直感的に書けた。
Rustはメモリ管理ばかりに気をとられる言語。論理に集中しにくい。
また、JavaやC#、C、C++では直感的に書けることがRustでは書けない。
なお、「それはおまえがバグのコードを書いているから」と反論されるが、
はっきり言って、そのコードでも全くバグは無いから。
930デフォルトの名無しさん
垢版 |
2022/12/07(水) 23:49:55.59ID:51+7TkbX
隔離スレがないからとにかく昔話をしたいお爺ちゃん達のたまり場になっちゃったね
2022/12/07(水) 23:56:19.06ID:Lb4jZ7zf
Cが流行ったのはリンクリストが作れたからだ。
Strousutup氏はリンクリストを全否定に近い形で否定しまくっているが、
彼は机上の空論であり、彼が自分で実験してvectorの方が速いとしたものも
実際に合わない机上の空論的なベンチマークテストだったろう。
そしてそれを信じてしまったRustの作者はRustではリンクリストを
まともには使えない状態にしてしまった。
2022/12/07(水) 23:59:45.09ID:sHYfIE3H
なんだお前だったのか
2022/12/08(木) 00:03:22.42ID:kNVI3qAc
スレ立てろよ
手持ちの回線だと全部無理なんだ
2022/12/08(木) 00:08:02.18ID:QroOE5Fs
ID:Lb4jZ7zfのプライドだけ高い老害感すごいな 狙ってできるもんじゃない
2022/12/08(木) 00:20:06.52ID:pMPEGjtK
一般人は馬鹿だから偉い学者さんが言った間違った言説を信じるしかない。
実験したことが現実的な状況と合ってなければ実験結果は無意味。
だから、他の経験者はリンクリストが速くてメモリー効率もいいことを知っている
のに机上の空論者であるところのStroustrup氏は、自分がやった机上の空論的な
実験結果を縦に徹底抗戦を仕掛けている。
しかし、実際と有って無いから反感を買っている。
それも、C++から人が離れていっている原因の一つ。
C++もRustもどちらも机上の空論になってる。
2022/12/08(木) 00:22:10.33ID:pMPEGjtK
>>934
老害はStroustrup氏とRustの信者の方。
Rust信者には本の謳い文句に騙された哀れな宗教信者も多いが。
937デフォルトの名無しさん
垢版 |
2022/12/08(木) 00:29:07.90ID:WCqcOtXz
即NG㌧
2022/12/08(木) 00:32:17.18ID:pMPEGjtK
LinkedListがキャッシュ効率が悪いというのも机上の空論。
なぜなら、机上の空論者は、LinkedListのノードのアドレスが「ランダム」で
あると間違った仮定するから。
実際には基本的に連続しており、多くの場合は連続して無いとしても
軽微な数バイトの隙間がところどころ空いているだけ。
大きく変化することもあるが、それは全体の数箇所だけ。
なぜなら、挿入箇所は、一箇所から始まってその周辺を押し広げてノードを挿入している
だけで、それが少数あるだけだから、アドレスが大きく変わる箇所はわずかで、
「バースト的」になっているから。
机上の空論者は、ノードアドレスをランダムだと考えるから、キャッシュ・ミスが常に
起きると考えてしまう。ところが、そんな状況はまず有りえない。
2022/12/08(木) 00:35:48.02ID:pMPEGjtK
>>938
さらに、LinkedListのメモリー効率が悪いというのもウソで、むしろ、
std::vectorの方が悪いことが多い。
なぜなら、後者は、濃度ーを末尾追加していくと、スプリアス的に
今までの配列の入ったテーブルの1.5倍のサイズのテーブルをヒープ領域から
確保してしまう。
これが物凄く致命的で、std::vectorは、要素 T のサイズが大きい場合、
物凄くメモリー効率が悪くなる。
一方、std::list は、要素 T のサイズが大きい場合、std::vectorより遥かにメモリー効率が良い。
2022/12/08(木) 00:39:53.26ID:pMPEGjtK
>>939
[補足]
std::vectorは、sizeがcapacityを越えそうになると、今までのcapacityの
1.5倍のテーブルを新たに確保するので、今までのテーブルと合わせると、
一時的に 1 + 1.5 = 2.5 倍のメモリー領域を確保してしまう。
std::list ならこんなことは起きない。
なおさらに悪いことに、std::vectorはことの時、全要素を move するので
キャッシュが大規模に汚染されてしまう。
キャッシュ汚染という点では、std::vectorは、先頭や途中への要素追加
の際もキャッシュが大規模に汚染されてしまう。
2022/12/08(木) 00:45:56.87ID:pMPEGjtK
stroustrup氏の言説はデタラメが多くてストレスがたまる。
そして、自分が間違った説を後ろ盾するために、間違った仮定の元に
実験を行なっている。
コンピュータの実験の場合、正しい仮定のもとで行なうことが重要で、
実験して時節を裏付ける結果が出たとしても、仮定がまるっきり
間違っているのだからどうしようもない。
ベンチマークテストでも、もし、実際と合わないような内容をテストしても
意味が無い。そんな状況は滅多に起きないから。
コンピュータの測度は「加重平均値」で決まる。どういう「加重」かが、机上の空論者
には分からないからデタラメになる。
言語仕様の策定においても、実際にはそんなことをやってもほとんど意味が無いことを
優先的に簡単化しようとする一方で、もっとも重要なことがめんどくさくなるような
仕様を追加してしまったりする。
だから、C++は机上の空論といわれる。
ところが、同じことがRustにも言える。
2022/12/08(木) 00:46:30.49ID:rnWAZYk7
gccのrustフロントエンドがマージされるそうだけど、これってどういう時に便利なの?
gccでビルドしたCとのcross-language LTOとかできるの?
2022/12/08(木) 01:02:47.82ID:D2mGrKMe
>>914,916
ありがとうございます とても参考になります

こちらはパーティションを小分けにしていたせいで要領不足にあっていました
これ全体だと300GB以上あるのでしょうか?

仕方ないので
repo init -u https://android.googlesource.com/platform/manifest --depth=1 --partial-clone --clone-filter=blob:limit=10M -b android-13.0.0_r18
としたら100GB位に収まって何とか完走したところです

android-12.1.0_r26も取ってきて21%がcrosvm(当初はChromeOS向け)の移行を含んでるのかどうか見たかったのですが
話のネタが変わってしまったので週末かどこかでやり直すことにしました
2022/12/09(金) 01:41:09.99ID:Sh2LVmg/
LinkedList信者まだいるんだ....
リンクリストなんて既にETHやMITでも、コンピューターサイエンスで多くの人が間違いなく否定するものなのに。別にStrousutupだけじゃないぞ?ほぼ全否定で言ってるのは
キャパを越えそうな事を無理やりするのはほぼ設計の問題だし、途中への要素追加が起きるようなコードを書いてて問題ないと思ってるのはプログラマの能力の問題。
バースト的なんて言ってるけど、連続するメモリー領域へのアクセスと比べて明らかにリンクリストが不利になるのは自明だ、さらに逆に途中追加した場合のキャッシュミスを汚染なんて言ってるけど
それこそ現代の多段キャッシュアーキテクチャを甘く見すぎてる。そりゃ容量を超えるような操作を行えばメインメモリに取りに行くけど、言うまでもないがリンクリストの要素の先はメインメモリー散らばってる。
それがキャッシュされるとしてもCPUのキャッシュは1Byteとか8Byteをキャッシュするものじゃなく1キャッシュブロックで連続するメモリーをk単位でキャッシュする。
StrousutupのC++は明らかに欠陥言語だが、それとデーター構造の理解は別の問題。 コンピュータの速度は加重平均なんていう単純なもんではない
すべてがキャッシュに乗るなら一番早く動くが、メインメモリを頻繁にアクセスするなら100倍遅くなる。メインメモリにさえ載りきらないデータを扱いHDDならそこからさらに1000倍遅い。
だがキャッシュの容量しかデータを扱えないプログラムは役に立たたないし、Swapしまくりのプログラムは実用に耐えない。
まだLinkedListを擁護する人が多いのは、欧米のように日本のプログラマーは文系や高卒がやり、明らかにまともに計算機科学というものを受けていないからだ
Rustこそ欧州主体で行われている計算機科学にあまり即してない、FORTRANみたいな米国主導のLinkedListのような産物
945デフォルトの名無しさん
垢版 |
2022/12/09(金) 02:35:24.01ID:wDDTmzGU
なんだかRubyガイジみたいな論法だよな
Rubyでできることはすばらしいこと
Rubyでできないことは必要ないこと

いや必要あるか、使うかどうかは検討の上こっちが決めるんで😅
2022/12/09(金) 08:53:27.93ID:eLXAv6sJ
関数型のElixir は、先頭だけに追加できる片方向リストで、
データが変更されない・immutable だから、バグらない

x = a-b の時に、
先頭に、c を追加して、y = c-a-b となった時に、
a-bの部分が変更されないので、x, y 両方で再利用できる
2022/12/09(金) 09:23:54.41ID:Bd/06DhF
>>944
絶対ネタで書いてるだろw
2022/12/09(金) 13:50:41.90ID:3DNXTGzR
>>944
CPUにおいて、基本的に cache block と cache line は同じ意味だが、
https://stackoverflow.com/questions/14707803/line-size-of-l1-and-l2-caches
のように、Intel CPUにおけるcache lineの大きさは 64バイト。
先読み機能が有るので、少し先まで読むことがあるが、
1KBみたいに大きくは無い。
2022/12/09(金) 13:58:22.82ID:3DNXTGzR
>>944
コンピュータ科学ではむしろ、LinkedListがArrayListより速いことがあることを学ぶ。
2022/12/09(金) 14:00:08.53ID:3DNXTGzR
>>944
>言うまでもないがリンクリストの要素の先はメインメモリー散らばってる。
現実的な使用法では、バースト的になっていて、散らばってない。
散らばっていると思っている人が現実を知らない机上の空論家だと言っている。
2022/12/09(金) 14:03:46.44ID:3DNXTGzR
>>950
[補足]
バース的で無い場合においても、非常に近いアドレスになっていることが多い。
例えば、ノードを削除してから追加すると、最後に削除されたアドレスが再利用されるから、
データ列を加工する場合にはキャッシュがとても強く働く。
また、ソートにおいてもノードの繋ぎ方を変えるだけだから、コピーはおろか、
ムーブすら発生せず、要素Tのバイト数sizeof(T)が十分大きい場合は、
std::vectorより速い。
2022/12/09(金) 14:08:27.79ID:3DNXTGzR
>>944
>コンピュータの速度は加重平均なんていう単純なもんではない
加重平均である事と、単純である事は同じことでは無い。
単純ではないが、加重平均である。
実行時間 T = Σ_i w_i T_i
w_i = 処理 i に対する重みパラメータ
T_i = 処理 i に掛かる時間

w_i は、経験を積まないとわからなくて、机上の空論家はこれを誤って見積もる。
偉いとされる先生を筆頭とした「象牙の塔」の集団幻覚の様な現象が起きる。
2022/12/09(金) 14:13:39.03ID:3DNXTGzR
>>951
[さらに補足]
・ノードを削除してから追加する--->malloc や new が、直近に
 削除したノードのアドレスを再利用されるのでキャッシュが良く効く。
・削除したノードのメモリ・ブロックが全部使われた場合、
 malloc や new がHeapやOSから新しくアドレスを確保してくる -->
 OSは後続の連続アドレスを返してくるので、アドレスはほぼ連続
 するので、キャッシュが良く効く。

故に、実際的な使用においては、LinkedListはキャッシュがよく効く。
 
 
2022/12/09(金) 14:18:24.24ID:3DNXTGzR
たとえば、馬鹿な人は、通信経路においてのエラーは「ランダムに起きる」から、
「本当にランダム」のケースを脳内で勝手に想像して、
「CRC符合は一般には役に立たない」
と結論付けてしまうかも知れないが、それは机上の空論で、
実際のエラーはバースト的に起きるから、CRC符合は非常に強力に働く。
それと同様にLinkedListもキャッシュが良く効く。
なぜならノードのアドレスが「ランダム」ではないから。
955デフォルトの名無しさん
垢版 |
2022/12/09(金) 15:08:04.74ID:gsPXBpPV
どっちもヤバくて草w
2022/12/09(金) 16:41:02.60ID:WiULU0Bz
自己完結すれば最速で完結するが
机上で完結しないことを望むなら呪術的な対価を要求されるんだよ
957デフォルトの名無しさん
垢版 |
2022/12/09(金) 17:13:50.21ID:TeKO8AU2
>自己完結すれば最速で完結する
アタオカの巣窟になりつつあるな
2022/12/09(金) 18:30:00.75ID:rq1aZYl+
絶対にベンチマークの数値は出せないリンクリストおじさん
いつまでrustに粘着してんの
2022/12/09(金) 21:16:01.37ID:o+3mnUPM
馬鹿は想像力が無いから、理論から計算できない上に、仮定も間違っているから
間違った条件で実験して間違った実験結果を出して、それを信じてしまう。
Stroustrup氏もその一部。
2022/12/09(金) 21:33:34.50ID:o+3mnUPM
>>959
そんな馬鹿でも実際にプログラムしてる人は自分の間違いに気付くが、
彼と彼の取り巻き達はベンチマーク以外のプログラムはしないので
一生気付かない。そして自分達は実験したから正しいんだと主張し
まくって、それを信じた人類は謝った認識を持って文明の発達が遅れる。
2022/12/09(金) 22:18:43.15ID:STy7gq1K
真面目に言うならStroustrupの指摘したリンクリストは、愚直で安直な1要素で次を示すようなデータ構造はバカのすることで間違いない。
というかStroustrupはプログラマのために教え諭してるのに対して、自分が攻撃されたと思い込み、稀なケースで「LinkedListがArrayListより速いことがある」なんていい年してイキっててもしょうもないだろう?
「非常に近いアドレス」とか自分で参照効率が悪いことを理解してるのに、何がしたいのかサッパリわからん。ぴろゆきみたいに見えない仮想的にロンパーしたいの?
https://www.youtube.com/watch?v=YQs6IC-vgmo

ま、今ではUnrolled Linked listとか普通の配列やB-Treeなどと区別がつかない参照の局所性が大幅に向上しているものもあるから
そんなことで騒ぐのはもはやジジイの域だなあ、10年前の出来事じゃん・・・・
2022/12/09(金) 22:39:25.91ID:rOm/uTcN
ジジイと言うかその人は
1) 頭が悪くて
2) 経験もなくて
3) その自覚が無い
というかわいそうな存在だからあんま刺激しちゃダメ
こうなってくるとこの手のひとは
あとは粘着するだけのマシンと化すから要注意だぞみんな
2022/12/10(土) 00:05:08.23ID:s9w4cjy9
自己完結は悪と思ってるから他者に粘着するんでしょ
2022/12/10(土) 01:32:53.73ID:ExYz252Q
コンピュータサイエンスやプログラミング関連の学者は、アホばっかだからな。
2022/12/10(土) 01:33:28.16ID:CrLmIOQg
Rustではポインタの代わりに要素のインデックスで管理するのが基本であり安全
リストもツリーもグラフもこれで実装可能
これはポインタがない言語では当たり前のように使われていた方式
これまでが間違ってた
ポインタなどというものは数百万行とかあるプログラムで正しく使うのは無理
世界中のエンジニアがそのために苦労している
ポインタとNULLは完全に失敗
2022/12/10(土) 01:36:13.33ID:CrLmIOQg
ちなみにインデックス管理がゴミだったのはCみたいに配列の要素チェックがなく
生アドレスを直接触れる仕様だったせい
本来この仕様があり得ない
これならポインタの方がマシだし楽だからという理由でポインタが乱用されてきた
2022/12/10(土) 01:42:29.86ID:ExYz252Q
>>961
その動画のジジイはまさに馬鹿。
老害。
2022/12/10(土) 01:44:30.98ID:ExYz252Q
アメリカのコンピュータ学者は馬鹿。
自ら馬鹿な方法ばかり想定しているから遅いと思い込んでいる。
それを鵜呑みにしてる学生は大ばか者。
2022/12/10(土) 01:46:18.37ID:ExYz252Q
だからアメリカ人の作るソフトは遅い上にサイズも大きいんだな。
日本人の作るソフトはコードも小さいし、データも小さいし、速度も速い。
全然違う。
なぜなら、アメリカ人がイマジネーションが足りなくて馬鹿なのに自覚が無いから。
なのに、詐欺的手法によってアメリカ製ソフトを蔓延させた。
2022/12/10(土) 01:47:54.33ID:48CeiLls
ポインタてのは、CPUの汎用レジスタの
アドレッシングモードを考慮して
OSをコーディングしやすくする仕組みだから
2022/12/10(土) 01:51:53.77ID:ExYz252Q
>>967
おっと、こいつが、Stroustrup氏だったのか。
どうりでデタラメな事言ってると思った。まさに、彼が自書で言ってる通りの内容。
この人は計算量などを考えるイマジネーションが不足している。
2022/12/10(土) 02:00:02.88ID:ExYz252Q
仮に、彼の間違った仮定であるところの、リンクリストのノードのアドレスが
ランダムに近い状態だったとして(それ自体がウソの仮定なのだが)も、
キャッシュペナルティーは、一回当り20クロックほどだ。
だから、この場合、次のノードに移るのに20クロック掛かることになる。
しかし、それでも、ノード数がNの場合に、20*N クロックほどで済むから
そんなに致命的ではない。Nを100倍しても、100倍の時間がかかるだけで、
大した増加ではない。
一方、std::vectorの場合、挿入や削除一回当り、O(N)の時間が掛かるから、
N回それを繰り返すと、O(N^2)の時間が掛かる。
これは致命的で、Nを100倍すると、1万倍の時間になってしまう。
Stroustrup氏は、オーダーの考え方が経験的に身についてない。
2022/12/10(土) 02:06:32.68ID:ExYz252Q
>>972
[補足]
CPUの速度はこの30年間で、1コアあたりに限定しても300倍以上になっている。
良いアルゴリズムを使えば、扱うデータも300倍に増やすことが出来る。
ところが、std::vetcorを使った挿入や削除を行なっていた場合、300*300=9万倍
にクロック数が増えるから、CPUの速度がせっかく300倍になっても、300倍の
時間が掛かることになる。
一方、std::listを使った挿入や削除を行なっていた場合には、クロック数が
300倍で済むから、CPUが300倍になったことにより、時間は昔のままで済む。
つまり、std::listの場合、CPUの速度が300倍になった現在、
データを300倍に増やしても、挿入や削除が昔と同じ時間で済むのに対し、
std::vectorは、同じことをするとなんと昔の300倍の時間が掛かるということだ。

こういう基本をstroustrup氏は理解出来て無い。
探索の時間は関係無い。探索しなければいいのだから。
2022/12/10(土) 02:29:35.43ID:ExYz252Q
>>961
>稀なケースで「LinkedListがArrayListより速いことがある」なんていい年してイキっててもしょうもないだろう?
稀ではない。
今はCPUが速くなりすぎて実感がわかないだけ。
だから、遅いCPUでトレーニングした方が良いと言われている。
2022/12/10(土) 03:06:45.22ID:EiHCMpy7
プロファイルでは粘着というより、論破された時の憂さ晴らし自演が延々と続くパターン
ID:Lb4jZ7zf = ID:pMPEGjtK = ID:3DNXTGzR = ID:ExYz252Q +α
今回は ID:Mw8qZqut だな
2022/12/10(土) 08:26:05.03ID:wI0qdr5j
CPUが早くなったんだからRustで多少遅くなっても大丈夫
2022/12/10(土) 08:49:37.65ID:pTzP7Jq7
Goも大丈夫
2022/12/10(土) 08:52:02.51ID:QB2FhiiS
>>975
ID:Mw8qZqut だけどこの人と同一人物判定されるのは不名誉すぎるからやめてくれ
2022/12/10(土) 08:54:11.81ID:5JJKT/6S
>>978
そうかな?流れ的には水増し論に決着して放り投げてるよ
980962
垢版 |
2022/12/10(土) 09:12:41.82ID:pmPytGrf
誤解は避けたいからいちおう書いとく

> ジジイと言うかその人は

これはもちろん連投してる哀れなID:ExYz252Qのことね
C++やハゲに文句言うとか身の程知らずもいいとこやわ
2022/12/10(土) 09:19:33.69ID:5JJKT/6S
>>980
その人C++スレの自称天才でRustに傾倒していてChatGPT並みに尤もらしい適当をこいている人
2022/12/10(土) 09:22:07.09ID:5JJKT/6S
その人自演が大好きなので ID:Mw8qZqut だとしてもおかしくない
2022/12/10(土) 09:25:57.47ID:5JJKT/6S
流れ的には水増しの話が再開するはずなので、ID:Mw8qZqut = >>978がどう反応するか楽しみ
2022/12/10(土) 09:30:48.75ID:pmPytGrf
>>981
C++スレも荒らされてるのか
自称天才の粘着力すげえな
2022/12/10(土) 11:09:35.00ID:/zXB1Eur
C++ vs Rust Part4建てとく?
2022/12/10(土) 12:35:14.53ID:QB2FhiiS
>>983
Androidのソースコード量については、
* コンパイラはカウントされていない
* 外部の依存関係はカウントされているぽい
ということで、事実関係についてはだいたい確定したのでは
2022/12/10(土) 13:03:40.38ID:f/x7hc9i
>>986
横からですが、その回答だと、適切かどうかに関して、はぐらかそうとしているだけでは?
論理的に考えてC++でboostを使ってhello_asioとか書いたら、
そのレポジトリの行数にboostのソースもカウントするのが適切かどうかと照らし合わせて考えて見ては?
2022/12/10(土) 13:23:37.96ID:s9w4cjy9
行数の正確さを保証しているのは行数をカウントするアルゴリズムの質だよ
だから、質を保証するために量を根拠にするのはもう違和感しかない
989デフォルトの名無しさん
垢版 |
2022/12/10(土) 14:01:34.35ID:aynhf3Gg
>>987
目的次第やろ

使ってるライブラリも含めてそのプログラムに含まれる脆弱性をカウントする際の分母として使いたいならboostのコードをカウントするのも一つの考え方

Googleが実際にどうカウントしたかは知らんけどRustとC++を異なる条件でカウントしてるんじゃなければここで何言っても無駄だよ
2022/12/10(土) 14:17:34.56ID:CrLmIOQg
糖質にかまうな
2022/12/10(土) 14:23:19.49ID:++bfMBzJ
盲目的に現状肯定する集団には見られたくないから言うけど
個人的には誤認する人が多発するから不適切だと思うよ

>目的次第
何の目的があって依存関係のソースもカンウトするのか、AndroidのRustチームの考えを知りたい

>>989
Androidがboost依存があって、boostソースがカウントされていない場合はどうなるの?
RustとC++を異なる条件でカウントしてる、に該当するよね

>>989がいう事が正しければ、新規ネイティブコード21%の下りでも依存関係ソースの増減も含めるのが同条件なんだよね?
2022/12/10(土) 14:29:10.10ID:++bfMBzJ
>>990
その発言で ID:CrLmIOQg の内容全部が地に落ちたよ
2022/12/10(土) 15:17:06.99ID:hJa6mCIB
>>991
仮に○○なら対等な条件の比較ではないという主張は真だと思うけど、
そもそもRustとC++が異なる条件で比較されてると考える根拠はなんかあるの?
2022/12/10(土) 16:30:04.48ID:/zXB1Eur
行数をカウントする目的:
利用状況の度合いをバカにも分かる数字で説明するため

依存関係を含めるのが適切か?:
数字を出すのが目的なのでどちらでもよい
995デフォルトの名無しさん
垢版 |
2022/12/10(土) 17:08:17.02ID:+r0o6+3M
>>991
>何の目的があって依存関係のソースもカンウトするのか、AndroidのRustチームの考えを知りたい

Rustチームとかじゃなくセキュリティ監査をするチームが計測してるんだぞ
本当に計測方法の詳細や理由が知りたいなら記事書いた本人にTwitterとかで聞けばいいよ
この辺のエンジニアは普通に答えてくれるぞ
2022/12/10(土) 17:13:44.96ID:bYLLjzjY
>>980
>C++やハゲに文句言うとか身の程知らずもいいとこやわ
分かってはいたが、この板はレベル低いな。
2022/12/10(土) 17:50:19.42ID:8gOJz6B3
次スレは平和になりますように
2022/12/10(土) 17:51:40.13ID:s9w4cjy9
死者の数をカウントしてみろ、平和だぞ
2022/12/10(土) 21:25:51.87ID:AuQEELto
Androidドメインに限定したコードの量を測るよりも、Androidに搭載されうるコードの量を測る方が適切だと思うから外部ライブラリ含んでいいんじゃね。
2022/12/10(土) 22:05:26.23ID:s9w4cjy9
C,C++,Rustの三者は対等として、
C/C++とかいう概念はRustと対等か?
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 23時間 22分 13秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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