1 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 18:28:20.99 ID:cuIcFT6k.net] 公式 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/ ※C++との比較は専用スレへ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ ※次スレは原則>>980 が立てること 前スレ Rust part14 https://mevius.5ch.net/test/read.cgi/tech/1644596656/
449 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 13:47:22.44 ID:DNUj2Sn5.net] 汚コード公式汚コードですわ~!
450 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 13:57:36.96 ID:nieqt9o7.net] >>434 公式exampleと同じなのでもちろん汚コードではない もし何か問題がある場合は必ず誰かが代わりのコードを示すので大丈夫 汚コード連呼を相手にする必要なし
451 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 14:11:57.60 ID:QZjOvH6O.net] こんなスレに質問しに来る初学者なんてものは最初から存在しないんだろうな
452 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 14:23:56.41 ID:ThNWOKir.net] ん? 「初心者だからわからん」というのが汚コーダーの自演だろってこと?
453 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 14:34:25.51 ID:QAuL8N6o.net] そうだよ
454 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 14:39:18.00 ID:xn39310Q.net] 複クンはね みんなに見てもらいたいんよ つきあってあげてよ
455 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 15:03:39.84 ID:Skn9YyLT.net] なるほど言われてみればそうかも 流れ的に>>208 なんかも怪しいな 気をつけよう
456 名前:434 mailto:sage [2022/06/04(土) 15:21:18.99 ID:kJkfvymC.net] 自演臭くなるからアレなんだけど 暇潰しに公式ドキュメントと照らし合わせて疑問に思ったから書き込んだだけで ただの通りすがりだからね
457 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 15:39:42.64 ID:nieqt9o7.net] >>449 あれは何もかも自演に見えてくる病気な人による連投だから気にする必要なし 何でもかんでも自演だ!汚コードだ!と言うダメな人
458 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 16:10:13.56 ID:VXQtFnUU.net] 書いてあるコードよりましなコードを出せずに汚コードって呟くしかない可哀想な人は暖かくスルーしてやってくださいな
459 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 16:13:38.80 ID:jusi9BoA.net] >>448 汚いというならオマエのコードを出せとイキってたのに 実際にコードが出てきてダンマリ決め込んだタイミング・・・ ありえそう 変な初心者が来たなとは思ってたが・・・
460 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 16:30:17.39 ID:43LVHAPc.net] 汚コードを連呼してる人が初めて出したコードがこれ。>>202 しかしアルゴリズムに問題があってフルボッコにされて撃沈。 汚コードを連呼の人が普段コードを示せない理由が判明してしまった事件。
461 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 21:35:57.57 ID:Tzl373uA.net] うわーこれ確定じゃん 複くんRustなんかやめてネトサポやれば?
462 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 23:04:11.48 ID:FBgyqIef.net] >フルボッコにされて撃沈。 主砲「Copyはディープで高コストだから避けるべき」発射! ==> ドッカーンwww撃沈www
463 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 23:12:57.28 ID:DCKDFwmc.net] 真面目に書いとくとusizeみたいな数値プリミティブの場合はCopy前提で全く問題ないよ 気になる人はベンチにかけてね
464 名前:デフォルトの名無しさん [2022/06/04(土) 23:38:03.39 ID:UrkwxQuP.net] >>456 一般的にはその通り しかし今回はusizeだとすぐ溢れるからBigUintなどを見越してのコードの話 >>202 への批評内容はいずれもusizeでしか通用しないアルゴリズムをわざわざ採用したという点 一方で>>202 が汚コードとみなした元のコードはusizeでもBigUintでもちゃんと動作するアルゴリズムになっていた
465 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 23:52:08.43 ID:W82CC99g.net] 汚コード連呼厨は信頼できない 代わりのコードをいつも出せない 珍しく出してきたら元より劣化してた
466 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 23:57:58.57 ID:SnRPHFsS.net] 最初のコードでだいたいあってるんですよ それを君がずっと引っ掻き回してるだけ 最初からあるんだからわざわざ出す必要もない >>427 で終わってた話を>>428 で誰も求めてないfindで書き直したり
467 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 00:16:50.25 ID:Y4E70HYz.net] 毎週This Week in Rustのリンクでも貼ればこのくだらない流れは終わるのだろうか
468 名前:デフォルトの名無しさん [2022/06/05(日) 00:46:34.90 ID:9LpkJgbZ.net] ところでスライスへのfindメソッドなどの後付けはRustのorphan ruleを犯さずに可能なの?
469 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 04:00:56.97 ID:4HXc2Nfq.net] trait定義すればできる
470 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 09:25:11.96 ID:Zl7Pb69A.net] > 誰も求めてないfindで書き直したり そもそも、誰ももとめてない 「ぼくのかんがえたさいきょうふぃぼなっちいてれーた」 をどんだけ貼り付けたんだろうな彼はw 誰も求めてないものを必死でシコってるからうんざりなんよ
471 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 10:25:57.06 ID:yQi6baxx.net] 複クンはなぜ汚いと言われるのか理解しないね 言語やライブラリの制約で避けられないような汚なさならここまで言われない
472 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 10:34:37.11 ID:g2kCstof.net] シンプルに意図が伝わりやすい書き方が他にあっても ぼくのかんがえたさいきょうのシコシココードを我慢出来ずに開陳しちゃうからここが汚部屋になる
473 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 10:48:55.83 ID:REWyb6H9.net] findバージョンで答えようとしたところで >>427 のレスがあったから「findでも行ける」に方向転換したんじゃね? 幼稚園児と同じでママン達に誉めて欲しかったのに 汚いと一蹴されて涙目
474 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 10:54:21.85 ID:ULNisafI.net] >>460 ブログへのリンクやアップデートはややマンネリ気味だけど 今週のcrateはいつもチェックしてる
475 名前:デフォルトの名無しさん [2022/06/05(日) 14:57:13.62 ID:1ZIcYX0i.net] >>467 そういう話をしたいのにRustと関係ない話や批判で荒らす連中がうざい Rustの話ならば最新動向から初心者の質問まで何でも歓迎 しかし他人叩きしている連中は邪魔
476 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 17:36:49.26 ID:kdHlti+w.net] 可読性や汎用性を犠牲にしてもfindがpositionより優位に速いとか ユースケース次第ではデメリットを補うだけのメリットがあるなら多少汚くても受け入れられる フィボナッチの>>202 と比較対象の>>181 や>>189 も同様
477 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 17:53:32.33 ID:uQ7Of1B3.net] 速度はベンチを取ってから ユースケースは具体的に示してから そういうことを主張してください そして本当に互いのやり方にメリデメがあると認めているのなら、>>295 のような他人叩きはやめましょうね
478 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 18:25:46.65 ID:Zl7Pb69A.net] まーたふぃぼなっち言ってるw バカのひとつ覚えすなあw
479 名前:デフォルトの名無しさん [2022/06/05(日) 18:50:30.04 ID:1ZIcYX0i.net] >>470 その>>295 は他人叩きではないだろう そのアルゴリズムではBigIntで無駄なコピーが発生するというRustで気をつけるべき技術的な問題の指摘にみえる そして回避コードもきちんと示しているのでそういう書き込みは歓迎
480 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 21:53:01.43 ID:ZauVJiyh.net] >>470 何のメリットもなく汚くしてるだけだから受け入れられないという話だったんだが
481 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 22:11:06.61 ID:ZR9IOkh3.net] ジェネリックのフィボナッチや ジェネリックのカウントアップみたいな 架空のユースケース
482 名前:フ話題はもういいよ [] [ここ壊れてます]
483 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 22:14:01.51 ID:uQ7Of1B3.net] https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=41e1df59aeafe6f45fccaa192941d6d1 iter1とiter2は>>295 からの引用 Ryzen 7 3700Xで計測 ジェネリクスへのこだわりを捨てればこのくらいは速くできるよ fib_iter1 time: [7.2754 ms 7.2824 ms 7.2907 ms] Found 2 outliers among 100 measurements (2.00%) 1 (1.00%) high mild 1 (1.00%) high severe fib_iter2 time: [7.8536 ms 7.8678 ms 7.8818 ms] fib_biguint time: [4.9757 ms 4.9784 ms 4.9812 ms] Found 5 outliers among 100 measurements (5.00%) 5 (5.00%) high mild Playgroundでもベンチマークできればいいのになあ
484 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 22:14:34.17 ID:IymwRCap.net] 「RustとC++を学ぼうと思ってるプログラミング初心者です。」(架空)
485 名前:デフォルトの名無しさん [2022/06/05(日) 22:24:27.68 ID:+fEwSMrP.net] どの場でも同じだが 「技術的な話題と技術的な指摘」 「他者の話題と他者への攻撃」 この違いがわからず後者を行なうダメ人間のせいで場が荒れる
486 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 22:25:12.37 ID:xgxgbUCt.net] >>475 それは流石に比べる対象が違うんじゃ? ノンジェネリック版もイテレータを返すか ジェネリック版をフィボナッチ数を直接返すようにして比べないと
487 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 22:36:45.16 ID:4HXc2Nfq.net] >>475 playgroundみたいな環境でベンチマークやれたとしても結果が安定しないのでは
488 名前:デフォルトの名無しさん [2022/06/05(日) 22:40:18.97 ID:+fEwSMrP.net] >>475 純粋にジェネリックか否かの比較をしたいならばadd_assignとaddの違いなども含めて条件を全て揃えたほうがよい 元がiter::successorsを使っているならば非ジェネリック版も同じくそれで揃えてみてはどうか
489 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 23:17:38.06 ID:uQ7Of1B3.net] >>478 >>480 https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=4f477ec7bc08ea9f61f565c00beb0d19 ジェネリックなほうをできる限り揃えたけどこれでいいかい? CheckedAddでadd_assignする方法だけ無さそうだったからアレになってるけど fib_generic time: [7.4054 ms 7.4164 ms 7.4275 ms] Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) high mild fib_biguint time: [4.9527 ms 4.9591 ms 4.9655 ms]
490 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 23:34:45.61 ID:MGWqyCtZ.net] >>477 > 後者を行なうダメ人間 そういうのは一定数いるからスルーしてくださいな...
491 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 00:32:35 ID:m7d3UK5s.net] イテレータで計測してみたけど >>295 のoption::takeだとcloneしても速度変わらないな https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=283e5cd13159cab00fcc68d56952df01
492 名前:デフォルトの名無しさん [2022/06/06(月) 02:33:06.91 ID:ETmHHhEk.net] >>483 そういう比較はそれ以外の部分のコードを揃えないと何が要因なのか判断できないよ
493 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 03:21:12.98 ID:CfMv9iPR.net] Rustってフィボナッチ専用言語みたいだな
494 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 12:48:39.09 ID:fwdLGVHm.net] >>481 addがchecked_addになることで最適化が妨げられてるみたい 結局複オジが言ってたことは全部間違いだった
495 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 14:47:49.79 ID:bWO8YoN9.net] premature optimizationとpremature abstructionの典型例 ・具体的なユースケースを想定しない ・トレードオフを考えない ・誰も求めてない抽象化 ・計測を伴わない思い込み最適化 コードの汚さと悉く間違った主張の根っこは同じ
496 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 15:32:14.02 ID:eTH/ySe7.net] 複オジのおかげでいろんな教訓が再認識できて良かったね 反面教師の鑑 めでたしめでたし
497 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 15:53:42.58 ID:c+f9iTO8.net] >>487 なるほど 「早すぎる抽象化 × 早すぎる最適化 => 汚コード」ってことか これは身に覚えがありまくる
498 名前:481 mailto:sage [2022/06/06(月) 16:16:13.39 ID:lWIakgkT.net] >>486 正確に言えば 問題はCheckedAdd::checked_add()はselfもotherも参照で取るから、BigUintだと内部で1回clone()されてしまうということなのよね 一方でadd_assignは(桁があふれない限り)in-placeにやるから、その分のコストが発生しない だから(compiler optimizationという意味での)最適化以前の問題だよ https://mevius.5ch.net/test/read.cgi/tech/1509028624/153 ↑のコードも参考にどうぞ C++で二項演算子をオーバーロードするときのイディオムです これを思い出しながら書きました
499 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 16:52:12.73 ID:yU0i67fk.net] >>490 ソース見るところ勘違いしてた 確かにaddでも&self使えばclone入るからchecked_add並みに遅くなった checked_addにownedのselfを取るバージョンが追加されれば改善するだろうけど trait定義からして対応するつもりのないユースケースかもね
500 名前:デフォルトの名無しさん [2022/06/06(月) 16:57:14 ID:+9236oDl.net] >>491 CheckedAddAssignを導入すれば全て解決しそうだな
501 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 17:23:25 ID:V1HrdzSd.net] 必要ならextension traitを書けばいい そこまでしてジェネリックにする価値があるとは思えないけど
502 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 18:19:44.52 ID:fWB2qr5d.net] リーナスさんから受けたパニックのありがたい指摘って結局どうなったん?
503 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 20:58:23.31 ID:gJyU9Hxy.net] 放置されてんじゃないの? コンパイラがパニック起こさないように変えられたって聞かないし
504 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:04:20.00 ID:fWB2qr5d.net] パニックにならないオプションくらい作ってもいい気もするけどね
505 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:29:53.43 ID:qARo1+y7.net] パニック自体はもう1年前くらいに修正済み 今はv7 patchまで来ていて大きな懸念も出ていないから そろそろマージされてもおかしくはない
506 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:51:13.91 ID:gJyU9Hxy.net] リーナスレベルに行く前に誰も問題視してなくて指摘もされてないんだろうか みんなガバガバなんだな panic前提のコーディング
507 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 22:44:51.98 ID:Yvz8OCum.net] try_reserveはstabilizeされてるよ
508 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 23:01:32.72 ID:aWO23bGN.net] >>498 リーナスが最終承認だけするイメージなんかな? LKML読めば分かるけど、普通にパッチ投げるたびに突っ込んでくるよ
509 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 23:06:15.51 ID:2Zdu7NAR.net] ジェネリックフィボナッチと同程度にどうでもいい
510 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 23:15:40.43 ID:HuPaBwwV.net] >>481 1.5倍も差があるのは妙だな Rustでは最適化されるのでジェネリックで書こうがそんな差は出ないはず そのベンチマークの仕方がおかしい可能性があるので ジェネリックか否か、check_addか+か、Option利用か否か、など5つのコードで順に調べてみた ベンチマーク使用コード https://gist.github.com/rust-play/18d303c3ec79c19c4285ed190e5b2562 (1) ジェネリック + checked_add + Option + successors 版: 元の>>295 と完全に同じコード (2) BigUint + checked_add + Option + successors 版: (1)のTをBigUintへ (3) BigUint + add + Option + successors 版: (2)のchecked_addを'+'へ (4) BigUint + add + Option削除 + successors 版: (3)の変数Optionを削除 (5) BigUint + add + Option削除 + from_fn 版: (4)のsuccessorsをfrom_fnへ 結果 test bench_1 ... bench: 619,527 ns/iter (+/- 18,257) test bench_2 ... bench: 620,293 ns/iter (+/- 23,787) test bench_3 ... bench: 624,149 ns/iter (+/- 24,388) test bench_4 ... bench: 626,810 ns/iter (+/- 20,343) test bench_5 ... bench: 619,675 ns/iter (+/- 30,977) 結論 いずれも誤差の範囲でほぼ同一結果 Rustではジェネリックで書いても最適化される BigUintでchecked_addやその結果のOptionを使っても最適化される したがってi8からBigUintまで任意に動作する>>295 のジェネリックコードで問題なし、となる
511 名前:デフォルトの名無しさん [2022/06/06(月) 23:58:37.28 ID:hMQAMrNY.net] >>502 Rust凄いな ジェネリックもOptionも何でも最適化してくれるとは改めてRustの素晴らしさを実感
512 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 00:13:51.07 ID:GvuMwmTL.net] >>502 そのやり方で差が出ないのはchecked_addと同じようにcloneが発生するタイプのaddが使われてるからだよ ジェネリックにしても差が出ない場合もあれば差が出る場合もあるということ
513 名前:デフォルトの名無しさん [2022/06/07(火) 00:16:51.98 ID:y2mAB4fu.net] >>502 やはり同じになったか 既に>>478 が指摘しているように元のコードとイテレータ同士で比較ベンチを取ろうとしないから>>475 を怪しいと思ってた ちゃんと比較ベンチすれば最適化されて同じ速さになることを知っての狼藉だったりして
514 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 00:17:18.96 ID:YQOkxy3N.net] https://gist.github.com/rust-play/8caca28378745b36aaba5358d2a54fe8 test bench_1 ... bench: 426,714 ns/iter (+/- 5,563) test bench_fast ... bench: 201,510 ns/iter (+/- 2,926) Criterion の使い方が分からなかったのかな
515 名前:デフォルトの名無しさん [2022/06/07(火) 00:19:44.22 ID:y2mAB4fu.net] >>504 どういうこと? 具体的に>>502 の各コードよりも速いコードを書けるってこと? そのコードを示せない限り>>502 のベンチ結果を覆せない
516 名前:デフォルトの名無しさん [2022/06/07(火) 00:35:03.04 ID:z0w37Unr.net] >>506 君は全く別の問題にすり替えて誤魔化している >>502 のようにイテレーター同士でベンチマークをとるべき
517 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 00:38:00.86 ID:wvlfxzyf.net] まーたすがすがしいまでの自演だなぁ
518 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 00:39:26.17 ID:r6MnfEMB.net] >>507 >>504 の指摘の何が分からないの?
519 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 01:10:53.92 ID:YQOkxy3N.net] https://gist.github.com/rust-play/bde9b95f9bfe4de77fad841db30222c7 test bench_1 ... bench: 420,671 ns/iter (+/- 53,102) test bench_fast ... bench: 219,091 ns/iter (+/- 1,147) こんな汚ないことしてまでイテレータになんかしたくないんだけど どうせ次の文句も大体予想付くし
520 名前:デフォルトの名無しさん [2022/06/07(火) 01:35:52.48 ID:gaZATsj9.net] この件はRustにとって重要なことだから口を挟むが、 Rustではジェネリックで書いてもmonomorphizationによって各型で書いた時と同じコードになる。 だから標準ライブラリの大半はジェネリックに書かれている。 そしてSomeなどのOptionは最適化できる時は綺麗に消えるため、 BigIntのchecked_addのように常にSomeを返す時も最適化でOptionは消えると考えられる。 いずれも抽象的に書けるのに動かすとC並に速いというRustの長所である。 つまり、>>502 の結果が出たことはそれらが実証付けられたことになる。 しかし、以前からジェネリックは無駄とか遅いとかRustの長所に反する主張をする人がいるので気になっていた。 今回もRustのジェネリックは遅いと主張するために、 >>506 のように、完全に異なるもの同士を比較したり、 >>511 のように、Rcを返すという別仕様のものにしてまで、ジェネリックは遅いと主張し出した。 反Rustか反ジェネリックの立場なのかもしれないが、そういう捏造や詐欺のようなことはよくない。
521 名前:デフォルトの名無しさん [2022/06/07(火) 01:49:10.77 ID:eprvoL3W.net] >>512 同意
522 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 03:36:34.68 ID:hBVbMSyF.net] >>512 ジェネリクスが無駄だの遅いだのはコード生
523 名前:ャの話ではなくてコードのメンテナンスコスト含めた全体の話では 例えば今回ジェネリックなコードで無駄なcloneを避けるためには CheckedAddAssign といった trait を用意し、各整数型に実装するという余計な手間が発生する また、各整数に追加のtraitを実装したとしても固定長の整数型ではすぐに桁あふれしてしまうから、実質BigUintの実装しか意味がないものになる だったら最初からジェネリックにせずBigUintで実装するか、BigUintやBigIntといった桁あふれしない型だけを対象にすればよい ジェネリクスの良さを語りたいならもっと良い例があるんじゃないの [] [ここ壊れてます]
524 名前:デフォルトの名無しさん [2022/06/07(火) 07:03:55.78 ID:/+rlx4fZ.net] >>511 そのコードはイテレータ内部で無理にunwrapしているためこれだけでpanicしてしまう let mut iter = fibonacci_biguint_iter(); let first = iter.next(); let second = iter.next(); 実行結果 thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/main.rs:23:30 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace これでは反証コードになっていないので ちゃんとimpl Iterator<Item = BigUint>を返すコードを書いたほうがいい >>514 その無駄なcloneとは何? ベンチ>>502 のジェネリックコードを含めた5つのコードを見てみたが無駄なcloneは見当たらなかった それらよりもベンチで速いコードが出てこない現状をみると無駄は無いのではないか あと、BigUintを使うまでもない需要も多いのだからジェネリックに書かれたコード一つで十分と感じる
525 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 08:13:15.84 ID:AZaNrbV3.net] >>503 それはLLVMのおかげじゃない? 他言語でできないRustならではの優位点てあったっけ?
526 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 08:54:11.67 ID:99FzOzNU.net] Rustで抽象オブジェクト作るのってどうやんの?
527 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 08:59:47.84 ID:do0qCmU/.net] >>517 Box<dyn ...>のこと?
528 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 11:56:38.96 ID:99FzOzNU.net] >>518 C系だと構造体にtypeフィールド作って定数入れてその定数の値に応じて呼び出す関数変えるみたいなことやるんだけど インタプリタの動的オブジェクトみたいなもの Rustでもtypeフィールで条件分岐するのが普通?
529 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 12:28:57.89 ID:do0qCmU/.net] >>519 その用法ならたぶんenumですかね https://doc.rust-jp.rs/book-ja/ch06-01-defining-an-enum.html
530 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 12:30:31.93 ID:mvWCmBcR.net] ファントムなんとかを使うんじゃないのか?
531 名前:デフォルトの名無しさん [2022/06/07(火) 12:50:46.76 ID:1EDCqMQN.net] 抽象オブジェクトと検索して出てくる例みたいなのをRustでやるならこうだな enum Object { Integer(i32), Float(f32), 文字列(String), Null, } use Object::{Integer, Float, 文字列, Null}; impl Object { fn hello(&self) { match self { Integer(i) => println!("Hello, Intger {i} です"), Float(f) => println!("Hello, Float {f} です"), 文字列(s) => println!("こんにちは、文字列 {s} です"), Null => println!("Nullです"), } } } fn main() { let object_list = [Integer(12345), Float(67.89), 文字列("ABC".into()), Null]; for object in &object_list { object.hello(); } }
532 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 13:15:30.50 ID:1v+TnHgu.net] gccではなくg++とかだとフィボナッチ数列とかは演算しないように最適化される場合がある。 Rustのようにイグノーベルの遊びのコンピューターサイエンスのようなコードをこねくり回して気持ち悪く長くて自己満足オナニーコードになるぐらいだったら 部分的にmasmで書いたほうがマシ(速度的にも、メンテナンス性も) またRustはLLVMに執着しすぎてgccのような最適化はまだされてない、フィボナッチ数列とかのしょーもない一般的なアルゴリズムは CPUキャッシュに乗るのにマシンコードのセクションの結果が64kbに成らなかったり
533 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 13:48:18.23 ID:99FzOzNU.net] >>620-522 ありがとう
534 名前:デフォルトの名無しさん [2022/06/07(火) 14:15:55.18 ID:uuz77ncq.net] >>523 演算しないように最適化されるとか意味不明 演算はどこかで必ず発生する コンパイル時点で演算してしまう定数化のことならばRustでも当然できる const fn fibonacci(n: usize) -> usize { const fn f(n: usize, a: usize, b: usize) -> usize { match n { 0 => a, 1 => b, _ => f(n - 1, b, a + b), } } f(n, 0, 1) } const F77: usize = fibonacci(77);
535 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 15:36:32.04 ID:glYADNck.net] >>511 俺環の遅いマシンだと6倍近く速くなった この差なら用途によっては汚くする価値が十分あるね まあ実際のプログラムでBigUintのサイズまで一つ一つイテレータで返すような使い方をすることはまずないだろうけど
536 名前:デフォルトの名無しさん [2022/06/07(火) 15:42:23.15 ID:fRg0KLfu.net] >>511 コードが汚い上にget_mutが失敗してpanicする欠陥コードを恥ずかしげもなく披露できるもんだな
537 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 17:49:46.06 ID:jaUMaLrL.net] >>525 だからそう言ってる、そして機能紹介は知ってることを言わなくてよいよ?コンパイル時実行とは違う。gcc系は数学的に既に答えが出るようなアルゴリズムを書いた場合に演算しないで低い桁で答えを持つ場合がある。 意味が分からないんだったら日本語から勉強しなおせ。それと汚いものを張り付けるな
538 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 18:06:57.96 ID:WAenZnu4.net] >>523 定数たたみ込みのことかな 試した限りでは gcc でも clang でも rustc でも最適化されて fib 呼び出しは消えているよ どういうコードで問題おきるの? gcc: https://godbolt.org/z/nx3hnsxTT clang: https://godbolt.org/z/MYc7G9jeG rustc: https://godbolt.org/z/x18ob3MjP
539 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 18:10:22.54 ID:WAenZnu4.net] >>523 あとrustがllvmに執着しているというのも間違いで gccのcodegenを使えるようにするプロジェクトもあって活発に開発されてるよ https://github.com/rust-lang/rustc_codegen_gcc
540 名前:デフォルトの名無しさん [2022/06/07(火) 18:17:47.44 ID:1EdYDqGn.net] >>524 >>620 よろすく
541 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 20:22:53.88 ID:UaJ7fd+W.net] フィボナッチなんて普通に解析解あるんだからそれ使えばいいじゃん
542 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 20:28:59.38 ID:ZSCymycr.net] フィボナッチよりボイニッチを解読してくれ
543 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 23:19:58.58 ID:bfW1tdFv.net] ボイニッチはどうせ創作ノートでしかないし
544 名前:デフォルトの名無しさん [2022/06/07(火) 23:25:02.45 ID:lnwubCy8.net] >>532 フィボナッチは単なる題材に過ぎないことを理解できていないのはヤバいぞ 例えば>>529 の定数畳み込みや>>502 のジェネリックやOptionが最適化される話などが本題 単純だが単純過ぎない題材の例としてたまたまフィボナッチ数列が使われている
545 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 23:57:19.63 ID:YQOkxy3N.net] ワッチョイありスレに移住してここは複おじに明け渡してやったほうがいいのかもな
546 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 00:55:31.29 ID:QhxBwpDW.net] >>536 複おじの意味がいまだにわからないが ジェネリックよりも速いコードがあるならきちんと示そうぜ >>506 はイテレータと関数の異種比較のイカサマ >>511 はイテレータ同士の比較へ改善されたがイテレータの中のunwrapでpanicするマガイモノ そんなデタラメばかりしていたら信頼を失うぜ
547 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 01:35:00.04 ID:jyTDsLRS.net] >>537 >>481 は?
548 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 01:40:47.24 ID:C5b6ywPX.net] https://play.rust-lang.org/?version=nightly&mode=release&edition=2021&gist=5180fadf9fda409e0456042fc1bccd8e 遅くなるの分かりきってたから出し渋ったつもりだったけど普通に速かったわwwwメンゴメンゴ test bench_1 ... bench: 426,277 ns/iter (+/- 1,804) test bench_fast ... bench: 350,928 ns/iter (+/- 2,760) 一応criterion版も貼っとく >>502 で提起されたベンチマーク不適切説の真偽が気になるなら是非実行してみてくれ https://gist.github.com/rust-play/3bd45555b9e6faef2b1426712e4e7601
549 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 02:05:38.58 ID:jyTDsLRS.net] >>539 はin-placeなchecked_addを実現するtraitがないことで速度差大きくなってるものだよね ジェネリクスが遅いと言ったときに、 ジェネリクスの機構自体による速度差と、ジェネリクスにまつわるエコシステムによる速度差という二通りの解釈があると思うけど、 >>537 は前者のことを、>>539 は後者のことを言っていて議論がかみ合っていないのではないか ジェネリクスの機構だけの話をするなら前者の議論だけで良いけど、 メンテナンスコスト含めた実用性考えると後者の範囲も考える必要があるよね、 というのが>>514 で言いたかったこと
550 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 02:17:57.20 ID:aUi5KtMm.net] >>539 君のベンチはいつも何と何の違いを比較しようとしているのかよくわからない 一方で>>502 は何と何を比較するのかを明確にした上で各項目毎に段階を経て比較しているから 仮にベンチで違いがあればその要因が明確となり知見が得られる比較となっている 君の投稿からは結果に対して何が要因なのか知見が全く得られない
551 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 02:29:17.13 ID:aUi5KtMm.net] >>540 まず速度差がそのおっしゃっているchecked_addによるものなのかどうかを明確にしたほうが良いかと思う >>502 を見てみると(2)→(3)がchecked_addの有無になっているがベンチは同じ その結果からchecked_addは関係ないのではないか?
552 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 04:21:09 ID:uEpi8n1p.net] >>540 ジェネリックにやりたいならCheckedAddAssignを作ればいいんじゃん? Rcのもジェネリックにもできるわけだし
553 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 05:52:38 ID:78wIRTgY.net] >>540 そもそもコードが汚いという指摘が発端なので 前者が論点だと思ってる人はいないと思うよ
554 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 06:22:34.20 ID:2tL4qRNc.net] >>544 元と同一コードを含む5種類のベンチ>>502 のコードを見たけど 特に汚いコードは見当たらないんじゃない? もしあるならば具体的にどの部分なのかを言ったほうがいいと思うよ
555 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 08:45:07.60 ID:C5b6ywPX.net] >>541 「checked_addしてから代入」と「add_assign」の比較だよ で現状後者はジェネリックにやるために適切なtraitが無いから、 ジェネリックな関数では性能向上に限界があるよねって話 >>540 の言う通り、ジェネリック関数とmonomorphized関数をの性能を比較したいわけじゃないよ >>542 >>490 ,491でも出た通り、checked_addとadd(両辺とも参照の場合)はどっちもcloneが発生する だから(2)を(3)にしても、遅いchecked_addを遅いaddで置き換えただけなので性能向上は無い あとclone発生してるのはここね、docs.rsの[src]からたどれば&BigUint同士のaddがこのマクロで定義されているのが分かるはず https://docs.rs/num-bigint/latest/src/num_bigint/macros.rs.html#91-107
556 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 09:03:01.17 ID:C5b6ywPX.net] あんまり頑固になっても聞かなさそうなんでそろそろ妥協案でも どうしてもジェネリックでやりたかったら、num::PrimIntでも使ってればここまでの批判は無かったんじゃないですかね BigUint/BigIntは範囲から外れるけど、それはやっぱりそういうものなんですよ
557 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 09:13:21.45 ID:2tL4qRNc.net] >>546 あなたのコード>>539 もclone()しているから 1回あたりclone()が1回発生している点で同じではないかね そこは重要なところだから曖昧な推測で済ませずに細かい差異でベンチマークを取ったほうがいいのではないか
558 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 11:26:56.36 ID:oyhrGaRU.net] Rustが自由自在に書けるようなプログラマになりたがったンゴねえ ワイは低脳だから躓いてるンゴ 例えば&'static TとT: 'staticの違いがなんかあるらしいんやがわからなかったンゴ 前者はプログラム終了時まで生きる変数の参照って意味で後者はもしTに参照があったらそれは'static以上生きるって解釈であってるんか?
559 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 11:49:32.36 ID:oyhrGaRU.net] いや理解したんご 前者は参照型しか受け付けないけど後者はそれ以上の種類の型を受け付けるンゴねえ さらに違いがあるかもだけど勉強進めるわ なんでもなかった
560 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 12:37:42.94 ID:C5b6ywPX.net] >>548 そのベンチが>>539 のつもりなんだけど、これにどういう問題があって具体的には何をしろと? from_fn使ってる分(5)のほうが近いから比較対象を(1)から(5)に変えろってこと? というかそれが分かっているなら他人にやらせるんでなく自分で検証すればいいのでは?
561 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 14:46:42.18 ID:JNpA1ROM.net] >>551 結局、何が原因なん? ジェネリック?それともchecked_add?あるいは変数Some?まさかのswap? Rustスレとしてはコードよりも原因を知りたい
562 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 15:00:02.66 ID:0R8j40RZ.net] >>502 「1.5倍も差があるのは妙だな Rustでは最適化されるのでジェネリックで書こうがそんな差は出ないはず」 これがそもそもおかしい、最適化されようが何だろうが生成されるコードは違うのでMIRなりdisamなりでインストラクション単位で目視すれば一発だろ。ベンチを取る以前の思い込み低レベルな話 そしてほぼ最適化された無駄のないコードだったとしても >>523 ここ5年程度のCPUでは64バイトのDSB境界を持つ小さなループ呼び出しなどが単一のμopsキャッシュに収まる場合があるがコードの配置によって異なり1.5倍程度の差が出ても不思議じゃない。 言ってるのに全く聞かない
563 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 15:48:23.76 ID:kiLfNcoT.net] >>553 その件は1.5倍差あった>>481 がイテレータと関数を比較するという大チョンボをしていたことが原因と判明済 そしてジェネリックか否か自体では速度に差が出ないことを>>502 のベンチが証明済
564 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:10:39.22 ID:C5b6ywPX.net] >>554 よく見ろ、それは>>475 の話だ >>481 は両方とも(usize) -> BigUintな関数
565 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:16:08.77 ID:LlAtoLIj.net] これだけ時間をか
566 名前:けても原因すら分からずノンジェネリックとの速度差を埋められない状況をコストとして認識できてないのが恐ろしい [] [ここ壊れてます]
567 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:31:51.50 ID:H0oyRmek.net] 一般的に、数列を順に求めるイテレータと、 そのうちの特定の数だけを求める関数とでは、 オーダー問題もアルゴリズムも変わってくるため、 >>481 はまた別の問題となっている。 イテレータ同士の比較で1.5倍となっていないことからも、 異なる問題であると理解できるはず。 >>556 ジェネリックとノンジェネリックに速度差が無いことは、 >>502 で既に示されたのだから、 ジェネリックかどうかは一切関係ないと思う。 ジェネリックとは別の問題。
568 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 18:18:03.20 ID:cKPONsWM.net] >>557 >>502 はジェネリックでも実現できるコードをノンジェネリックにしただけ ノンジェネリックならadd_assign, mem::swap, cloneで>>502 のいずれよりも速いコードが書けるが ジェネリックだとchecked_addを使わざるを得ず同じことが実現できない
569 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 18:32:47.55 ID:y1p7Fxu2.net] >>537 では「ジェネリックよりも速いコードがあるならきちんと示そうぜ」と言っていて >>540 の言う違いを理解している感じだったのに いざ本当にコードが出てくるとジェネリクス自体のオーバーヘッドの話に限定して、差は無いと連呼 わざとやってんの?
570 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:11:11 ID:sj9oTS9C.net] >>558 > ジェネリックだとchecked_addを使わざるを得ず同じことが実現できない それは違うのではないか? ジェネリックでも自由にCheckedAddAssign等を定義して実現することが可能という話が既に出ている >>492 >>543 一方でノンジェネリックで書いてもオーバフロー対策としてchecked_addは使わざるを得ない つまりどちらが有利とか優れているとかいう問題ではない
571 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:45:52.60 ID:btlg3B6B.net] >>560 他人の意見を鵜呑みにしてないでやってみれば? 俺はちょっと試してみたけど結局無理だと確信したよ
572 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:54:30.37 ID:hF0KVPZD.net] CheckedAddAssignの定義難しいよね cloneを減らせるうまい定義見せて欲しい
573 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:58:01.42 ID:hF0KVPZD.net] >>560 > 一方でノンジェネリックで書いてもオーバフロー対策としてchecked_addは使わざるを得ない つまりどちらが有利とか優れているとかいう問題ではない BigUintの場合はオーバーフローを想定しなくて良いからただのAddAssignで良いよね ジェネリックな実装の場合は考慮すべき事項が増えるというハンデを抱えている
574 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 20:09:35.76 ID:Pauu0yN9.net] 基地同士の喧嘩おもすれー
575 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 21:16:33.76 ID:zfNTYu3X.net] ジェネリックでなくても各i8版~u128版でchecked_add要るんじゃね?
576 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 21:31:30.99 ID:uKz/tAPi.net] >>560 CheckedAddAssignはAddAssignと同じようには実現できないよ 速度差は他の方法で工夫すれば埋めることは不可能ではない
577 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 22:52:52.99 ID:C5b6ywPX.net] このままでは誰も気付かなさそうなのでここでネタばらし >>539 のcriterion版ですがこちらで動かすとこうなりました fibonacci_iter_1 time: [7.3605 ms 7.3655 ms 7.3711 ms] Found 9 outliers among 100 measurements (9.00%) 1 (1.00%) high mild 8 (8.00%) high severe fibonacci_biguint_iter time: [7.5944 ms 7.5967 ms 7.5992 ms] Found 2 outliers among 100 measurements (2.00%) 1 (1.00%) high mild 1 (1.00%) high severe 同程度に遅くなってしまいました 理由は>>548 の通り、せっかく減らしたcloneをイテレータ化するために戻さざるを得なかったからです 一見非ジェネリックのほうが速い結果が出たのは、criterion版がN=50000としていたのに対して、 test crate版は最初に貼られたN=10000から変えずにやっていたためでした criterion版をN=10000で、test crate版をN=50000で計測してみると大体同じような結果になりました N<2^15あたりまでは非ジェネリックのほうがちょっとだけ速いみたいですが、まあ誤差の範疇かと思います そういうわけで>>539 で非ジェネリックのほうが速いと主張したのは嘘です 本気で信じちゃった人はごめんね 最初はcriterionとtest crateの差だと早とちりしたため、ベンチマーク不適切説とか勿体ぶった書き方をしてました >>502 で根拠も無く疑いをかけたのに対するカウンターのつもりで黙ってたんですが、不発になっちゃいました まあでもtest crateってwarm upもしないしサンプル数固定だし、その結果ひどい場合だと>>511 なんか相対誤差10%超えてるし criterion使ったほうがいいよってのは大筋では間違ってないよね 最後に+=でイテレートするこれだけ貼っとくから 某おじはこれに相当する性能のジェネリックなイテレータが書けるまでそういったクソどうでもいい執着に人を付き合わせるんじゃないぞ https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=76cd0aad53f19888900a4b450fd078c5
578 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 23:10:54.19 ID:Pauu0yN9.net] Rust使うやつは全員クズ
579 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 23:14:19.56 ID:xZpQpCco.net] ゴミみてぇに使いにくい
580 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 23:33:46.23 ID:1Qgkgfnu.net] >>567 ジェネリックは遅くて使い物にならずRustはクソ言語のいい流れが出来ていたのに邪魔すんなボケ
581 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 00:05:50.09 ID:8AO4ag5u.net] >>567 それが本当にベンチマークしたかった内容なのかな? Nの変化による性能差の変化が重要 Rcでイテレータ返すやつと合わせて確認すればN=50000だと差がなくなる理由も分かる
582 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 01:08:31 ID:b8HehfnZ.net] >>567 裏切り者め 隠し通せよ
583 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 09:43:05.84 ID:m8hzuB37.net] >>567 結局ジェネリックに書いても非ジェネリックでも速さはほぼ同じなのかよ どんな方法で書いても結果を返すためにclone相当が最低1回は必要で >>502 のジェネリック版はclone相当がchecked_addでの1回のみだからこれ以上は速くできないってことか
584 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 11:12:09.28 ID:5tn+SNbG.net] 複オジ必死やなw
585 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 11:39:59.58 ID:gQa8Lild.net] iterなんだけど let v = vec![1, 2, 3, 4]; v.iter().filter(|&x| x % 2 == 0).cloned().collect(); v.iter().map(|&x| x * 2).collect(); filter()はcloned()が必要でなぜmap()は必要ないのか
586 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 11:41:07.83 ID:gQa8Lild.net] まちがえたこうだ let v = vec![1, 2, 3, 4]; let result_1 = v.iter().filter(|&x| x % 2 == 0).cloned().collect(); let result_2 = v.iter().map(|&x| x * 2).collect();
587 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 11:52:52.81 ID:WWB1ag70.net] >>573 IteratorのItem生成のためにcloneが必要という話なので 参照返すとかRc<RefCell>にするとかすればまだ改善する余地はありそうではある
588 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 14:32:02.03 ID:BXa7hn4f.net] 「Atom」の開発者が究極のコードエディターを目指す ~「Zed」の開発が始動 「Electron」を捨て、Rust言語を採用。GPUI、tree-sitterなどで武装し、超高速なコードエディターに https://forest.watch.impress.co.jp/docs/serial/yajiuma/1374986.html
589 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 14:58:44.89 ID:G7q6UoxI.net] 「重要」でスレ内検索かけると……
590 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 16:58:07.35 ID:/uOnDbzK.net] >>575 Vec<i32>のiter()は&i32のイテレータ filterした結果も&i32なのでVec<i32>でcollectしたければcopiedやclonedが必要 Vec<&i32>のままcollectするならclonedは不要 mapの例はx * 2でi32が新たに生成され map以降は&i32ではなくi32のイテレータになるので cloned無しでVec<i32>にcollectできる
591 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 17:07:43.03 ID:3qzGL8h6.net] >>577 Rc版はmake_mutにすれば呼び出し側が参照をつかんでる時だけcloneにフォールバックしてくれる つかんでなければcloneしないので高速 全ての値をつかむようならRcを使わないやり方より少し遅くなる
592 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 20:30:30.68 ID:sXhLSFat.net] >>355 はRustだと末尾呼び出しの最適化が効くの? 末尾呼び出し最適化必須のschemeですら自動的には最適化されず、人間が意味を解析して、アキュムレーター使って末尾再帰になるようにしましょうって練習問題になるくらいなのに。 Rust凄い!!
593 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 21:24:26.48 ID:xbJg8ij+.net] >>581 簡易的なstreaming iteratorにする方法もあるよ
594 名前:はちみつ餃子 mailto:sage [2022/06/09(木) 22:43:27.67 ID:k8dtcEck.net] >>582 どういう理解をしてるのかようわからんが、 >>355 はいわゆる末尾呼出しではないよ。
595 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 00:02:10.12 ID:/2sYVq21.net] https://twitter.com/Ray__March/status/1523717266730151936 Crab Rave (deleted an unsolicited ad)
596 名前:582 mailto:sage [2022/06/10(金) 12:26:19.22 ID:xMTaqdcz.net] >>584 340くらいから末尾呼び出し最適化の話題があって、355の2で「リリースモードだとスタックが溢れない」と書いてあったので、末尾呼び出し最適化が効いたのかと思いました。 十分なスタック容量があっただけ? 1+count(n-1) を count(n-1, acc+1) に書き換えてくれる最適化があるのかな、と思いまして
597 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 12:39:41.49 ID:awrGQFqA.net] >>586 生成されたバイナリを見た方が良いよ https://godbolt.org/z/Kcd6zf68e 定数たたみ込みでnopになってるっぽい
598 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 12:44:00.71 ID:NmVzwec3.net] >>583 ストリーミングイテレータを試してみたけどRc使ったほうが少し速かった ただ呼び出し側が参照をつかんだままにするとコンパイルエラーにしてくれるのでRcより望ましいケースが多々ありそう
599 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:14:03.27 ID:/2sYVq21.net] streaming iterator! そういうのもあるのか 自分への参照を返せるんだね 使うかどうかは分からんけど覚えておこう
600 名前:582 mailto:sage [2022/06/10(金) 17:55:03 ID:k70t2J8V.net] >>587 すまん
601 名前:はちみつ餃子 mailto:sage [2022/06/10(金) 20:18:18.95 ID:din4Kjb/.net] >>586 すでに >>587 が指摘しているが、定数畳み込みが起こっている。 入力が定数で、かつそれに対する演算が副作用のない基本的なものであった場合に定数畳み込みがされやすい。 定数ではない場合でもこの関数 count は mov rax, rdi ret になってて、入力をそのまま返す形にまで最適化されるので末尾呼出しがどうこうというレベルのものではなくなっている。 最適化というのは、レジスタ割り当てなどは理論的な背景がはっきりしているが、多くの細々としたものは「大量の置き換えパターンを辞書のように持っている」という物量で押し切る泥臭いものだったりするので (それをやりやすいようなデータ構造とかに工夫はあると思うが) 結局のところは投入されたリソースが多いやつが強い。 ちなみに Scheme の末尾呼出し最適化は言語仕様で要求する最低限度がそれだけ (しかし常にやらなければならない) という意味であって、それ以上の最適化をやっちゃ駄目という意味ではないよ。 最適化をどのレベルまでやるかは処理系次第。
602 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 20:27:25.22 ID:VliTcE7P.net] こいつが出てくると結論が1つも分からなくなる
603 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 21:05:43.32 ID:uz7MKgqc.net] 複オジと同じ臭い
604 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 21:45:41.77 ID:iyAWtrh4.net] 汚文章は汚コードの兄弟 同じ親から生まれてくるもの
605 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:32:01.13 ID:r0Sf5PMX.net] 最適化の話はかなりコンパイラーに詳しくないとなぜそうなるかって分からないだろうからな コンパイラーの最適化について話せる奴はプログラミング中級者以上だろ。 (本職プログラマなら話せないと知識なさすぎと言われるだろうが) 趣味でプの俺は永遠に初心者レベルでそんな知識ないから、こいつ何を言っているんだ?だが
606 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:32:11.19 ID:+N1EN6wu.net] まぁ要するに ×××という最適化処理が処理系の規格として定められているのなら処理系の開発者(=コンパイラとか作る人)はその最適化を実現しないといけないしそれを利用するプログラマは処理系が”上手いことやってくれる”と期待していい、しかしそれが言語規格上は必須とされてない処理については処理系が“うまいことやつてくれる”と基本は期待してはいけない けど、規格で求められてないような高度な最適化処理を“してはいけない”わけではない、最新の理論で見つかった最適化処理など取り入れる分には好きにして構わない という意味でしょ Haskellのメモ化処理とかでもよく出てくるよ GHCって言うすごい処理系があってHaskellの標準規格では全然定められてないような最適化処理をバンバンやってくれるから“なんでこんなにはやいの?とりま作っただけなのに”と思うこと時々あるからな
607 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:36:04.99 ID:3HE2W+m8.net] 最適化と言えば&mutがnoaliasになって高速化したコード出会ったことある人居る?
608 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:56:48.93 ID:/Qg1cUoJ.net] >>596 要するに~ 元の説明より長なっとるやないかーいww 脳みそ整理整頓してこんかーいww
609 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:03:01.48 ID:EifRM46R.net] >>595 初心者自演乙オジ
610 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:39:18 ID:QxuEFd4p.net] またいつもと同じパターン 善人 = 情報や説明やコード等を書いてくれる人 悪人 = 文句や批判だけの人 >>597 Rustでは基本的に二つの & mut がaliasになることはないからnoaliasでいいけど LLVMのバグが見つかったりやRustコンパイラの改修などで変遷を経てきてるみたいね > Rust 1.0 ~ 1.7 noalias enabled > Rust 1.8 ~ 1.27 noalias disabled > Rust 1.28 ~ 1.29 noalias enabled > Rust 1.30 ~ 1.54 noalias disabled > Rust 1.54 ~ noalias enabled
611 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:52:37.74 ID:q3uEdydr.net] 仕様ころころゴミ言語
612 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:57:33.08 ID:Vy8jfUtT.net] ソースこれですか https://stackoverflow.com/a/57259339
613 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:21:37.71 ID:nVHax23k.net] >>602 「rust add assign optimize site:stackoverflow.com」でトップヒットだったわw どおりでね
614 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:47:00.69 ID:41aFXNPT.net] >>601 Rustの仕様は変わっていない LLVMへの最適化指示のうちの一つをLLVMのバグ発見のため一時的にオフとしていただけ
615 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:53:30.81 ID:6T6IERuk.net] そんなつまんねーのに反応すんなよ……
616 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 01:51:51.23 ID:coFBEVyx.net] マッチポンピング好きだねぇ
617 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:14:20.05 ID:FpznSlgy.net] そろそろRust製の有名なソフトウェア作ってからビックマウスしてくださいね、Firefox以外で
618 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:39:14.69 ID:fd4RDbWP.net] >>606 マッチポンプも過疎スレのにぎわい
619 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:54:00.75 ID:sRR0HfwK.net] TechEmpower Round 18で1.5倍の差を付けて堂々の1位をかっさらったactixは有名ソフトウェアではない了解
620 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 15:51:26.10 ID:Lxou0O6d.net] DiscordとかDropboxとか
621 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:19:59.18 ID:C3/u0lQ5.net] WinとかLinuxの中身ですでに使われてなかった?
622 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 18:52:01.33 ID:BGPUwt90.net] >>593 同じ臭いも何も同一人物だろ
623 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 19:26:39.50 ID:WsHL0uxM.net] >>611 Linuxはまだ winは確実なソースあったっけ? OS系だとAndroidでは使われてる(まだデフォルトで有効ではないけど)
624 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 23:25:25.63 ID:HlAQKNMT.net] なんでRound18なんて大昔の過去を?
625 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 06:12:09.52 ID:6S+GFICB.net] >>612 どうでもいい >>613 同じくどうでもいい
626 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 17:11:51.09 ID:tUHADwRi.net] Rustはver2.0にはなりませんって言ってるけど実質はとっくの昔にver2.0になってる
627 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:14:45.66 ID:geXDvND7.net] >>616 どういうこと?
628 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:36:02.36 ID:nrxswUhC.net] >>562 >>566 CheckedAddAssignにこだわる必要はないため、発想を転換して、 checked_add()の原関数であるoverflowing_add()を用いることで、 overflowing_add_assign()を用意して同じようにbool値を返せば解決する 具体的には以下のように引数はadd_assign()と同じでbool値を返せばよい trait OverflowingAddAssign { fn overflowing_add_assign(&mut self, rhs: &Self) -> bool; } オーバーフローするi8型〜u128型にはoverflowing_add()があるため実装はこうなる let is_overflow; (*self, is_overflow) = self.overflowing_add(*rhs); is_overflow この3行のコードでちゃんと最適化されるかどうかを確認するため、 単純にadd_assignを用いた場合、すなわち「*self += rhs」と比較すると https://godbolt.org/z/WP3En8xM8 のアセンブリ出力となり、オーバーフローを返す以外は同一に最適化されることが確認できる 一方でオーバーフローしないBigUintなどの型への実装はこうなる *self += rhs; false つまりオーバーフローの結果として常にfalseを返すので、 こちらは使う側でオーバーフローの扱いが消えてadd_assign部分のみに最適化される したがってこのOverflowingAddAssignを用いてジェネリックに書けば、 どちらの型の場合であっても、非ジェネリックに書いた時と同一コードとなる
629 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:47:24.48 ID:nrxswUhC.net] >>577 一般的に参照返すイテレータ類を実装する場合の注意点として、 1. let x0 = x_iter.next(); 2. let x1 = x_iter.next(); 3. ここで x0 の指す値を使う 順にこのような使い方をした時の挙動として、以下4パターンが考えられる A. ✕ 実行時エラーとなる B. ✕ x0の指す値が変化してしまう (次のx1の指す値と同一になってしまう) C. ○ x0もx1もそれぞれ正しい値を指す D. ○ コンパイル時エラーとなる Rcとget_mut()を使った>>511 のコードがNGのパターンA.で、これを避けるために、 Rc<RefCell>を使う提案のようだが、それもNGのパターンB.となってしまう Rcとmake_mut()を使えばパターンC.となり、これがRc利用の場合の解となる しかし参照を返すイテレータ自身がmake_mut()でclone()するのは役割として過剰である 切り分けとしてはイテレータを使う側が必要に応じてclone()するのが望ましい そういうコードへ適切に誘導できる道が、コンパイル時エラーで示すパターンD. 具体的には、似非IteratorであるStreamingIteratorを用いるか、 Rust本命のGATsを用いたLendingIterator (=GATs適用後のIterator) を用いると、 clone()が必要な場面ではコンパイル時エラーにより知らせてくれる もちろん普通にnext()ループ内の利用ならばclone()の必要なくコンパイルが通る
630 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:59:35.22 ID:nrxswUhC.net] 実際に >>618 のOverflowingAddAssignを用いてLendingIteratorで実装すると 以下のようになり、GATsを用いている以外は現状のIteratorともちろん同じ形 自己参照を返せるようになった点のみ異なる impl<T: OverflowingAddAssign> LendingIterator for Fibonacci<T> { type Item<'a> = &'a T where Self: 'a; fn next<'a>(&'a mut self) -> Option<Self::Item<'a>> { if self.is_overflow { return None; } if self.is_first { self.is_first = false; } else { self.is_overflow = self.p.overflowing_add_assign(&self.q); std::mem::swap(&mut self.p, &mut self.q); } Some(&self.p) } } is_first処理は >>511 のコードでの「iter::once(p.clone()).chain(...」部分であり必須 また、前述のようにBigUintで用いれば is_overflow が常にfalseのため最適化で消えて、 値の更新部分は「self.p += &self.q」のみが残り非ジェネリックと同一コードとなる したがって、上述のコードがどの型でも最善に動作するコードとなるだろう
631 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:33:27.12 ID:HOCAPH7I.net] NAVERまとめを彷彿とさせるレス乙 3~4日もかけて頑張って調べたのは讃えるが 特質の異なるものを必要もなくジェネリック化することがアンチパターンだということに早く気づいてね
632 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:51:32.06 ID:rC/Ton17.net] これは同じものだからジェネリックでいいんじゃね
633 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:02:56.78 ID:geXDvND7.net] >>620 構造体メンバーであるis_overflowが常にfalseであることが分かるほどコンパイラ賢いんだっけ? 実際に生成されるコード確認した?
634 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:16:28.43 ID:McWr7xMA.net] add系は#[inline]だから大丈夫
635 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:22:02.34 ID:geXDvND7.net] >>624 構造体メンバの値はグローバル変数なんかと同じで関数外で値が変更される可能性があるので メンバが特定の値しか取らないことを暫定として最適化するためには、 crateの範囲を超えてプログラム全体で値が設定されうる箇所が他にないことを確認するか メンバが可視な範囲で確認する必要があると思うけど、 前者をやるためにはリンク時最適化が必要だし 後者ならメンバの可視性をLLVMに渡さないといけないと思う rustcとLLVMはそこまでやってるの?
636 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:54:00.11 ID:E86JsxIR.net] rust結構面白いからマイクロソフトがVisualStudioでRustでWindowsFormを作れるようにしてくれればなあ
637 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:59:17.60 ID:MphJhZqp.net] >>618 それが>>566 の2行目で書いてる工夫のことだよ boolではなくchecked_add使ってOption<()>返すメソッドにしておけば?演算子でシンプルに書ける
638 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:07:42.57 ID:McWr7xMA.net] >>627 assignでない演算は生成のため内部でcloneが発生して無駄と既に結論が出ている
639 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:11:14.31 ID:0LaPlWrL.net] GATがstableになるの意外と近い予定なんだな 年単位で先のことかと思ってた
640 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:18:22.58 ID:H16c0lbs.net] >>625 Rustでそれは起きない 書き換えるには所有権か&mutが必要でコンパイラは全て把握している 更に構造体のメンバーはpub指定がない限り他者はアクセス不能 つまり今回ならばnext()しかメンバー書き換えしないとコンパイラは確定できる
641 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:25:01.40 ID:geXDvND7.net] >>630 その最適化するのはLLVMだけどLLVMが最適化できるだけの情報を渡してるの?というのが聞きたいこと
642 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:14:58.10 ID:RutuvYDu.net] >>623 その通りRustコンパイラが賢いことを確認したよ is_overflowが常にfalseとなることを察知してNoneを返すことが無くなったみたい Noneが来ない利用側のwhile let Some(n) = iter.next()は無限ループのコードとなっちゃった さらにwhile loopより後ろのコードは永遠未達と判断されて完全に消えた
643 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:32:02.84 ID:XmIGhHAx.net] >>628 checked_add使うのはプリミティブだけだよ BigUintはadd_assignで常にSome(())
644 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:46:44.89 ID:BEV+i+nu.net] >>620 GATってIteratorとか既存TraitのAssosiate Typeに直接ライフタイム書けない仕様になったの? LendingIteratorみたいに別のTraitを使わないといけないようならイテレータ関連の仕組みが2重なって使い勝手が悪い
645 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:50:16.18 ID:WmCB7dh7.net] >>633 意味不明 Some(())/Noneにするならば>>618 のbool値のコードで十分
646 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 00:56:09.87 ID:WmCB7dh7.net] >>634 もちろん出来るようになる 今は無理だからRust公式ブログで解説された例に倣って仮にLendingIteratorとの名で定義して使うなどする
647 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:04:19.24 ID:GDAgVCx4.net] >>632 おー、そんな賢いんだ。すごい ちなみにfn mainとイテレータの定義は同じcrateに含まれている? lib crateでイテレータを定義してbin crateから使った場合にどうなるかも気になる
648 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 14:28:57.42 ID:HonuYlRO.net] >>626 こういうMicrosoftからのサポートは俺も期待してる VC++よりもRust書きたい
649 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 17:16:12.55 ID:GB/2aB1F.net] やめてくれ 汚コードまみれになる
650 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:44:34.63 ID:oVc0GyRX.net] 乱数系のモジュールの仕様変更がかなりガッツリあったみたいなんだけど Rustってこういうことよく起るの? なんかWeb系みたいなノリを感じたんだが合ってる?
651 名前:デフォルトの名無しさん [2022/06/13(月) 19:57:14.15 ID:86dwWfAN.net] なんのはなしだ
652 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:58:13.01 ID:8KDu5nut.net] >>640 人に読んでもらう文章は重要なところ省いたら読んでもらえないよ
653 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:59:25.24 ID:GDAgVCx4.net] >>640 標準ライブラリで破壊的変更はほとんどない 外部crateなら概ねsemverに従ってるし lockfile の仕組みもあるから、 以前ビルドできていたものがビルドできなくなることもほとんどない
654 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:37:45.98 ID:XXqnAuVB.net] >>638 サポートってどの程度のサポートを期待しているんだ? MSがRustコンパイラー出せばWindowsのRust用フレームワーク出すんだろうがな 出さないなら、C/C++/C#のAPI/フレームワークをRustからとりあえず使えるようにしました 程度のサポートになるだろう。 期待しているのはRust用フレームワークであってRustからとりあえず使えるよじゃないだろ? [] [ここ壊れてます]
656 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:37:53.20 ID:oVc0GyRX.net] >>643 あれ外部ライブラリか しかし乱数系の標準ライブラリってまだRustにないのか やぱ若い言語だなRust
657 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:43:42.90 ID:cs6TlBtz.net] >>645 若いというか意図的に標準ライブラリから外してあるよ 理由は標準入りしてしまうと破壊的変更ができなくなって腐るから だから将来的にも標準に入る予定はないと思う
658 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:52:20.46 ID:oVc0GyRX.net] >>646 意図的に外してるの? ふーん、それはそれで面白い
659 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 23:01:34.06 ID:JmWkv6oB.net] >理由は標準入りしてしまうと破壊的変更ができなくなって腐るから なんという本末転倒感
660 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:25:58.88 ID:DOq4xEj+.net] 基本的にRustはシンプルに最小限の言語構成部分しか標準ライブラリに持たない方針 つまり各プログラミング言語毎に標準ライブラリの意味合いや範囲が異なるのと同じ だから乱数でも正規表現でも何でもRustでは外部クレートに存在する 非同期だって基本構成部分のasync/await/Futureは言語として持つけど 非同期ランタイムや非同期ライブラリは外部クレート
661 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:42:56.77 ID:OVbm/pyy.net] OptionやResultの便利メソッドはどんどん追加されてるし別に標準ライブラリを最小限のものにしようとはしてないでしょ
662 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:49:05.73 ID:o3U2MVOf.net] >>649 >最小限の言語構成部分しか標準ライブラリに持たない方針 俺もそんな方針だと思う これが良いのかどうかは分んが。 標準ライブラリだとコンパイラ屋がコンパイラを出す限りサポート・メンテされるのが 他の言語では標準ライブラリなのが外部クレートだと、将来これをメンテする奴がいないになって 放置になり困ったになる可能性あるからな。
663 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:01:42.50 ID:DOq4xEj+.net] >>650 それは最小限の意味合いの受け取り方が違っているだけで同じ Option/ResultはRustにとって言語構成部分 そしてそのメソッドは強いて言えば多彩な制御構文にも相当する だからRustの最小限の標準ライブラリに含まれているし必要性が認識されればメソッドも増える
664 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:15:57.14 ID:DOq4xEj+.net] >>651 それは「サポートする人がいなくなればサポートされなくなる」という当たり前のことでRustとは別の一般的な話 どんな製品でも、どんなライブラリでも、どんな言語でも、同じ そして基本構成部分を含むRust本体の改善&メンテと、それ以外のライブラリのそれとは明らかに別の話たから切り離されているのも自然
665 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:33:47.46 ID:Sv0LbY5c.net] 同じではあるがcargoの性質で余計に面倒な状態になってる。 この辺が低レイヤー向けと相性が悪い部分だな。
666 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:16:38.57 ID:DOq4xEj+.net] >>654 低レイヤー向けのプログラミングをRustでしていて相性の悪さで困ったことはないが具体的に何だろう?
667 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:19:17.55 ID:0h5AdYzJ.net] 聞きかじりだけどクロスコンパイルとかやりたかったらxargo使うもんなんじゃないの
668 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:25:36.70 ID:RiQN/QJO.net] 同梱されるライブラリが巨大な言語で とんでもないクソ仕様が最初に入ってしまうとか メンテナがいなくなったけど互換性維持で簡単に削除できないとか 色々あるからなあ
669 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:36:05 ID:OVbm/pyy.net] >>652 確かにOptionやResultそのものは言語機能にも関わってくる基本的な構成要素だけど、 OptionやResultの便利メソッドは外部crateでも定義できるよね また、HashMapやBTreeMapなどは "言語" の構成要素ではないし、 最近ではonce_cellという外部crateで実現できていたものをstdに取り込もうとしている "言語" を構成する最小限の要素に絞るのであれば、これらは外部crateで実現すればよくて標準ライブラリに入れなくても良いはずだよね おそらく、標準ライブラリに取り込むものは厳選してコンパクトさを保つことを前提に、 広く使われていてAPIが安定しているものは取り込んでいくというスタンスなんだと思うよ
670 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:42:44 ID:OVbm/pyy.net] あー、rustで書かれたプログラム全体の中でのデファクトスタンダードとかお作法とかも含めて言語って言っているのかな そうなのであれば特に異論ないです
671 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:45:28 ID:xoZMylRu.net] マンパワーが足りないから選択と集中で切り捨ててるだけ 利用者がそれを受け入れてるのは切り捨てた部分をコミュニティで支援するからコア機能の開発に力を注げってこと
672 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:53:05 ID:R/3cLRA4.net] >>657 iostreamのことかああああ!!
673 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 03:08:52 ID:aUgYAX3K.net] >>661 アレをRustに取り入れようという動きはないのかな?
674 名前:デフォルトの名無しさん [2022/06/14(火) 18:56:17.12 ID:HX1wvnNi.net] >>648 利便性ではなく一貫性で標準を決めているってことだろ
675 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 14:46:59.83 ID:LjsAAUyE.net] >>658 Rustの利点はOption, Resultがmatchなどの構文で評価できる事、演算子もあるが演算子オーバーロードができる言語であれば同様のことができてしまうがC++23とか26とかで提案されていたinspectはmatchそのもの
676 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 15:29:08.46 ID:13+3Y2cU.net] Rustの活用でElectronよりも軽くて速いアプリフレームワーク「Tauri」が安定版に まずはデスクトップから。モバイル・Webへの対応も進行中 https://forest.watch.impress.co.jp/docs/news/1417148.html
677 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 16:07:33.42 ID:Ry+36K98.net] TauriとYewで純正Rustデスクトップアプリ開発か、 あるいはTauriとVue.jsでフロントエンドのみJavascriptでデスクトップアプリ開発か、
678 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 16:51:56.72 ID:TPrqrDPX.net] Tauri + Vite + Vue 3 + Vuetify 3でデスクトップアプリ開発オラァ!!!
679 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 19:39:52.77 ID:3W1WJ+ID.net] そういやAtom開発者がRustで書き直した究極のエディター「Zed」はどうなったんや。 https://forest.watch.impress.co.jp/docs/serial/yajiuma/1374/986/amp.index.html
680 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 19:54:27.31 ID:hIo52KfN.net] >>665 PC Watchが報じるほどのニュースか、これ?
681 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:36:05.07 ID:qYRKaF3V.net] >>668 >>UIフレームワークには、GPUを活用した新設計のものを用意。このフレームワークは「GPUI」と呼ばれている。 これがどうなるかだな
682 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:52:57.67 ID:rVOBJfNW.net] フレームワークおじさんきちゃったか
683 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 21:28:18 ID:5USgn4My.net] rust製フレームワークの話なら歓迎、jsは該当スレでよろ
684 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 22:27:59.11 ID:/ddt6fDk.net] >>670 俺的にはそれなんかバックにC/C++のVulkan系を用いたものって気がするんだよな
685 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 01:45:23.89 ID:mZKsuJMX.net] rustでgpuなんか使い始めたらライブラリぶっ壊れまくるぞ
686 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:27:34.98 ID:8YmvneAf.net] ?
687 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 15:39:33.09 ID:NH7eG327.net] 俺も今日からラスタシアンだからよろしくな シャドーイングいいねアンダースコアで区切った同じような名前の変数が同一スコープ内に増え続けるのが嫌でイライラしてたらからこの仕様はめちゃ好き
688 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 17:57:54.34 ID:gT1dTx1o.net] >>676 カタカタで書くとラステイシャ
689 名前:唐ゥラステイションだからよろしくな [] [ここ壊れてます]
690 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 06:02:27.98 ID:ib599DIL.net] 全然関係無いんだけど 最近の言語って使ってる人達に名前つけるじゃん パイソニスタとかPHPerみたいな CとかC++にもあるのかなー?とか考えてた時に思い出したんだけど Pythonでモヒカンとか言ってる人達いるじゃん アレの語源は何なの?
691 名前:はちみつ餃子 mailto:sage [2022/06/18(土) 11:43:40.01 ID:vGEU23LW.net] >>678 Python 関連の用語としては知らんけど、これのこと? https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%92%E3%82%AB%E3%83%B3%E6%97%8F_(%E3%83%8D%E3%83%83%E3%83%88%E7%94%A8%E8%AA%9E)
692 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 11:52:07.94 ID:quioMmSC.net] モヒカン族とか、一部の人間が使ってるだけでネットではろくに聞かない言葉だね
693 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:19:14.82 ID:ib599DIL.net] >>679 どうもありがとう ネットスラングだったのか でもPython界隈以外で聞いたことないや
694 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:29:31.13 ID:XkkeHcIr.net] 俺は本場海外の用語以外は一切使わない陰キャチー牛の日本人が勝手な造語の和製英語とかクソダサいからな
695 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:41:40.55 ID:rUpNWN/L.net] 2005~2010頃の技術コミュニティではよく聞いたけど 最近はアンチハラスメントポリシーに抵触するから使われなくなった
696 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:28:43.26 ID:n5ZvcUIJ.net] Rust サビちゃん Python ヘビちゃん
697 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:35:45.47 ID:n5ZvcUIJ.net] サビちゃんでもありヘビちゃんでもありヘジたんでもあり職場では犬たん++
698 名前:はちみつ餃子 mailto:sage [2022/06/18(土) 13:37:07.64 ID:vGEU23LW.net] >>678 C 使いや C++ 使いのことは Cer とか C++er と書いたりすることはあるが、どう読むべきなのかわからぬ……。
699 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:42:03.39 ID:n5ZvcUIJ.net] >>686 社畜
700 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:48:09.17 ID:n5ZvcUIJ.net] この世の中あまたの言語があるのになぜCやC++でコード書くかと言えば仕事だから
701 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 14:09:02.52 ID:XkkeHcIr.net] 普段仕事でC++使わない俺からするとRustめちゃくちゃわかりやすくて触ってて楽しい 特に配列やコレクションの扱い易さが段違いだわ
702 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 14:30:49 ID:n5ZvcUIJ.net] >>689 まあ他の言語触ると扱いやすくて気絶するから触るな
703 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 14:57:08.56 ID:iczP/r4h.net] ※お話の途中ですが蟹が通ります ,、_,、 三 ( ´・ω・`) 三 /ヽ /ヽ (V) (V) 三ノ  ̄ ゝ 三 ミ (´・ω・`) ミ タタタッ サササッ
704 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 15:02:32.97 ID:hqbe2tQH.net] そのカニもらって食べちゃうね
705 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 15:34:56.20 ID:XkkeHcIr.net] 命名規則のガイドラインがスネークケースなのがC/C++に配慮した結果なのかなぁって気がするけどまぁ慣れの問題だから文句ないよ
706 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 19:21:06.68 ID:M9fy3K3m.net] 公式ドキュメントにRustは式指向言語ですってあるんだが式指向とはなんぞや?
707 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 19:25:35.79 ID:1ZLmOyHM.net] 制御構文が文じゃなくて式になってて値を返すという意味かと
708 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 19:54:48.42 ID:vxK0JF3c.net] 終端にセミコロンつけたら式じゃなく文になっちゃうとか独特だよね fn five() -> i32 { 5 }とかfn five() -> i32 { 5 };って書けた方が違和感ない気がするんだけどね
709 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 20:32:50.72 ID:aTjkq+5e.net] Rustはラムダ引数の型推論が多くの他の言語とは異なって機能するんだよ
710 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 21:11:11.71 ID:6CHzGsUP.net] 最近、ゲームのRustが人気過ぎて検索に支障が出てる
711 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 22:17:14.37 ID:ZZmk5y2Z.net] >>694 日本語訳は公式じゃないから 今はもう公式では式指向(expression oriented)という言葉は使われてない 式指向言語の意味を知りたければwikiでもどうぞ https://en.wikipedia.org/wiki/Expression-oriented_programming_language
712 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 00:35:13.44 ID:HLAvlKQn.net] VTuberやストリーマーの間で人気を博しているサバイバルゲーム「RUST」とは? https://www.moguravr.com/vtuber-rust/
713 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 01:08:17.73 ID:WtnMKA9r.net] Goを見習って、Rustlangで検索してくださいね
714 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 05:08:01.71 ID:UsMsALi7.net] rust lang OR 言語 -go
715 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 07:36:52.36 ID:kKndzz48.net] Rustではboolを論理値と訳してるけど言語ごとに揺らぎがあるのはなんでだろうね 個人的に真偽値を使ってるけど真理値って解釈もあるしこれも定義は別で厳密には違うけどRustとしては解釈は同じで違いはないってことなのかな
716 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 08:12:44 ID:Nk1h87ob.net] 作った人が違うんだから揺らぎがあるのは当然だろ
717 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 09:35:04.20 ID:pSFkutGr.net] 作った人というより訳した人の違い Rustの日本語書籍でも統一されてるわけじゃない 論理値はもともとlogical valuesの訳語 >Rustではboolを論理値と訳してるけど 正しくは「The Bookの日本語訳ではBooleanを論理値と訳してるところがあるけど」
718 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 09:50:34.90 ID:KbscZGS+.net] 手元のRust本見てみたけど真偽値も真理値もあるね 個人的には真偽値かな
719 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 10:18:36.03 ID:MGBoiv+i.net] 型は論理型と言いたくなる。真偽値型ってのもたまに聞くけど。
720 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 10:32:50.28 ID:YciZ0/bi.net] ブール型でええやん
721 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 11:02:28.95 ID:McUuM60V.net] the bookの日本語訳は翻訳の質が低いしアップデートもされてないからrustを本気で勉強したい人は読まない方がいいと思う
722 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 11:11:00.25 ID:KAsrUTco.net] https://jp.mathworks.com/help/matlab/logical-operations.html > logical データ型を使用して boolean データを表現します matlabではlogicalってデータ型があって中身は0か1 false, trueも結局はlogicalの0と1でしかない https://doc.rust-lang.org/std/primitive.bool.html > The bool represents a value, which could only be either true or false. > If you cast a bool into an integer, true will be 1 and false will be 0. 一方rustではtrueもfalseも依然としてboolのまま
723 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 11:23:29.55 ID:2cctUuao.net] ブール値のブールの意味を知らん人が多いのかもしれない ブール値より真偽値型がいいな
724 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 11:33:06.55 ID:YciZ0/bi.net] boolの意味なんか一般アメリカ人も知らんだろ
725 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 12:03:30.22 ID:dg+pb++y.net] >>710 値の呼び名の話と、内部表現の話と、castせず別の型の値として利用可能かどうかという3つの異なる話を混同してる
726 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 13:11:53.53 ID:61bWOpc5.net] ワットとかアンペアの語源を知ってるかって話?
727 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 13:14:46.84 ID:vUT9u2r3.net] Rustを含めたほとんどの言語で logical or/and/notと呼び まとめてlogical operatorと言い 日本語で論理演算子と称するから その対象となるbool値も論理値と訳すことが多く賛同だが 訳さずbool型とbool値のままが曖昧さがなくよいのではないか もちろん文字列型も訳さない方がよい
728 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 13:33:48.08 ID:vE0AzMds.net] おまえらってほんとう用語の定義とかそういう話になると生き生きしよるな あと「許可されないなんちゃら」みたいな法律家談義みたいな話
729 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 13:35:46.28 ID:Nk1h87ob.net] >>714 自分の呼び方が正しいんだー っていうキチ同士の争い
730 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 14:12:32.07 ID:T+HLe5Kk.net] >>714 ジュールとかニュートンのほうが先に頭に浮かんだ >>716 とはいえ「所有権の複製」は見過ごせないって
731 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 14:17:42.75 ID:kKndzz48.net] これはプログラミングに限定した話ではなく他のカテゴリでも用語を英語に統一すべきだと思うんだよな 世界の大学ランキングで日本の大学が少ないのは教科書や専門書が英語の国が対象だから教科書や専門書が日本語で学習できる日本はレベル高くて母国語ではなく英語でしか学べない他の国がレベル低い土人国家だと言ってるやつがいるけど逆じゃねーの?って思う
732 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 14:55:53.98 ID:8/kH/R2d.net] 自転車置き場の議論
733 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 15:31:58.19 ID:N+aRTDUf.net] >>719 英語じゃなくてラテン語を
734 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 17:52:40.64 ID:fArfwr+a.net] >>719 はぁ? 何を甘っちょろいこと言ってんだ。 日本語を押し付けていく気概もなしに学問をリードできるかいな。
735 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 18:18:54.31 ID:lfAX8IzG.net] >>722 日本語だけは絶対にイヤ Rubyも英語だったろ?英語でいいんだよ
736 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 18:25:22.30 ID:ZgRIQXP3.net] >>723 なぜRuby?
737 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 19:22:19.06 ID:xSCrTfK1.net] 高階関数の解説を読むたびに出てくるカリー化がそれオーバーロードでよくね?って思うんだが誰か納得感ある説明頼む
738 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 19:29:05.73 ID:YciZ0/bi.net] >>725 カリー化は、ElmとかF#みたいなパイプライン演算子を多用する言語じゃないとありがたみを感じない
739 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 19:43:10.79 ID:Iqvgk6im.net] なんとRustには関数オーバーロードが存在しないのだ! だからトレイトでクソ面倒臭い実装でむにゃむにゃしないと実現できない! でもそんなことして何が嬉しいのかわからない! Rustは可変長引数もないしC++と比較してまだまだ機能的にはぜんぜん追いついてないよ
740 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 19:47:20.02 ID:WtnMKA9r.net] そうですね あなたはRustではなくC++を使い続けてください
741 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 20:02:56.72 ID:61bWOpc5.net] カリー化ってオーバーロードで代替できるのか?
742 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 21:29:31.34 ID:10dVJy7y.net] // 引数2つの関数 (例としてたまたま足し算) let add_x_y = |x, y| x + y; assert_eq!(5, add_x_y(2, 3)); // 引数1つの関数をそこから作り出す (カリー化) let add_x = |x| move |y| add_x_y(x, y); // 段階適用 let add_2 = add_x(2); assert_eq!(5, add_2(3)); // 一気適用 assert_eq!(5, add_x(2)(3));
743 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:04:00.15 ID:gGrS7GAs.net] >>725 関数を書くたびにカリー化のためのオーバーロード書いていくのは面倒くさすぎるでしょ
744 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:26:44.97 ID:fArfwr+a.net] カリー化なあ…… rust だとライフタイムの管理がちょっと複
745 名前:Gになると手におえんだろ 理屈はともかくとして、普通のプログラマにとっては割に合わない [] [ここ壊れてます]
746 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:32:20.86 ID:8/kH/R2d.net] https://ja.cppreference.com/w/cpp/language/overload_resolution これを少しでも理解しようとしたことがあるなら、RustにC++並の無制約なオーバーロードが欲しいとは思わないだろうよ
747 名前:デフォルトの名無しさん [2022/06/20(月) 06:57:08.63 ID:E2oosySA.net] 安直に引数個分のダミーパラメータを与えるカリー化マクロcurry!を用意してみた macro_rules! curry ( ($func_name:path, $first_arg:ident $(, $arg:ident )*) => { |$first_arg| $(move |$arg|)* $func_name($first_arg $(, $arg)*) }; ); 引数が2つの例 let add = |x, y| x + y; let curry_add = curry!(add, a, b); assert_eq!(curry_add(1)(2), add(1, 2)); 引数が5つの例 let func = |p, q, r, s, t| p + q * r - s / t; let curry_func = curry!(func, a, b, c, d, e); assert_eq!(curry_func(5)(4)(3)(2)(1), func(5, 4, 3, 2, 1)); 標準ライブラリの文字列replace関数をカリー化 let curry_str_replace = curry!(str::replace, src, old, new); assert_eq!(curry_str_replace("abcdefg")("cde")("CDE"), "abCDEfg"); let 自己紹介 = curry_str_replace("私の名前は_NAME_です")("_NAME_"); assert_eq!(自己紹介("名無し"), "私の名前は名無しです"); 意外にそこそこ使えた
748 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 07:08:36.46 ID:10Lmd2dP.net] >>733 rustを作る側からしたら嫌かもしれんけど、使う側からしたら有ったほうがいいんじゃない? まぁ、俺がオーバーロードがある環境に慣れちゃってるからかもしれんけど
749 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 07:31:28.70 ID:iAqd5FsI.net] シャドーイングは許容できて関数のオーバーロードが許容できない理由ってなんだろう
750 名前:デフォルトの名無しさん [2022/06/20(月) 07:34:05.79 ID:E2oosySA.net] >>735 クロージャ多用のRustでオーバーロードってどうするの? 例えば>>734 に挙げた例でカリー化を同名でオーバーロードにする場合 let add = |x, y| x + y; let add = curry!(add, a, b); // = |a| move |b| a + b; assert_eq!(add(1)(2), add(1, 2)); この引数の数が異なる二つのaddの存在をオーバーロード
751 名前:ニして許すの? オーバーロードのある言語ではこの問題をどう解決しているのだろう [] [ここ壊れてます]
752 名前:デフォルトの名無しさん [2022/06/20(月) 07:44:20.63 ID:E2oosySA.net] >>736 シャドーイングは同時に存在できるのが一つだけで曖昧さがなくプログラミングにおいてプラス効果 オーバーロードは同時に異なるものが存在できるため可読性を下げたりミスを起こす機会を生じさせてマイナス効果
753 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 10:29:58.07 ID:anfwvwwH.net] >>735 読む時にはどのオーバーロードが呼ばれるのかを確認するのが面倒 RustだとT, &T, &mut T違いもあるから他の言語よりもさらに面倒 メリットよりデメリットのほうが大きいと感じる人が多いんじゃないかな デフォルト引数/オプション引数/キーワード引数はいずれ導入して欲しい 乱用されるとAPIが汚くなるがオーバーロードほどのデメリットはないと思ってる
754 名前:デフォルトの名無しさん [2022/06/20(月) 10:47:53.81 ID:1agQsnkM.net] 真理値なんてどんなアホが訳してんだ
755 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 11:11:29.76 ID:G0GSIi1k.net] 元の英語から違うので訳の問題ではありません (truth value)
756 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 11:17:59.13 ID:c9A58FBc.net] logical values 論理値 truth values 真理値 true or false values 真偽値 Boolean values ブール値 ブール値じゃ分かりにくいと仮定して論理値、真理値、真偽値のどれを選ぶかってこと the book日本語訳の人はRustの文脈での分かりやすさよりも土台となってる分野で広く使われてる訳語がいいと判断することが多い印象
757 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 11:29:41.63 ID:qsA991ej.net] まぁプログラマーでござい(ドヤッ!な勘違いの陰キャチー牛の癖に英語読めないポンコツなの日本人くらいだからなwww
758 名前:はちみつ餃子 mailto:sage [2022/06/20(月) 12:24:24.66 ID:6BcBi/VL.net] 同じ意味とされることもあるが、若干のニュアンスの差もあると思うんだよな。 ブールはブール代数から取ってるんだから当然に代数的な操作に使うという感覚があるし、 真理値は論理学の方面で抽象的な概念 (命題とか集合とか) に対応付く場合もある気がする。 個人的には論理値が最も中立というか、ただ真と偽の値を持つものという雰囲気を感じる。 ブール ⊂ 真理値 ⊂ 論理値 な感じ。
759 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 12:43:05.08 ID:G0GSIi1k.net] たかが二値論理の値の型でしかないものを誰がboolだのbooleanだの呼び始めたのかと思って調べたらALGOL60だった
760 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 12:43:22.11 ID:zDrv1zgC.net] 真理値だけは3値以上の場合も含むからちょっと意味が広い感じはする
761 名前:デフォルトの名無しさん [2022/06/20(月) 13:11:27.43 ID:bsAvnwWF.net] 関数オーバーロードをありがたがってるのはジャバの連中だけ
762 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:32:26.58 ID:nUFjxYTv.net] 論理値は非古典論理の値も含むからさらに広いな。
763 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:34:13.37 ID:rudBfZT/.net] >>746 どれも注記がなければ二値だけど three logical valuesやthree-valued Booleanと言えば3値になりえるので 基本的に意味するところは同じだと思うよ
764 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 16:12:28.65 ID:Wp6+mQEy.net] >>749 確かに論理値も多値ありうるのか 真偽値もそう?これ字面からは2値限定な気がするけど
765 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 16:33:57.18 ID:vXHoc6MR.net] どうでもいいけどwasmerがaarch64 完全対応したということで、rust+wasm+wasmerでcliを試してみたけど完全にただのjavaで草生えた
766 名前:はちみつ餃子 mailto:sage [2022/06/20(月) 16:55:48.44 ID:6BcBi/VL.net] Wasm は JVM より低レイヤ寄りだから設計思想は違うんだが……。 でも Java がやってた領域をかなり奪うとは思う。 Android で JVM を使っている部分を Wasm に置き換えたような OS とかもその内に出てくるんじゃないかね?
767 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 17:33:23.64 ID:ib2o9qWW.net] 個人的にWasmよりもTauriの方が開発環境構築がめちゃ楽でシンプルだから好き クロプラの一番の課題って今も昔も設定の煩わしさだよね俺はconfigマスターになりたいわけじゃねーんだよ! モバイル対応がまだだけどちゃんと予定はあるからTauriが流行ってほしいな
768 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 17:52:06.79 ID:cgMFd80D.net] wasmとtauriって別にそういう競合するポジションとかじゃなくね?
769 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 17:55:14.20 ID:JDT/MbKD.net] Tauriはただのwasmのレンダラーだよ。Chromium内蔵をやめて実装をRustにしたElectron。 wasmerはレンダラーしないwasm実行環境。
770 名前:デフォルトの名無しさん [2022/06/20(月) 17:56:48.16 ID:E2oosySA.net] >>744 >>748 Rustの公式referenceでもbool値に対してのoperatorをlogical and やlogical orと明記されているから日本語訳は論理値でもよいのではないかな
771 名前:はちみつ餃子 mailto:sage [2022/06/20(月) 18:19:59.87 ID:6BcBi/VL.net] >>756 論理和・論理積に対応する英語は logical disjunction / logical conjunction であって、 logical or / logical and ではない。 (でも演算子として OR / AND を使った表記をすることはよくあるし……。 カジュアルな場面では曖昧だったりするのかな?) logical or / logical and は bitwise or / bitwise and と区別するために新しく作られたプログラミング用語として考えるべきで、 もちろん過去からの様々な分野の用語を踏襲してはいるにしてもあまり対応づけて考える必要はないと思う。 bool は人名 (固有名詞) に由来するんだからそのままブール値と訳すのに一票。
772 名前:デフォルトの名無しさん [2022/06/20(月) 18:37:04.96 ID:E2oosySA.net] >>757 まずRustを含めてプログラミング用語の話においてのみboolが出てくるのだから他へ話を広げる必要なし 次にbitwise andに対してboolean andと言わずにlogical andと用いられているのはlogicalが説明としても用語としても妥当であるため 日本語としてもカタカナ訳語を使う必要はなく論理値や論理演算子でよいのではないかな
773 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 18:41:04.35 ID:cgMFd80D.net] 自転車置き場の議論楽しいんんねええええ
774 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 18:45:53.95 ID:fDP2JAl4.net] Tauriのモバイル対応はwasmのUIフレームワークの整備が進んでいないから、まだいいかな このままモバイル対応しても、せいぜいReact Native アプリのバックエンドがwasmになって実行速度を少し改善するくらい 全てはWASM実装可能なUIフレームワークの成長次第だから、Yewは頑張ってくれ!
775 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 18:51:29.68 ID:vXHoc6MR.net] もしreact 自体をウェブアセンブリとしてビルドできたら、、革命起きそう
776 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 19:08:40.42 ID:MJF5Q/rm.net] >>761 できる可能性はあるぞ https://github.com/Shopify/javy
777 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 19:10:28.51 ID:Lqu2R1w+.net] Reactはもういいよウェブベースのクロプラフロントエンドフレームワークの問題を凝縮した実装だから早く消えてほしい ライフサイクルと状態管理を開発者に丸投げすることを正当化させた罪は重い MSのオールインワンな開発環境がエンタープライズ分野で今でも支持される理由ってここだと思う
778 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 19:13:28.43 ID:j7veV6LL.net] MSのweb開発フレームワークとプラットフォームはくそじゃん
779 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 19:27:45.70 ID:JN5oCIkY.net] >>752 近いものがあるね webvm.io
780 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:40:21.97 ID:W1rh1Xym.net] >>755 ん?言ってる意味がわからないんだけどTauriのUIレンダリングプロセスはJS/TS/ReactなんかのウェブベースのフロントエンドFWだが? Chromiumやnode.jsをバイナリに含めずプラットフォームのWebView(WenKit)を使うからサイズが小さいのだが? レンダラーがWasmってどういうこと?具体的かつ納得できる説明よろ
781 名前:はちみつ餃子 mailto:sage [2022/06/20(月) 21:43:08.29 ID:6BcBi/VL.net] DOM (またはそれの元になる html や JavaScript とかも含むのかも?) を生成することをレンダリングと呼ぶ界隈が存在するぞい。
782 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:04:16.75 ID:x7QB4AuO.net] >>766 >>JS/TS/ReactなんかのウェブベースのフロントエンドFW フロントエンドに使えるフレームワークはjavascript系に限らないよ例えば上コメにあるYewとか
783 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:08:03.20 ID:j7veV6LL.net] その前に > レンダラーがWasmってどういうこと? 誰もこんなこと言って無くね?
784 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:20:30.26 ID:G0GSIi1k.net] 「wasmのレンダラー」の意味不明度が高すぎて混乱しているのだろう……
785 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:33:21.69 ID:vXHoc6MR.net] wasmのレンダラーっていうのはtauri+yewの組み合わせなら間違ってないよ 彼はtauriがreactやvueもレンダリングできるってことを言いたいんじゃないの? tauriはwebviewのrustやjavascriptのバインディングを提供するフレームワークだと自分は解釈してる
786 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:43:18.28 ID:vXHoc6MR.net] ちなみにjavascriptバインディングの無い既出の"web-view"ってのがcrate.ioにある こっちは正真正銘wasmのレンダラーよ https://crates.io/crates/web-view
787 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:49:34.14 ID:RTpsTrZi.net] だからwasmのレンダラーっていう書き方が悪いだろうよ 頭の悪いひとたちのために「wasmをレンダーするひと」って書け
788 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:54:18.58 ID:X5CbdNui.net] Tauri can render JavaScript and WASM and more. ほら、これでいいか?
789 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:57:56.00 ID:nM7DxFpE.net] UIフレームワークの話なんか何が面白いの?
790 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:01:44.97 ID:DwXFtGxu.net] さあ?
791 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:01:47.43 ID:FYZjQUUW.net] >>775 わかんね アーキテクチャの違いとかならまだ興味わくけどな
792 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:06:38.97 ID:FiNSG1Db.net] まあフロントやらずにバックだけ開発の人には関係ない話だな
793 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:12:11.87 ID:2JvwDfXO.net] 違う話題って事で 「Rust for Rustaseans」って本めっちゃいいぞ オライリー本やThe Bookの入門レベルを終えてある程度Rustでプログラム書いた後に読むといい
794 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:14:12.29 ID:2JvwDfXO.net] スペル間違ってた 恥ずい
795 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:19:15.21 ID:j7veV6LL.net] >>779 なかなかそのレベルまで遠いんだろうな
796 名前:デフォルトの名無しさん [2022/06/21(火) 01:19:44.55 ID:rZ1ZoU3X.net] >>773 >>774 二人ともおかしい wasmをレンダーすることはない 一般的にレンダリングとは抽象データから実データを生成すること 今回はTauriの話のようだからレンダリングは2階層あって 1つはTauri上で作るアプリが自分のデータからDOM(HTML)を生成するレンダリング もう1つはTauri自体がそのDOM(HTML)からコンピューター画面へ描画生成するレンダリング wasmが関係するとしたら前者 つまりwasm上で動くアプリがDOMを生成するレンダリング wasmを使わない昔からのやり方ではJavaScript上で動くアプリがレンダリング つまり対比点はwasmがレンダーするかJavaScriptがレンダーするか、とも言えることから >>766 > レンダラーがWasmってどういうこと? ここへ繋がるのではないかと推測 つまりRustコードを書くだけでアプリ作成を完結できるか否かの話にみえる
797 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 01:28:03.75 ID:rVN8NDnU.net] >>737 ローカルな宣言はシャドーイング優先でいいんじゃない? 関数やメソッドがオーバーロード出来たらいいなぁくらいの気持ちなんで。デメリットとかはやっぱあるよね >>739 やっぱめんどくさいかなぁ? そういう言語しか使ってこなかったからいまいちわからんのよ。rustに慣れればやっぱこっち!てなるんかねぇ
798 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 01:29:27.34 ID:l/hCBOZ3.net] 今スレの怪文書頂上決戦 52 デフォルトの名無しさん sage 2022/05/16(月) 19:06:18.85 ID:78bNbDCr >>49 デタラメすぎ ムーブでビットパターンのコピーは発生しない ビットパターンのコピーが発生するのは引数の値渡し等であってムーブとは関係ない さらに引数の値渡しでのでビットパターンのコピーとCopyのコピーも全く異なる Copyのコピーはディープであって高コスト 755 デフォルトの名無しさん sage 2022/06/20(月) 17:55:14.20 ID:JDT/MbKD Tauriはただのwasmのレンダラーだよ。Chromium内蔵をやめて実装をRustにしたElectron。 wasmerはレンダラーしないwasm実行環境。
799 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 08:26:51.74 ID:82ugTJay.net] TauriはJavaScriptやWebAssemblyをWebViewが理解できる機械語に変換するライブラリじゃないの?
800 名前:デフォルトの名無しさん [2022/06/21(火) 08:42:00.86 ID:X7xq+hMN.net] オーバーロードがなぜ出来ないかって、型推論の完全性が失われるからじゃないの?
801 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 08:56:29 ID:TERGIQkG.net] taui+webview==web rendererであってtaui≠=web rendererだから。 だからtauiがwasmやjavascript のrendererというのは間違い。 tauiを媒介したwebviewがwasmやjavascriptのrendererだから。
802 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 08:59:28 ID:vO+TReRM.net] 俺はフロントエンドやらないからこのスレでTauriの話をしないでくれ
803 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:03:37 ID:E/HTpvzq.net] renderやらrendererやら、レンダーやらレンダラーやら、ややこしいなおい
804 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:08:13.67 ID:OsotcMPi.net] オーバーロードは無くていい派
805 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:17:14.76 ID:rK2P992k.net] ジェネリクスで表現できるくらいの自明なものはオーバーロードしてもいいけど それ以上に挙動が変わるなら名前変えたほうがいいと思ってるから 結局オーバーロードは無くていいかな
806 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:18:38.16 ID:LcZeBWSd.net] オーバーロードできないのは違和感あるけどすぐ慣れるぞ。頑張れ。
807 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:27:48.90 ID:e1jAZPeO.net] >>784 言ってる本人が理解してないだけでwasmレンダラーって言い方はあるよ
808 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:38:22.89 ID:TERGIQkG.net] TauriがElectronみたいにWebViewを内蔵してないから、TauriがWASMのレンダラーって勘違いしちゃったってことだな よし解決したなUIの話はもう十分だろ
809 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:48:41.18 ID:aUxUUrSq.net] 古今東西ウェブのレンダラーってレンダリングエンジンのことじゃん んで歴史あるASPを例にMS公式の解説を引用するならDSLのようにHTMLコードに変換(=レンダリング)する処理系ってことだよ wasmモジュール(バイナリ)に変換するためのレンダラーはEmscriptenだからwasmがレンダラーって認識は間違い
810 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:58:17.91 ID:4fSeXEQO.net] なぜそこでemscriptenが出てくるんだ?
811 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:01:09.64 ID:4fSeXEQO.net] いい加減「wasmのレンダラー」を「wasmがレンダラー」と読むのやめたら?
812 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:03:06.58 ID:4fSeXEQO.net] 「wasmのレンダラー」は、wasmでビルドされたレンダラーじゃなくて、wasmバイナリを読み込むことができるレンダラーってことじゃないの?
813 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:04:20.02 ID:lcATvJP3.net] >>795 それは視野が狭い 例えばウェブ業界でCSR(client side rendering)やSSR(server side rendering)と言うときのレンダリングとはHTML/DOMを生成することを指す CSRはブラウザ等の中でそれを行なうのでReact等ではJavaScriptでレンダリングをするしYew等ではWasm/Rustでレンダリングする つまりWasmでレンダリングするということはTauriでは全てのコードをRustで書けることになる
814 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:09:54.89 ID:l/hCBOZ3.net] cssを読み込んで適用できるからってわざわざそのレンダリングエンジンのことをcssレンダラーって呼ぶことがあるか?
815 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:11:12.61 ID:5vOFCGpG.net] >>797 Rust使いはASTまでは構築できてもそこから意味理解が弱いんだろうな
816 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:12:25.82 ID:D95D9dWE.net] きみたちは一度これを読んだほうがいい Rust GUI の決定版! Tauri を使ってクロスプラットフォームなデスクトップアプリを作ろう Chapter 03 Tauri の概要 https://zenn.dev/kumassy/books/6e518fe09a86b2/viewer/168468 より アーキテクチャ Tauri のアーキテクチャを図示すると、次のようになります https://storage.googleapis.com/zenn-user-upload/e215aef57b0a-20220610.png Core Process はアプリケーション全体のライフサイクル管理を行ったり、 OS のインターフェース(メニューや通知など)の操作、 WebView Process の管理などを行います。 Core Process のコードは Rust で記述されるので、標準ライブラリも crate.io で公開されているライブラリも利用できます。 Tauri は非同期ランタイムとして tokio を利用しているので、非同期 Rust も使えます! Rust のコードはアプリケーションのビルド時にネイティブコードにコンパイルされるので、高速に動作します WebView Process は Web コンテンツのレンダリングを行うプロセスです。通常の Web ページと同様に、 index.html, JavaScript, CSS から構成されて、 wry にラップされた WebView で動作します。 Tauri の JavaScript API を利用することで、 Core Process と通信したり、ファイルシステムにアクセスしたり、通知を表示する、などの操作が可能です。 WebView Process から WebView のサンドボックスを超えていろいろな操作できてしまうとセキュリティ上問題になることがあります。そこで、 tauri では JavaScript API で利用する API を allowlist に明示的に記述する必要があります。 Electron では preload スクリプトによって Renderer Process に公開する API を制限できましたが、同様の仕組みは allowlist で実現できます。 Tauri でアプリケーションを作ると Electron とは違い、 Chromium と Node.js 実行環境をバンドルする必要がないので、アプリケーションのサイズを小さく保つことができます
817 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:30:52.39 ID:ZcKPa2VS.net] >>751 の、WASI実装のwasmerによるrustのVM言語化の話は興味深いけど、GUIフレームワークTauriの話はいい加減スレチ Electronスレにでも行って議論してくれ
818 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 10:39:20.05 ID:lcATvJP3.net] >>802 にあるようにHTML/DOMから画面へのレンダリングはWebViewがしてくれるからアプリ開発者は関与しない アプリ開発者が関与するのはアプリデータからHTML/DOMへのレンダリング部分のコードを書くこと この点はWeb開発でもTauriでも同じ
819 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:04:51.42 ID:uvaWF54t.net] 結局怪文書の出どころはいつものオジだったww いい加減聞きかじりで知ったかぶりするのやめたら?
820 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:08:08.11 ID:g+0qioKO.net] 間違いを指摘してくれる人が周りにいないんだろうな
821 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:11:56 ID:RyNZqEbO.net] IDコロコロしないでほしいわせめて コテハンつけてくれたらNG捗るのになあ 「所有権の複製」のときから思ってたけど
822 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:13:49 ID:7sQPW1UK.net] tauriでNGすればおけ
823 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:26:02.71 ID:l/hCBOZ3.net] じゃあ次スレこそはワッチョイつけようか
824 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:28:36.35 ID:pS+FR3pl.net] wasmくんたちはコッチ 【wasm】ブラウザでC++。Emscriptenを語ろう https://mevius.5ch.net/test/read.cgi/tech/1547549448/
825 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:38:04.80 ID:mlYOyxJ9.net] >>809 既にある 行きたい人は向こうへ行け Rust part6 ワッチョイ有り https://mevius.5ch.net/test/read.cgi/tech/1532697692/
826 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:49:09.87 ID:GSNSCBV0.net] 論理構成が薄弱で常に自己正当化するためだけにレスを重ねる人は相手にしちゃダメなんだよ 特にほぼすべてのレスで相手を否定する言葉から始める人はある種の病気だと思って対処した方がいい 論理的な批判に耳を貸す相手じゃないから
827 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:55:22.58 ID:RyNZqEbO.net] コテハンつけてくれるんなら 俺は今後一切複製クンを馬鹿にしないし むしろ尊敬するから頼むからつけてほしい
828 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 12:14:34.84 ID:l/hCBOZ3.net] >>980 ワッチョイついでで思い出したけどvs C++へのリンクは落ちてるから消しといてくれ
829 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 07:37:30.53 ID:EdrHrSzx.net] >>719 これ和製英語もそうだが和製発音も相当やばいよ 今ホットなウクライナがバリバリの和製発音でUkraineって本来ユークレインて発音するからな 英語できないでボランティア行ったやつウクライナ!ウクライナ!って全く通じない発音を連呼してたかと思うとはこっちが恥ずかしくてまさにもう見てらんない! いい加減に読みも発音もグローバルスタンダードにしろっつーの何でもかんでもガラパゴスなの頭悪すぎる
830 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 07:45:18.19 ID:qSL2YnBO.net] だからなに
831 名前:デフォルトの名無しさん [2022/06/22(水) 08:24:23.86 ID:s09CCxIL.net] >>815 ウィーンをヴィエナって言えってか?
832 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 08:24:47.41 ID:48p4Di1y.net] 頭悪くても使えりゃいい
833 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 10:01:54.69 ID:U3SsHgc3.net] >>815 強いて言えばウクライーナってくらいで和製発音じゃないから通じるよ 日本は英米と違って中華系の地名・名前以外は現地発音に寄せてるものが多い 中華系は日本語漢字読みだと外国人には全く通じない(中国人・台湾人なら漢字で書けば通じる) Rustも最初はルーストって発音してる人いたよね Scalaをスケイラとかも
834 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 10:12:00.42 ID:kKprzj+b.net] いや通じないんだなこれがアジアの英語圏ですら通じないんですよ嘘吐いちゃダメよ 公用語が英語のフィリピンのマックやスタバで日本人のゴミ英語が一切通じない現実から目を背けるな 特にプログラミングの世界でどれだけ日本語の意訳が学習の障害になってきた・なっているか 超基本の代入を例に挙げてもわかるせめてアサイン or アサインメントってカタカナにすれば超理解し易いのに代入?ってなるよ代入って意訳した奴は大馬鹿だよ
835 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 10:23:30.15 ID:li50soYi.net] エビデンスを出せ
836 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 10:41:03.57 ID:k8vtEW7h.net] 英語カーンプレクスをこじらせちゃってるね
837 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 10:50:41.07 ID:LE1FQ2Yx.net] ラストは日本語識別子も使えるから色々大丈夫
838 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 10:54:46.62 ID:QEBJj1WM.net] フィリピン人のオンライン英会話レッスンで ウクライナが通じなくて恥ずかしかったんだなきっと 気持ちはわからなくはないが恥ずかしがることではないよ
839 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:04:11.24 ID:SASaungr.net] 触れちゃいけない人だろ 面倒だからそのくらいにしとけ
840 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:54:59.01 ID:TXCOqcCS.net] 論破されると変人扱いでシカトとかまんま陰キャチー牛オタクで草 プロジェクトが炎上する理由てこういうプログラマーの癖に論理じゃなくて感情で他人の足引っ張るの大好きな馬鹿が原因なんだよな
841 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 12:16:04.88 ID:vkSjQpLZ.net] 早口ですね
842 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 12:53:20.15 ID:KbrpK4gE.net] ID変わっちゃうのは仕方がないことだからコテハンつけてくれ
843 名前:デフォルトの名無しさん [2022/06/22(水) 12:55:32.81 ID:PETcyPz4.net] 俺の場合、英語だと何倍も読むのに時間がかかったり、わからない単語や言い回しがあったりするので和訳はありがたいんだけど・・・・ ただ専門用語については、英語でなんて言うのかを併記して欲しいな 後に調べるのが大変になってしまう 上で騒いでる発音に関しては、まあ学習の上ではあんまり問題ないね
844 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 14:09:24 ID:jR4emiFb.net] 発音か… もう長いこと勉強したことないな 発音勉強するいいサイトないの?(スレチ)
845 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 14:40:24.01 ID:NTc30+P3.net] そこにyoutubeがあるだろ
846 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 15:11:02.84 ID:iqmSmX2L.net] ヨーロッパの地名も日本語は英語よりまともなことが多い。現地語をカナカナに当てはめちゃってるので発音は違うけど。 パリ、パリス ローマ、ローム フィレンツェ、フローレンス
847 名前:デフォルトの名無しさん [2022/06/22(水) 15:24:30.47 ID:UvvJO3VG.net] おまいらどれを読み間違っていたか正直に言いなさい height width adjust false queue deque lambda column char
848 名前:デフォルトの名無しさん [2022/06/22(水) 15:32:22.45 ID:hyphYc1n.net] >>815 そこは英語できないじゃなくて、English出来ないだろ!
849 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 15:37:13.88 ID:KbrpK4gE.net] ここまで自分以外単発
850 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 15:42:45.07 ID:2oX7OuW7.net] 欧米のひとなんて日本をジャパンとかいう謎の呼び方するじゃん
851 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 16:00:46.63 ID:pGATTXre.net] 最近の言語って、代入は使う事少なく無い? 束縛って表現は、見かけるけれど。
852 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 16:01:41.99 ID:/Mr2VB7b.net] >>830 Siriとかに発音させるアプリいいよ 単語レベルならかなり正確 あとは技術系の動画 最初に舌の動きやlinkingを学んだほうが効率いい
853 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 16:23:49.52 ID:b/qu9BCC.net] >>833 ヘイト ウィズス アジャスト フォルス キュー デキュー ラムダ ちゃー https://www.s40otoko.com/wp-content/uploads/2020/09/char_a-sha.jpeg
854 名前:デフォルトの名無しさん [2022/06/22(水) 17:07:06.02 ID:UvvJO3VG.net] 基本点5点 一人目の勇気+1点 正直者+1点 ちゃーさん+2点 9点です
855 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 17:27:44.73 ID:JoQ1XY7q.net] ランブダ コルムン ちゃーはタムケンの方で
856 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 17:36:28.86 ID:XpS14TAH.net] >>833 width, deque, char widthは発音記号(/wɪdθ/)を見て長いことウィドスっぽく発音してた clothes /kloʊðz/とかも一緒 charとかは純粋な英語ではないからSQLと一緒で英語圏で広く使われてる発音と違ってても全然気にしない Rustで言えばmut、impl、dyn
857 名前:デフォルトの名無しさん [2022/06/22(水) 18:25:11.65 ID:s09CCxIL.net] >>833 昔の会社の上司が lambda をランバダって読んでた。 冗談なのかマジなのか未だにわからない。
858 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 18:40:33.26 ID:jR4emiFb.net] >>843 社内で言ってる場合はまだいい 客先で言ってないか心配 falseがいまだにフォールスと読めない
859 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 18:55:00.54 ID:dLMOYH7h.net] 英語なんて下層階級発音の言語をありがたがってもしょうがない。
860 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:03:21.02 ID:jR4emiFb.net] 英語はまだ覚えやすいんだよ 他は動詞活用や時制や男性名詞や女性名詞とか覚えることがえらく多い
861 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:06:57.00 ID:hL7m84GO.net] charは英語でもチャー派とキャー派の両方いる でも日本語ならキャラ一択だな iterをイター、dirをダーと発音する人いないよね?
862 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:10:55.28 ID:2oX7OuW7.net] プログラミング用語は口語じゃないからな・・・
863 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:20:27.11 ID:JoQ1XY7q.net] >>845 日本語が上級って冗談だろ?
864 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:21:33.76 ID:jR4emiFb.net] >>847 char aznableのシャア派はいないのか? CHR$のころならキャラもありだけど
865 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:24:37.98 ID:jR4emiFb.net] int イント イントゥ インテジャー アイエヌティーと呼ぶ人もいるとか
866 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:25:49.84 ID:dLMOYH7h.net] >>849 大母音推移で調べてみ。
867 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:31:40.43 ID:jR4emiFb.net] 台拇印推移って英語で中世に起こったやつだろ?
868 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 20:13:07.52 ID:Ocz5NWuM.net] 英語人の発音なんて知らんよ。 日本方言が標準語になるようにどんどん押し付けて行けよ。
869 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 20:35:42.72 ID:jR4emiFb.net] 中世に母音がずれてってスペルと発音がずれてしまった
870 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 20:43:18.98 ID:2oX7OuW7.net] ナルトとかドラゴンボールみたいな日本作品を海外放送するときに日本語っぽい発音を使わせよう
871 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 23:24:21.45 ID:lxH9sQqR.net] 世界的に見ても英語は最も訛りが酷いのでそれほど気にする必要はない アジアをエイジアと田舎訛りで発音するのも英語だけ
872 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 23:38:42.55 ID:DzsA87OB.net] >>836 European、American、Russianが本当の人間、〇〇〇eseは彼らの感覚では亜人種 「ese」を使って「軽くバカにする」のは「journalese」や「officialese」とう言葉です。
873 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 00:20:04.45 ID:VToiRT0b.net] tauriがcargoだけでセットアップできれば即導入するんだけどなー
874 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 00:54:52.60 ID:ML6XVFuw.net] html+jsベースのアプリのネイティブのバックボーンがtauriじゃないの? cargoでセットアップできてもあまり意味がない気がするけど yarnとかじゃないとj
875 名前:sやtsのパッケージ部分がつらそう [] [ここ壊れてます]
876 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 03:24:46.64 ID:sDo98BDo.net] >>859 既に前スレで出ているように Tauriはcargoだけで利用できます npmやNode.jsなどのJavaScript環境は全く必要ないです https://mevius.5ch.net/test/read.cgi/tech/1644596656/192 >>860 Webサイトを自分でJavsScript書かなくてもRustのみで構築できるように Tauriでも同様にWasm利用のRustによるフレームワークを使ってRustのみで可能です 糊しろ部分のJavaScriptコードは自動生成されるため気にする必要がないです
877 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 03:51:12.40 ID:a115LlJm.net] Yewが1.0.0になってMaterialUIのcrateできたらやるわ
878 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 04:10:46 ID:P5woiaAK.net] Tauri以上に未完成なYewとか本当に触るだけだなこんなので何が出来るんだよw ツールチェインの導入だけでこのスレの99%がギブアップするな間違いない
879 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:19:44.58 ID:fwy13iz2.net] YewはReactと比べてライフサイクルや状態管理はどうなん?
880 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:32:21.26 ID:zvsRNXTt.net] >>862 Rustでは大半がメジャーバージョン0なのを知らないのか 例えばcargoは最新が0.62.0 1.0.0にならないから使わないのか? Yewのmaterial UIならば material-yew crate デモ https://yew-material.web.app/components >>863 ツールチェーンの変更は不要 必要なのはtargetとなるアーキテクチャのインストール rustup target add wasm32-unknown-unknown この1行で済むから悩むところもない その後のbuildでのtarget指定などはtrunkで全自動化されてるから指定不要 難しいところは何もない Rustコードを書くだけ
881 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:36:49.21 ID:o4L2em1r.net] >>865 https://yew-material.web.app/components Bottom Bar Navigationが無いやり直し
882 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 08:37:01.16 ID:a115LlJm.net] >>865 randとかの準標準系ライブラリはまた別かもしれないけど、semverの一般論として0.y.zは更新を追い続ける気のある暇人&人柱向けでしょうが 使ってほしかったらこんなところでレスバしてないでバグ出してパッチ書いて1.0.0リリースするの手伝いなさい
883 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:13:40.00 ID:YcISn7cj.net] >>867 本気でそんなこと言ってるなら笑う 使っているクレートほとんどが0.y.zだぞ Rustで1.0.0にこだわる人を初めて見た
884 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:56:29.17 ID:ZOhmOvih.net] まぁ
885 名前:semverの一般論としては1.0.0より前は互換性の制約一切ないからそれは正しいんだが Rustの場合0.y.zの互換性について独自拡張しているから1.0.0に上げなくても問題ないというのはある [] [ここ壊れてます]
886 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 10:23:14.18 ID:9VaR/Lj4.net] YewやPerchやseedが流行るとは思えないけどねじゃあ何が流行るんだって話だけどwasm自体が流行らないと思うわ だってどこまでいってもwasmの用途がブラウザ上で実行されるウェブアプリだからな Electronはクロスプラットフォームなネイティブデスクトップの代替を狙って成功してそれを高速化・軽量化したTauriの方が受け入れられると思う そもそもwasmのエコシステムが貧弱すぎてウェブで飯食ってるやつらがRust覚えるとは思えない
887 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 10:38:49.39 ID:uZ5q0lb+.net] 若いのにバージョン8.0とかになってるライブラリよりはバージョン0.8.100なライブラリを使いたい
888 名前:デフォルトの名無しさん [2022/06/23(木) 11:02:58.65 ID:t/xdYxij.net] wasmのistioのように拡張機能を書くのに使われるんじゃないの あとはluaの置き換えとか ただウェブアプリなんてのはまったく理解してないアホの考えだな 俺はwebで使ってるけど
889 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 11:08:05.69 ID:YcISn7cj.net] >>870 wasmを理解できていない とっくにブラウザと切り離され発展していってる >>871 同感 メジャー番号がデカい=破壊的バージョンアップを繰り返している だもんな
890 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 11:21:57 ID:LDpjmPqL.net] まぁUnityとかLua置き換えとかそういうニッチで局所的に使われるだけだわな それだと尚更ここでYewなんて布教してる奴はアホだって証明されちまったな
891 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 12:11:50.02 ID:/pvCP+jT.net] wasmは事実上エッジコンピューティング専用だぞ
892 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 12:19:37.05 ID:1B2ALjfI.net] ちみたちが全否定してボロクソ言われてるElectronが人気出てちみたちも使ってるであろうVSCodeもElectronなのだよ そして今ちみらが全否定しているTauriはきっと人気がでるのだ
893 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 12:28:47.04 ID:XUWHXIGl.net] >>876 C++、JavaScript、Pythonあたりのバインディングが実装されれば人気が出るかもね。
894 名前:はちみつ餃子 mailto:sage [2022/06/23(木) 12:31:55.63 ID:78TA9iC2.net] >>875 そうでもない。 クラウド内でも実行中のプロセスを他のノードに移動させて負荷を平均化するなどの用途に使える。
895 名前:デフォルトの名無しさん [2022/06/23(木) 12:42:46.04 ID:OzGiFUhU.net] ちょっと前までRustなんて流行らないと喚いてたアホが別のところにケチをつけはじめたな 流行ってるPHPでもやっとけ
896 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 12:52:55.59 ID:fdtlx8br.net] ウェブでwasmを使っているケースは増える一方 加えてCDNエッジなど含めた高速で安全な共通サンドボックスとしてもwasm採用 wasmを軽視してる人は間違いなく時代に取り残された人
897 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 13:27:54.60 ID:xTWjwHox.net] たしかにCloudflareとかFastlyがすでにやってるように、wasmが一番使われるのはアプリケーションのホスティング関連ではありそう
898 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:25:29.85 ID:aX6KFPJR.net] オジ必死すぎやろww wasmの前に汚文章を見直そうぜ
899 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:13:21.06 ID:fwy13iz2.net] wasmは、アーキテクチャ共通の中間コードを生成する点、主要webブラウザ上では既に完璧に動作する点、当然ながらマルチスレッドに対応している点が良い 開発者側は自社スマホゲームをPWA化してアプリストア手数料を取られずに内課金を実装できる、バイナリだから難読化済み、アプリ動作も高速と、いいこと尽くめ
900 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:38:33.22 ID:fwy13iz2.net] wasmについての記事はこれがわかりやすい https://qiita.com/t_katsumura/items/ff379aaaba6931aad1c4
901 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:48:19.80 ID:mKYvHwUN.net] アプリをPWAにして独自決済にすれば手数料を取られない!ギャグだろwww え?ここってホビープログラマーがオナニー見せつけて気持ち良くなるレベルのスレだったっけ?www WASMガイジが暴れて出して何かと思ったらお花畑でクッソワロタ
902 名前:デフォルトの名無しさん [2022/06/23(木) 17:49:46.75 ID:OrheE29P.net] 無知がバレたから話をそらして挽回しようとするアホの図
903 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:59:44.02 ID:fwy13iz2.net] 気を悪くさせたのなら申し訳ない
904 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 18:01:07.00 ID:fwy13iz2.net] 個人的には審査の通らないスマホエロゲとか発展しそうでいいかと思ったんだけど
905 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 18:22:09.53 ID:D2eUSbXw.net] 散々wasmを誉めそやして語って布教した結論がスマホエロゲ 5chで他言語を見下してドヤ顔してるRustスレの奴等なんて所詮こういう陰キャチー牛エロゲオタで草
906 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 18:24:46.62 ID:2tFofWlQ.net] このスレでRustスゲーするのは理解できる wasmスゲーは違うかと
907 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 18:35:17.77 ID:fwy13iz2.net] じゃあみんなこっちにもきてよ 【wasm】ブラウザでC++。Emscriptenを語ろう https://mevius.5ch.net/test/read.cgi/tech/1547549448/
908 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 18:43:49.69 ID:/gLCWYHm.net] エロは儲かる
909 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 20:11:26.77 ID:fdtlx8br.net] wasmを使うならRustだからだろう GC言語では本末転倒 C++よりRustという当たり前の結果 > https://www.atmarkit.co.jp/ait/articles/2107/08/news112.html > 「WebAssemblyアプリケーションの作成に使用している言語は何か」と質問したところ、Rustが最も多くの回答を集めた。 > 「WebAssemblyアプリケーションの作成に今後最も使用したい言語は何か」という質問でも、Rustを挙げた回答が最も多かった。
910 名前:はちみつ餃子 mailto:sage [2022/06/23(木) 20:17:33.07 ID:78TA9iC2.net] Wasm の側に GC を入れる提案も出てはいるので将来的にはどうなるかわからんぞ。
911 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:05:12.10 ID:0lumrgPj.net] >>873 1.0未満のバージョンって仕様自体fixしてなくて予告なく破壊的変更入る可能性があるのが普通だと思ってた。
912 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 23:25:11.97 ID:isDmg9ti.net] 窓の杜: C++言語によるお嬢様コーディングがブームの兆し!?. https://forest.watch.impress.co.jp/docs/serial/yajiuma/1419370.html メモリをしっかりお片付けなさりたいのならRustを使いませんこと?
913 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 23:27:10.78 ID:yevGv1hT.net] お嬢様コーディングなんて流行ってねえよ お嬢様言葉自体流行ってないのに
914 名前:デフォルトの名無しさん [2022/06/23(木) 23:28:00.25 ID:N/ehCqi3.net] >>895 普通はそうだ。でももちろん例外だってある。 その辺は開発者組織の感性しだいだな。 何年もずぅ~っとβ版のプログラムだってあるだろ。
915 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 23:56:18.80 ID:CfsYAKzO.net] >>895 自分たちが使っているcrateのtreeを見れば分かる 大半がバージョン0 それで誰も困っていない
916 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 23:59:26.92 ID:CfsYAKzO.net] >>894 GC導入は各言語であまりにも異なるため失敗した 各言語が様々な形でしている効率的な方法は取れない WebAssemblyはRust一強が続くだろう
917 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 00:03:12.87 ID:Z/7Mth9k.net] >>896 Rustはなんだかゾクゾク
918 名前:しますぞ!!これは服なぞ着てる場合ではありませんぞ!! [] [ここ壊れてます]
919 名前:デフォルトの名無しさん [2022/06/24(金) 04:06:11.87 ID:aL7/n23O.net] 赤いの黙ってて
920 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 06:23:10.42 ID:EMaN3eAt.net] >>897 ネタに全力でレスすんなよw
921 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 09:12:28.24 ID:rZmITKBS.net] まあクソネタにはクソって言っとかないと本当にウケてると思っちゃうやついるからね
922 名前:デフォルトの名無しさん [2022/06/24(金) 09:18:36.99 ID:8+vtapEb.net] だっさ
923 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 09:46:26.14 ID:ZKGFoh0M.net] そうそう、クソネタにはそうやってダサいと言っておかないと
924 名前:デフォルトの名無しさん [2022/06/24(金) 09:50:10.56 ID:K2we1Lar.net] >904 +1
925 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 10:05:30.32 ID:0NSCQb1H.net] スルースキルが皆無なのですわ 荒らし様にお引き取りいただけない訳も推して知るべしですわね
926 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 10:21:55.48 ID:ZKGFoh0M.net] >スルースキルが皆無 誰も自己紹介なんて頼んでないのに…
927 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 17:42:51.52 ID:EMaN3eAt.net] ネタにレスして顔真っ赤w
928 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:06:17.36 ID:3e9x6I/t.net] wasmって流行ってるけどコード量膨大に増えすぎないか?
929 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:14:59.98 ID:FArw1u5A.net] フロントエンドの奴らが rust を使ってるの見てらんない。 TS で無難に書いておけばいいよ。
930 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:41:14.48 ID:eHTn7QRG.net] >>911 流行ってません
931 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:41:45.02 ID:eHTn7QRG.net] 脳内をハッキングでもされてるのか?
932 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:48:58.86 ID:+JdvQwfN.net] >>911 javaの中間コードよりマシ
933 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 22:46:43.70 ID:/25pqsku.net] ところでものすごい今さらなんだが wasm は何て読むんだ? ワスムか
934 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:21:33.67 ID:KLiHHhJ8.net] ネイティブはだいたいワズムとかウォズムみたいに発音しているような気がする
935 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:23:01.01 ID:g65423tt.net] この動画では冒頭でwasmをワスムって言ってる https://youtu.be/nW71Mlbmxt8
936 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:28:47.07 ID:wBI1zPp0.net] >>918 これはワズムっていってないか?リスニングはからっきしのゴミ耳だからよくわからんけど
937 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 01:14:39.07 ID:JyoKDUES.net] ワズムて連呼しとるね isの過去形のwasにm
938 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 02:13:22.50 ID:APixfc76.net] >>911 コード量ってなんのこと?
939 名前:デフォルトの名無しさん [2022/06/25(土) 09:56:07.84 ID:pPSG+F7f.net] ダブルアセムって脳内で読んでたわ
940 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:14:25.56 ID:APasFGX+.net] asm.js(アズム ジェイエス)が進化してwasm(ワズム)に
941 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:21:42.97 ID:hQoUoumV.net] 英語できねーおっさんが蘊蓄垂れてクソワロタwww お前らマジでプライドだけは一流の無能おじで草
942 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:50:44.23 ID:f+PJ3XzM.net] ウェブアセンブラっていみジャネーの?
943 名前:はちみつ餃子 mailto:sage [2022/06/25(土) 13:18:50.95 ID:jO6HH2tH.net] >>925 もちろん Wasm は WebAssembly の省略形だよ。 公式にもそう書いてある。
944 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 13:29:07.82 ID:/zwkJ/mi.net] それはみんな知っての上でレスしてるのに >>925 みたいな周回遅れのレスを堂々と付けれるやつって 脳みその構造どうなっとんやろな
945 名前:デフォルトの名無しさん [2022/06/25(土) 13:52:40.86 ID:23CjKpU2.net] wasmは俺が育てた!(AAry
946 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 14:34:43.26 ID:tSCqWCmZ.net] きみたちもうちょっと真面目にやりなさい
947 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:17:36.49 ID:VflkbZsO.net] >>926 じゃあ、ウェブのアセンブラって意味で良いんじゃないの?
948 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:25:02.65 ID:bv95EvGA.net] WebAssemblyは仮想命令セットアーキテクチャあるいはプログラミング言語の一種である。略称はWasm。C・Rustなど様々なプログラミング言語のコンパイルターゲットとしてWasmバイナリは生成され、ウェブブラウザを含む様々な環境内のスタックベース仮想マシンにより実行される。 ネイティブコード相当の高速性・隔離環境でのメモリ安全な実行による安全性・仮想マシンによるハードウェア/プラットフォーム可搬性・ソースプログラミング言語中立性などを特徴とする[4]。この命令セットはバイナリ形式で定義されており、またアセンブリ言語ライクなテキスト形式も定義されている(その意味で低水準プログラミング言語といえる)。 Wasm自体は命令セットアーキテクチャであり、Linuxカーネルが提供するようなシステムコール(例: ファイルI/O)、Webブラウザが提供するようなDOMアクセスなどを提供していない。上記の安全性や可搬性はこの特徴に由来している。それと同時に、WasmエコシステムとしてはシステムコールやDOMアクセスがAPIとして個別に定義されており、Wasmランタイムが実装することでそれらの機能を提供している(例: システムコールを提供するWASI)。シンプルでオープンなISAとランタイムごとのAPIを組み合わせることでWasmエコシステムは高い拡張性を有している。例えばWasmをHTTPプロキシでのフィルタスクリプトとして利用するプロジェクトが存在する。 https://ja.m.wikipedia.org/wiki/WebAssemblyより
949 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:32:39.09 ID:tfc1tmd2.net] >>930 >>931 にあるように、ウェブのアセンブラという解釈は間違ってる。 ウェブアセンブリっていう名前なだけ。 わかった?
950 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:35:16.83 ID:KZ/E7BkI.net] 現実問題としてWasmはRustで書くのがベストソリューション
951 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:35:55.67 ID:VflkbZsO.net] 三行以上書かれても わかるわけない 常識
952 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:36:39.28 ID:UfyFqt6J.net] 仮想マシン上で動くという点でWASMはJavaと一緒だな
953 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:39:32.24 ID:Ho0z1jTS.net] >>930 そもそもアセンブラとかいってる時点でなにもわかってないから相手にするだけ無駄、無視推奨
954 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:45:57.58 ID:VflkbZsO.net] Rustで書くとバイナリ肥大化するから、WATが基本になりそうでは?
955 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 15:53:47.79 ID:l76RX7xy.net] >>935 javaの問題をある程度解決したのがwasmっていう認識でおけ?
956 名前:デフォルトの名無しさん [2022/06/25(土) 16:03:23.70 ID:9jpr7vFN.net] それな。Javaっぽくwebvmとかwebバイナリとかいった名前の方が分かりやすかったんじゃなかろうか
957 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:05:36.45 ID:VflkbZsO.net] 貴様に正義があるというのなら、三行以内で示せ。
958 名前:はちみつ餃子 mailto:sage [2022/06/25(土) 16:05:54.41 ID:jO6HH2tH.net] >>930 仮にウェブのアセンブラだとして、ウェブのアセンブラってなんやねん……
959 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:07:10.43 ID:ILDlrGK/.net] WebAssemblyはJVMやeBPFのリバイバルではない WasmがWeb以外でもアツい理由 - ログミーTech https://logmi.jp/tech/articles/324956 スライド画像 https://img.logmi.jp/article_images/Jq1SrATqsEYupEF4aeAh6j.png https://img.logmi.jp/article_images/HxUso3S1L63MXwia5RxGXd.png https://img.logmi.jp/article_images/CntVo54bYF2MXnib2EXGei.png https://img.logmi.jp/article_images/VLPRht2v3NnzzWyWP1pvrs.png https://img.logmi.jp/article_images/SsS6T6EZrrPaWCSi5xq2bJ.png https://img.logmi.jp/article_images/2Miy64H2xW7RnWCRGGJDAQ.png https://img.logmi.jp/article_images/F2UYcDuwsrybfB6F4npBDL.png https://img.logmi.jp/article_images/GC6f4J9DHeoEaTQGXaKacJ.png
960 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:08:16.68 ID:VflkbZsO.net] >>941 俺の予想では、それが質問内容だと思います。
961 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:08:25.01 ID:ILDlrGK/.net] >>938 これ>>942
962 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:15:09.41 ID:akwg01K7.net] 複オジばりの汚文章でワロタ 中身がなさすぎ
963 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:15:26.89 ID:KYOYlq4y.net] >>943 wasmの読み方じゃなかったっけ?
964 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:19:32.95 ID:VflkbZsO.net] 読み方は、ワッセンブラで決まりでしょう。
965 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:20:56.33 ID:XFOsSqRc.net] DOM・シャドーDOM操作が遅いからwasmはあまり流行らない、これを何とかしない限り、シコシコts書いてるオジサンが量産される
966 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:25:58.06 ID:a5vhFArq.net] >>947 >>917-920 あたりが答えです
967 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:29:05.96 ID:VflkbZsO.net] 俺は白人の読み方なんか認めんよ。 中国ならまだしも。
968 名前:はちみつ餃子 mailto:sage [2022/06/25(土) 16:33:30.99 ID:jO6HH2tH.net] 命名の伝統としてちょっとしたネガティブワードを使うことがあるんだよ。 いわゆるギークセンスというやつだが、日本語でいう中二病に近い。 GIMP の名前を変えるためにフォークするだのなんだのでもめたことがあるの知らんか? Wasm もそれと同じようなノリなんじゃねーの? https://eow.alc.co.jp/search?q=wasm
969 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:35:39.94 ID:VflkbZsO.net] >>951 じゃあ、ワッセンブラでいいじゃん。
970 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:39:47.09 ID:ljJSN7j6.net] >>952 きみはそう呼んでればいいと思うよ きみにそう呼ぶ機会はないと思うけどw
971 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:43:21.45 ID:VflkbZsO.net] 菅総理が、我が国はワッセンブラに注力すると宣言したら、どうするんだよ?
972 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:47:50.00 ID:Xmq8wuxM.net] なるほど、、?(わからん) WebAssembly Reference Typesで、WasmでDOMを操作する壁がここまで下がった https://zenn.dev/igrep/articles/2021-11-wasm-reference-types
973 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 16:50:02 ID:R8NAfVhJ.net] DOMってなんだ?(←自分で調べろ)
974 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:02:05 ID:WInGVki9.net] >>956 DOMとは?わかりやすく解説する! | イバログ https://gyroibaraki.com/dom/
975 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:04:38 ID:Ch122rDL.net] DOM操作なんか、どうやっても遅いんだからワズムからいじる必要ないだろ
976 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:08:43 ID:/UVjDglo.net] DOM操作は流石にJS系でやればよくね?
977 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:19:33 ID:XFOsSqRc.net] そんなことはない、JSやTSのようなダメ言語を排して、全部ほかのコンパイル型言語で統一して書けるように考えたのに 遅いなら話にならない。うんこ
978 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:32:09.99 ID:KYOYlq4y.net] wasmはjsを置き換えるものではないっていう方針がよくわからんな。置き換えていいのに。
979 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:33:38.66 ID:Ch122rDL.net] タイプスクリプトでドム操作書いてみたら分かると思うけど、キャストだらけになる
980 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:38:33.58 ID:Sl1k0I/l.net] WebAssemblyはJavaScriptを置き換えようとしていますか? いいえ!WebAssemblyは、JavaScriptを補完するものであり、JavaScriptを置き換えるものではないように設計されています。WebAssemblyは、時間の経過とともに多くの言語をWebにコンパイルできるようになりますが、JavaScriptには信じられないほどの勢いがあり、Webの単一の特権( 上記のとおり)動的言語のままです。さらに、JavaScriptとWebAssemblyは、さまざまな構成で一緒に使用されることが期待されています。 ・JavaScriptを活用して物事をつなぎ合わせるコンパイル済みのC++アプリ全体。 ・WebAssemblyで制御されるメインのセンターキャンバスの周りのHTML/CSS / JavaScript UIにより、開発者はWebフレームワークの力を活用して、アクセス可能なWebネイティブな感覚のエクスペリエンスを構築できます。 ・ほとんどの場合、いくつかの高性能WebAssemblyモジュールを備えたHTML / CSS / JavaScriptアプリ(たとえば、グラフ化、シミュレーション、画像/音声/ビデオ処理、視覚化、アニメーション、圧縮など、今日asm.jsですでに見られる例)開発者が今日のJavaScriptライブラリと同じように人気のあるWebAssemblyライブラリを再利用できるようにします。 ・WebAssembly がガベージコレクションされたオブジェクトにアクセスできる:ユニコーン:ようになると、それらのオブジェクトはJavaScriptと共有され、独自の壁に囲まれた世界には存在しなくなります。 https://webassembly.org/docs/faq/#is-webassembly-trying-to-replace-javascript より
981 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:57:29.10 ID:qzsUrSUG.net] なるほどね
982 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:59:58.79 ID:9jpr7vFN.net] ははーん、ユニコーンね
983 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:04:46.90 ID:ndOOnBgl.net] https://github.githubassets.com/images/icons/emoji/unicode/1f984.png
984 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:08:27.82 ID:57CBQU6k.net] 🦄
985 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:58:37.73 ID:VflkbZsO.net] いいわー ワッセンブラいいわー。
986 名前:デフォルトの名無しさん [2022/06/25(土) 20:26:19 ID:bZig/WUT.net] スレチおるど
987 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:42:14.67 ID:hVwOcYNS.net] DOMてアレやろ、
988 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:55:47 ID:Bztv57SD.net] ドムとかユニコーンとかガンダムかよ
989 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 23:21:23 ID:/UVjDglo.net] tenplate要素使ってDOMツリー作ってそこに値や要素追加して表示しろって言われた時は訳わかんなかった
990 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 23:22:45.89 ID:Ch122rDL.net] >>972 スペル間違うぐらいなら無理せずカタカナで書けよ
991 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 23:35:08.74 ID:3qOpf/5R.net] フロントに全く興味ない奴らが無理してrust使おうとしてるってのがもうクソだわ
992 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 23:57:43.41 ID:sDy4bz93.net] Stringの中身が変化してほしい時のtrim()はどうすればよいですか?
993 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 00:30:53.23 ID:J3iRsr8e.net] 自分では何も思い付かないんですか?
994 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 00:41:24.45 ID:DP2sbpoK.net] >>942 なぜ無駄に高解像度なのか
995 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 01:12:05.67 ID:82o8ItO8.net] s.retain(|c| !c.is_whitespace());
996 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 01:14:23.73 ID:82o8ItO8.net] 中間のスペースも削除されるのか
997 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 04:54:09.98 ID:mBbZ0Pti.net] >>979 そりゃそうだろw 後側の削除だけならtruncateすればいいんじゃね? let mut s = String::from("てすと "); let end = s.rfind(|c: char| !c.is_whitespace()).unwrap(); s.truncate(end + 1); thread 'main' panicked at 'assertion failed: self.is_char_boundary(new_len)' ダメだった…
998 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 05:14:19.98 ID:vh+TaUjL.net] s.truncate(s.trim_end().len())
999 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:52:06.13 ID:KbueaMTO.net] panic する理由を理解したほうがいいよ
1000 名前:デフォルトの名無しさん [2022/06/26(日) 17:08:41.82 ID:afHQr9JE.net] Linus「メモリ確保でpanicするって?認めんわ断じて認めん、ワシの目の黒い内は許さんぞ」
1001 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 17:27:36.02 ID:nfXqcTpP.net] 宇宙じゃ。宇宙のせいじゃ!
1002 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 17:36:15.17 ID:DrXudPeH.net] Linuxの話題は、あわしろを召喚しちまうから、やめとけ
1003 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 17:36:30.96 ID:TFpQVi1k.net] >>983 青いからセーフ
1004 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 18:43:28.30 ID:82o8ItO8.net] fn
1005 名前: trim_in_place(s: &mut String) { if let Some(offset) = s.find(|c: char| !c.is_whitespace()) { s.replace_range(..offset, ""); } s.truncate(s.trim_end().len()); } 前後で非対称なのが気になるけど文字境界をうまく扱えるStringのメソッドが他に見つからなかった [] [ここ壊れてます]
1006 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 21:34:33.23 ID:xXnnisch.net] > s.find(|c: char| !c.is_whitespace()) rustってこれうまいこと関数名だけ渡せないんだっけ? しかも関数合成できれば s.find(char::is_whitespace . not) みたいに書けたり?
1007 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:00:29.06 ID:ZYHqIh+i.net] 5chでまともな回答期待する方が頭おかしいことになぜ気付かないんだ redditでDeepL使って英語で海外ニキに質問した方が1億倍まともな回答くれるぞ
1008 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 23:10:04.56 ID:Y8S6yv8a.net] >>988 関数を自分で定義しとけばわたせるけど 合成しながらだとマクロ使わないと無理なんじゃないかな
1009 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 23:57:49.73 ID:VW+uLNTw.net] >>461 メソッドを増やす時にOrphanルールで出来ないとしたら それは標準ライブラリ含めて他人が書いたトレイトを他人が書いた型に適用する場合 スライスへfindメソッドを増やすことはそれに該当しないため出来る 適当なトレイト名SliceFindMethodを用意してスライス[T]にメソッドを実装すればよい trait SliceFindMethod<T> { fn find(&self, pattern: impl SliceFindPattern<T>) -> Option<usize>; } impl<T: PartialEq> SliceFindMethod<T> for [T] { fn find(&self, pattern: impl SliceFindPattern<T>) -> Option<usize> { pattern.slice_find(self) } } 文字列へのfindと同様に様々なパターンに対応できるよう 適当なトレイト名SliceFindPatternとそのメソッドslice_find()を用意し様々な実装をすればよい 長くなるので全体のコード https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9110b8c76b17fb479bfef80e1f10182d これでスライスの一種であるバイト列に対してもfindが適用できる let buffer: &[u8] = b"ABCDEFGHIHJKL"; assert_eq!(Some(5), buffer.find(b'F')); assert_eq!(Some(3), buffer.find(b"DEF"));
1010 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 00:08:38.77 ID:xVflpq4r.net] >>989 プログラミング情熱のある2-30代の集う板じゃなく プログラミングはもう碌にしないおっさん・爺が多数の板だからな 質問してもおいおいな回答になるのは仕方ない
1011 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 00:54:52.23 ID:7xcJ7izy.net] >>989 翻訳の話題はあわしろを召喚しちまうからやめとけ。
1012 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 02:47:29.39 ID:52L0v8L5.net] null ぬる なる
1013 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 04:40:51.89 ID:KgP+fmt3.net] rust cliコマンドがなぜrustupなのか誰も疑問に思わんの? 俺はこのupがなんなのか気になって調べても分からなくてイライラする rustup updateとかものすごく気に入らないしそもそもrustupとcargoがあるのもややこしい
1014 名前:デフォルトの名無しさん [2022/06/27(月) 08:27:05.49 ID:SVONOTxH.net] 慣用句の意味を調べるときは"で括るんやで
1015 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:27:50.24 ID:gDlfKP6u.net] >>995 今はrustcやrustfmtなど含めて全て実体は同じでハードリンク cargoが各ワーキングディレクトリに対して適用されるのに対して rustupは全体に適用されるため 同じ名前のサブコマンドでも全く異なる
1016 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:28:40.38 ID:gDlfKP6u.net] 次スレ Rust part16 https://mevius.5ch.net/test/read.cgi/tech/1656285423/
1017 名前:デフォルトの名無しさん [2022/06/27(月) 10:40:27.69 ID:B/Kpn5Aj.net] Slot 💣🎴💣 🎰🎰🌸 🌸😜👻 (LA: 2.02, 1.95, 1.85)
1018 名前:デフォルトの名無しさん [2022/06/27(月) 10:40:32.55 ID:B/Kpn5Aj.net] Status ♥5 ♣8 ♠7 HP: 1000 pts. たぶん(0) 2.02, 1.95, 1.85(904.632812) Proc. [0.187892 sec.]
1019 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 45日 16時間 12分 12秒
1020 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています