Rust part31 (675レス)
1-

1: デフォルトの名無しさん [] 2025/07/03(木) 21:30:06.95 ID:ORBrZxS2(1) AAS
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

公式ドキュメント
https://www.rust-lang.org/learn

Web上の実行環境
https://play.rust-lang.org

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

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

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

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

前スレ
Rust part30
2chスレ:tech

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
2chスレ:tech
576: デフォルトの名無しさん [sage] 2025/07/29(火) 23:29:05.70 ID:gZolU48c(2/2) AAS
机上の計算量だけ見ていてもダメで必要な箇所は比較計測になる
そこでのRustは選択肢を広げてくれた存在
577: デフォルトの名無しさん [sage] 2025/07/29(火) 23:41:21.56 ID:4+dSqHol(1) AAS
大きな2次元配列で2次元のどちらを基準に全走査するかで桁違いに速度が変わるのもCPUメモリキャッシュのせいだよな
そのへん考慮できない人はプログラマに向いていない
578: デフォルトの名無しさん [sage] 2025/07/30(水) 00:05:02.69 ID:2CCQm4VI(1) AAS
マイクロマネジメントをな、マイクロマネジメントをいつでもサボれるくらいになりなよ
579
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 00:46:05.33 ID:zYz0+G1r(1/4) AAS
>>575
それは小さいデータのときだけ
計測してみろよ
特殊な前提なのに話を一般化すんなよ
580
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 00:51:05.39 ID:6h+f7gEs(1) AAS
ほらやっぱり
複オジは「計算量」を理解していないだろ?
581
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 01:15:10.54 ID:ZVYNNQCS(1) AAS
ベクタは確保メモリサイズを超えると別メモリへの移動ペナルティが発生するにも関わらず、
ベクタへのデータの追加操作はベクタのサイズに関わらずO(1)とされる。
これはデータを2^n個追加した時の累計メモリ移動は最悪時でも、
1+2+4+8+...+2^(n-1)=2^n-1個のメモリ移動しか発生しないためである
582: デフォルトの名無しさん [] 2025/07/30(水) 06:58:14.11 ID:dn+Bg3eY(1) AAS
・超指向性スピーカーを使用して統合失調症の周囲で殺人をしたと話していたのですがご存じの方知りませんか?

【兵庫県知事問題】「斎藤知事動画はバズる」と直感、編集して1500万再生 中傷動画も発信した男性(31)の後悔 [ぐれ★]
2025/07/29(火) 21:04:36.36
2chスレ:newsplus

こちらの方は後悔しているけれど
統合失調症周囲の人間は逆の精神状態の下記の人物

「仕事はデキるのに…」異常で執拗なパワハラをする“ダーク・トライアド“と呼ばれる、職場のヤバい人たち [パンナ・コッタ★]
2025/07/30(水) 02:17:10.53
2chスレ:newsplus
583: デフォルトの名無しさん [] 2025/07/30(水) 10:38:53.50 ID:kDw0lUC7(1) AAS
Rustが糞遅いのはこういうのも関係してるんだろうな
584: デフォルトの名無しさん [sage] 2025/07/30(水) 10:55:36.76 ID:HGz1hbaM(1) AAS
>>580
complexityを計算量と訳したバカのせいで新しいバカが量産されてる
585
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 15:55:46.79 ID:gxsH3v1Z(1) AAS
>>579
データが大きくても係数の差が次数の差より影響することは普通にありえる

キャッシュミスしまくるがO(n)で済むアルゴリズムと
ほぼキャッシュヒットしまくるがO(n·log(n))かかるアルゴリズムがあるとしよう
両者のアルゴリズム自体の係数差は単純にnとn·log2(n)とする
例えばn=2^30≒10億の場合はアルゴリズムの差でlog2(2^30)=30倍の差が生じる
ところがキャッシュミスするとメモリアクセスの差で300倍遅いことが現代のCPUでありえる
そのためキャッシュミスしまくるO(n)よりもO(n·log(n))が速く実行されることが起きる
586: デフォルトの名無しさん [sage] 2025/07/30(水) 16:10:27.29 ID:aMDk5tN6(1) AAS
だからさー計算量ってそういう比較をするためにあるんじゃないんだって
CS101の超基礎だからちゃんと勉強しなよ
587: デフォルトの名無しさん [sage] 2025/07/30(水) 16:28:45.91 ID:zYz0+G1r(2/4) AAS
>>585
はいはい
計測してからほざけ
588: デフォルトの名無しさん [sage] 2025/07/30(水) 17:11:45.14 ID:cfT0F8KB(1) AAS
実効速度の比較の場合
計算量はNが無限近くに大きい時のみ有効なんだよ
Nが無限近いと係数がいくら大きくても無視できる
ところが現実にはコンピューターで扱えるNは小さな有限値だから係数を考慮しないと実効速度は逆転しちゃう
589: デフォルトの名無しさん [sage] 2025/07/30(水) 18:05:23.41 ID:Kp0t8wWh(1) AAS
O(1)とO(n)の話だったのにO(n)とO(n log(n))にすり替えて自己正当化しようとするところがいかにも複おじ仕草
590: デフォルトの名無しさん [sage] 2025/07/30(水) 19:07:56.72 ID:hgMZBDIB(1) AAS
>>581
そのメモリ移動もまとめてキャッシュに乗るから速いね
591: デフォルトの名無しさん [sage] 2025/07/30(水) 19:41:04.04 ID:ZSzdQGzh(1/5) AAS
DDRn-SDRAMからキャッシュへのfetch時間は、12(ns)位だから、メモリコントローラが賢ければ、
3GHzのCPUの場合、36クロック位で済むので、めちゃくちゃ遅いわけではない。
592: デフォルトの名無しさん [sage] 2025/07/30(水) 19:44:24.21 ID:jptgQq59(1) AAS
で、結局Rustでは実際どういうときにリンクトリスト使うの?
593: デフォルトの名無しさん [sage] 2025/07/30(水) 20:03:01.97 ID:ZSzdQGzh(2/5) AAS
Grokによれば、以下のように、DDR5 SDRAMからキャッシュに乗せるまでの時間は、8〜20(ns)程度らしい。
これは、3GHz の CPU だと 24〜60 (クロック) 程度に相当する時間。ものすごく遅いわけではない。

実測値として、Intelのx86 CPU(例:12th/13th/14th Gen Core)+DDR5構成でのプリフェッチ完了時間は、以下のように報告されています():標準的なDDR5-4800構成:約15〜25 ns(L1/L2へのプリフェッチ)。
高性能DDR5-7200構成:約10〜20 ns。
最適化された環境(低CL、オーバークロック):8〜15 ns。

594: デフォルトの名無しさん [sage] 2025/07/30(水) 20:11:57.87 ID:ZSzdQGzh(3/5) AAS
大体で言えば、32バイト位の領域がキャッシュに乗っていない場合に、24〜75 (クロック) 程度の追加時間が必要になる。
しかし、そこから連続するメモリーにアクセスしている場合には、追加時間は 0 クロック。
通常、1つの構造体やクラスに対してまとまって処理するが、処理に本質的に必要な時間が 100 クロックだとすると、
そこに、24〜70 クロック程度が上乗せされることになる。だから、トータルだと、24%〜75% 程度、処理時間が
長くかかる、ということになる。
もしも、本質的な処理に必要な時間が 10 クロックのように非常に粒度が小さい処理の場合だと、
キャッシュに乗っていれば、10 クロックだけで済むところが、34〜85 クロックかかることになる。
その場合は、3.4倍から8.5倍の時間がかかる、ということになる。
だから、リンクリストの場合、1つのノードのバイト数が少なかったり、ループの中で1ノードあたりに処理
する内容が少ないならば、キャッシュに乗っている事が重要になる事が有る。
しかし、1つのノードのバイト数が大きかったり、ループの中で処理する1ノードあたりの処理が
大きい場合は、キャッシュミスの影響をあまり気にしなくてよい。
595: デフォルトの名無しさん [sage] 2025/07/30(水) 20:19:57.86 ID:ZSzdQGzh(4/5) AAS
具体例で言うと、大量の3Dの座標データなどに対して、CPUで単純に平行移動を書けるような場合は、SIMD命令を使わない場合、
1点当たりの処理は、ループ自体に必要な時間が5クロック、足し算に必要な時間が3次元の場合、3クロックで、
全体で、1点当たり8クロック、と見積もれる。ループを展開して、例えば、8点ずつ処理したりすれば、一点当たりに
必要なクロック数はもっと下げられる。SIMD命令を使えば、もっと下げられる。
このような場合は、LinkedList(list) よりも、ArrayList(vector)の方が適す。
しかし、1行に80文字くらい入っているようなテキストの1行を処理する場合、1行を処理するには数百クロックが必要になり、
行全体を収める構造としては、LinkedListでも、キャッシュミスによる速度低下の影響は軽微。
596: デフォルトの名無しさん [sage] 2025/07/30(水) 20:27:23.39 ID:zYz0+G1r(3/4) AAS
すげーわw
初手から間違った方向の議論してるのに早く気付け
597
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 20:46:03.62 ID:ZSzdQGzh(5/5) AAS
高速なプログラムを作った人が「キャッシュの事も考慮することで高速化しています」と言っていたとしても、
それは、キャッシュ以外の部分が既に早く作りこまれた後だからの話。大部分の遅さの原因はキャッシュの事を気にする
以前の問題で、大半はLinkedListを使うべき場所でArrayListを使っている事だったりする。
なぜなら、キャッシュミスは、24〜75クロック程度の時間増加にしかならないからだ。
598: デフォルトの名無しさん [sage] 2025/07/30(水) 21:02:52.82 ID:S65PQfLi(1/2) AAS
机上の空論プログラマ
いるよね
599: デフォルトの名無しさん [sage] 2025/07/30(水) 21:07:04.54 ID:W/B9cxh8(1/7) AAS
俺はプログラミングばかりしている人間だし、高速化技術には定評があるから、机上の空論家ではない。
実際に作ったものの速度を見ると、どうやってこんなに高速化したのか分からず目を白黒させた人がいる。
600
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:08:49.52 ID:W/B9cxh8(2/7) AAS
ID:ZSzdQGzh
が俺だ。俺は、高速化技術の第一人者であり、先生と呼ばれる人間だ。
601
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:12:48.14 ID:9ZmySMAs(1) AAS

リンクリストは要素毎にポインタを持つ必要があるから、仮にstrのリストとすると要素あたりのサイズはダブルリンクリストの場合は倍となり、
キャッシュミスを考慮しないとしても単純にスキャン量が倍になる
602
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:14:52.61 ID:W/B9cxh8(3/7) AAS
はっきり言って、高速化に関しては、教科書を書いている人は間違っている事が多い。
こんなところに買いても嘘だと思われて終わりだろうが、1つの証拠は、俺の作ったアプリは異常に速度が速い。
これは嘘ではない。速度を得たければ、ArrayList(std::vector)だけでは駄目で、LinkedList(std::list)を効果的に使う必要がある。
603: デフォルトの名無しさん [sage] 2025/07/30(水) 21:15:44.64 ID:W/B9cxh8(4/7) AAS
>>601
それでも速い。
604
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:17:52.50 ID:R2zwxvxE(1) AAS
>>602
では試しにサンプルコードを提示してくれないか?
それを動かしてみて実際に速いと体験してみたい
605
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:22:58.73 ID:S65PQfLi(2/2) AAS
GrokにDDRのレイテンシ聞いてる時点でど素人じゃん
値おかしいし
606
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 21:36:07.17 ID:W/B9cxh8(5/7) AAS
>>605
俺はプログラミングばかりやっていたので、メモリーのクロック数の実際の値には詳しくない。
ハードに詳しいようなタイプのパソコン博士ではない。
607: デフォルトの名無しさん [sage] 2025/07/30(水) 21:36:37.58 ID:W/B9cxh8(6/7) AAS
>>604
嫌だ。
608: デフォルトの名無しさん [sage] 2025/07/30(水) 21:37:49.82 ID:W/B9cxh8(7/7) AAS
なぜいやかと言うと、俺の知見や技術を、
当たり前であったかのように論文や本などに記載
する人がいるからだ。
609: デフォルトの名無しさん [sage] 2025/07/30(水) 22:01:32.02 ID:IkZxqK3l(1) AAS
>>600
数学100点先生は高速化技術の第一人者でもいらっしゃられたのですね

>>597
>大部分の遅さの原因はキャッシュの事を気にする以前の問題で、大半はLinkedListを使うべき場所でArrayListを使っている事だったりする。

本当にそんな事例があるのならば
ぜひ具体的なコードを挙げていただけませんか
610: デフォルトの名無しさん [sage] 2025/07/30(水) 22:01:33.80 ID:GCxxEIm4(1) AAS
「いる」ではなく「いた」なら使ってもいい
611
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 22:20:47.28 ID:zYz0+G1r(4/4) AAS
>>606
それでよく高速化の専門家自称できんのな
お前メモリーアクセスオーダーとかも理解できてないだろ
中の下を自覚したほうがいいぞ
612
(1): デフォルトの名無しさん [sage] 2025/07/30(水) 22:28:25.25 ID:bASHA+tv(1) AAS
100点先生は複雑な並列は専門外だったはず
メモリ同期の抽象化やそれを用いたロックフリーアルゴリズムなど知らないと思う
613: デフォルトの名無しさん [sage] 2025/07/30(水) 22:52:44.16 ID:+nnd8qy9(1) AAS
>>612
> メモリ同期の抽象化
横だけど、抽象化だけじゃなくてテストは必須な
ユーザー環境でメモリオーバークロックやタイミングチューンでTSOが保たれてない場合をいくつも見たから
614: デフォルトの名無しさん [sage] 2025/07/30(水) 23:25:58.88 ID:g7G1hz5M(1) AAS
プログラミングではTotal Store Orderが保たれないハードを相手にする必要はないけど
そのような破綻したハードが存在することを知っておかないと
正しく動かない環境があった時に原因が分からず悩みそうだ
615: デフォルトの名無しさん [sage] 2025/07/31(木) 00:30:01.24 ID:QRajgvO2(1) AAS
知りたいと欲する者が実在すればいいけど
登場人物全員無欲だったりしたら欲しくもない物を押し売りするのは偽善だよ
616
(1): デフォルトの名無しさん [sage] 2025/07/31(木) 17:04:11.04 ID:HwmVfmnZ(1) AAS
おすすめのLinuxネイティブGUIライブラリ
617: デフォルトの名無しさん [sage] 2025/08/01(金) 06:41:29.25 ID:GwIUJJIi(1) AAS
ネイティブとそれ以外は地球と宇宙のように分断されている
地球に隕石を落とせば解決するという風潮がある
618: デフォルトの名無しさん [sage] 2025/08/01(金) 07:22:58.63 ID:k4bix39w(1) AAS
>>616
RustならTUIで作れ
619: デフォルトの名無しさん [sage] 2025/08/01(金) 07:28:36.21 ID:MHdoviLB(1) AAS
いやGUIでいいやん、楽だぞ
620: デフォルトの名無しさん [sage] 2025/08/01(金) 11:46:13.99 ID:cEhKZFCe(1) AAS
TUIってGUIじゃなかったのか
621: デフォルトの名無しさん [sage] 2025/08/01(金) 16:11:21.56 ID:8q5e+r5H(1/2) AAS
最近のTUIブーム笑うわ
画期的とかいってるやついるし
昔からあるから
622: デフォルトの名無しさん [sage] 2025/08/01(金) 16:18:35.82 ID:D5M25Ws+(1/2) AAS
TUI が画期的なのではなくて React 風の考え方を導入したフレームワークの存在など、
モダンな UI 記述を TUI の世界に持ち込んできたことが流行の中心にある。
つまり文字中心のターミナルで充分な表現力だったのではないか、
今まで不必要にグラフィカルな表現をしていたのではないかという見直しだ。
623: デフォルトの名無しさん [sage] 2025/08/01(金) 16:20:56.12 ID:8q5e+r5H(2/2) AAS
はいはい
リアクティブの考え方自体昔からある
Webあがりは歴史を知らない
624
(1): デフォルトの名無しさん [sage] 2025/08/01(金) 16:42:15.75 ID:JTQ+rqjD(1) AAS
RUST自体は何言語で作られてるの
625: デフォルトの名無しさん [] 2025/08/01(金) 16:46:03.35 ID:8ljNi7o8(1/2) AAS
ほんとTUIはいまさら
ncursesで充分
626: デフォルトの名無しさん [] 2025/08/01(金) 16:56:22.01 ID:8ljNi7o8(2/2) AAS
nvimブーム

ターミナル回帰

TUIブーム←イマココ

あれ?nvimよりemacsの方が便利じゃね?

emacsブーム

RMSマンセー

世界中が共産主義化
627: デフォルトの名無しさん [sage] 2025/08/01(金) 16:57:24.56 ID:GFjMvt/F(1) AAS
近年はPCのネイティブアプリの衰退が著しいからね
アプリといえば一般的には①Webアプリか②Webアプリをネイティブアプリのガワで包んだものだけになりつつあり、
それに加えて開発者に限っては③ターミナル上のCUIアプリ(TUIまたはCLI)のオプションがある
で開発者自身が使うためのちょっとしたツールを作るときにはサーバーが必要だし制約の多い①とクソ重い②は除外され、③が選ばれる状況
一昔前はネイティブも有力な選択肢だったけど、もはやコミュニティが衰退しすぎて一部の物好きだけが弄る特殊なオモチャになってる
628: デフォルトの名無しさん [sage] 2025/08/01(金) 17:04:22.69 ID:9evqpY+Q(1) AAS
>>624
Rustコンパイラも当然Rustで記述されているよ
629: デフォルトの名無しさん [] 2025/08/01(金) 17:25:44.86 ID:M2Mi5H7J(1) AAS
guiは各osごとに調整が必要じゃけどtuiだったらターミナルあれば動くしな🐼
630: デフォルトの名無しさん [sage] 2025/08/01(金) 18:16:23.15 ID:YggNYFjx(1) AAS
プログラマ(html javascript含む)の9割はemacsを知らない
631: デフォルトの名無しさん [sage] 2025/08/01(金) 19:31:47.77 ID:D5M25Ws+(2/2) AAS
>>539
Rust コンパイラのフロントエンドは Rust で書かれているが、 LLVM に乗っかっているのでそこまで含めた処理系全体としてなら
C++ の割合がかなり多いと言えるかもしれない。
632
(1): デフォルトの名無しさん [sage] 2025/08/02(土) 15:43:06.99 ID:w1KV54wn(1/2) AAS
>>549
一般的に抽象化レイヤーはその機能を抽象的なインターフェイスつまりRustではトレイトで表現する
上位レイヤーではそのトレイトのメソッドを利用してコードを書く
下位レイヤーではそのトレイトのメソッドを実装するコードを書く
トレイト以外に接点を持たせないことでコードが分離でき単体テストも可能になる
633: デフォルトの名無しさん [sage] 2025/08/02(土) 15:43:51.43 ID:R3jtdO6Z(1) AAS
>>611
おまえ、プログラミングでは結果出せてないだろ。
この分野は、偉い人に見てめてもらった、とかじゃダメな分野なんだ。
偉い人が間違えているから。
634
(1): デフォルトの名無しさん [sage] 2025/08/02(土) 16:51:47.55 ID:5fd/P2wb(1) AAS
>>632
抽象化レイヤーという言葉を勘違いしてると思われる
何らかの実装を隠蔽したレイヤーくらいの意味しかなくて構造体だけでも抽象化レイヤーになりうる
むしろそっちのほうが多いくらい

トレイトを活用したものでなくても接点が明確ならコードも分離できるし単体テストも可能
依存性反転が必要ならトレイトが必須

>>549は文脈からするとC++のライブラリ実装を隠蔽して抽象度を上げたレイヤーをRustで書く方法という意味で書いてると思われる
635
(1): デフォルトの名無しさん [sage] 2025/08/02(土) 17:12:01.61 ID:w1KV54wn(2/2) AAS
>>634
構造体は単なる型に過ぎないため抽象レイヤーにならないよ
簡易実装でなければ依存制逆転は必須なのでトレイトも必須
上位層も下位層もトレイトのみに依存して互いは無関係にできることが抽象レイヤー
例えば上位または下位を別のものやモックに置き換えてもコードが動く必要がありそこをトレイトが実現するよ
636: デフォルトの名無しさん [sage] 2025/08/03(日) 01:26:09.35 ID:gJgkj9HT(1/4) AAS
偉い人は質問される側だから間違えるんだろうね
質問する側は間違った答えを言わないが正しい答えも言わない
637
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 02:44:09.56 ID:BeS6Ghoa(1) AAS
イギリスも安全の観点からC/C++を使用禁止へ
https://x.com/hackerfantastic/status/1950975302739399149
638: デフォルトの名無しさん [] 2025/08/03(日) 03:45:18.86 ID:+8VgLRln(1/2) AAS
だからさ、cargoがついててヘッダを書かなくていいC/C++だよ
C-zero(拡張子cz)みたいな名前にして
マングリング、関数のオーバーロード、オペレータオーバーロード、名前空間、省略できないthis、ジェネリック、レキシカルライフタイムと揃えて
「C/C++の資産をこの言語で救済してください」と謳う
639: デフォルトの名無しさん [] 2025/08/03(日) 05:59:00.47 ID:+8VgLRln(2/2) AAS
日本はダイナミックな創造性なんてないんだからそういう正味のRustコンパイラの後追いをやればよい
640: デフォルトの名無しさん [] 2025/08/03(日) 07:08:54.49 ID:XZPl0VTo(1) AAS
>>637
この呟き以外のソースが見当たらないので詳細が欲しい
641: デフォルトの名無しさん [sage] 2025/08/03(日) 08:27:30.00 ID:gJgkj9HT(2/4) AAS
wasmはなんのためにC/C++を解禁したの
いたちごっこ?マッチポンプ?
642: デフォルトの名無しさん [sage] 2025/08/03(日) 09:11:26.37 ID:3SszdQ1T(1/2) AAS
解禁というのはどういう意味? C/C++ が WASM 界で禁じられていた時代は存在しないと思うが。
643: デフォルトの名無しさん [sage] 2025/08/03(日) 10:11:12.12 ID:XUoqk9nk(1) AAS
そもそもwasmはC/C++を動かすために作られたものだしなあ
むしろRustが後から入ってきたくせにデカい顔してる
644: デフォルトの名無しさん [sage] 2025/08/03(日) 10:17:00.39 ID:gJgkj9HT(3/4) AAS
C/C++が禁止されることはなさそうだ
無敵だねこの言語
645: デフォルトの名無しさん [sage] 2025/08/03(日) 10:54:49.37 ID:3SszdQ1T(2/2) AAS
WASM の設計は「ポータブルな機械語」のようなものを意図していて、
ネイティブコンパイラのターゲットのひとつに付けくわえるのが容易なのは当初からの構想通りだ。
その分野で C/C++ がまず想定されるのは当然の大前提ではあるものの C/C++ の「ために」というわけではないよ。

不必要に C/C++ の動作モデルに依存しすぎないようにするには
実際に他の言語でやってみて検証するのが早道で、そこにちょうどよく Rust があったというだけ。

C/C++ はあまりにも当然の前提で、それで検証するのはごく当たり前のこととしてやってるから目立ってないけど
普通に Rust 以上に WASM 界で使われてる。
646: デフォルトの名無しさん [sage] 2025/08/03(日) 12:10:02.61 ID:18NTPLCd(1) AAS
TUIの流行に関しては、ヴァイブコーディングに適しており、更にはAIによる自動処理も容易という特徴があるのでしばらくは続くだろうね
RustのネイティブGUIアプリなんて学習データが無さすぎて論外
647
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 12:27:14.74 ID:CQj9WvUG(1) AAS
>>635
抽象レイヤーじゃなくて抽象化レイヤー(abstraction layer)
抽象と抽象化をしっかり区別ができてないのが勘違いの原因だと思われる

抽象化というのはプログラミング言語の抽象構造(trait, interface, abstract class等)で表現するという意味ではなくもっと広い意味
抽象構造で表現するのも抽象化ではあるけど一形態に過ぎない

例えばMFCはWin32 APIの抽象化レイヤーだけどWin32 APIを抽象構造経由で呼び出してるわけでもなければMFCが抽象構造で公開インターフェースを構成しているわけでもない
648: デフォルトの名無しさん [sage] 2025/08/03(日) 15:10:34.91 ID:3fhUnsv4(1/2) AAS
MFCの例が下手くそで何もわからない
649
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 15:38:17.78 ID:AQKxTVYx(1) AAS
>>647
抽象化レイヤーが何かではなくて
抽象化レイヤーをRustで書く方法が質問だから
答えはトレイトで表現するで合ってる
650
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 16:12:34.10 ID:gJgkj9HT(4/4) AAS
一意だが隠蔽されているのがカプセル化、一意ではないから情報が確定しないのがポリモーフィズム
だがポリモーフィズムを使っていても二通り以上実装する義務はないから
カプセル化はポリモーフィズムの特殊なケースにすぎないかもしれない
651: デフォルトの名無しさん [sage] 2025/08/03(日) 16:17:00.42 ID:2/r4ysBb(1/4) AAS
抽象化レイヤーを用いたソフトウェアモデルで有名なものとしては、UNIX生まれで最近のOSも採用しているバイトストリーム入出力モデルがある。
これはファイルI/O、ソケットI/O、端末I/Oなど様々な特性のデバイスの入出力を統一した抽象的なインターフェイスで扱っている。
新たな機能のデバイスもしくは仮想デバイスが登場しても、同じインターフェイスを実装して提供することで、利用側はその統一したインターフェイスで同じようにプログラミングができる。

Rustで言えばトレイトを定めればいいね
652
(2): デフォルトの名無しさん [sage] 2025/08/03(日) 16:20:40.80 ID:3fhUnsv4(2/2) AAS
逆でしょ
カプセル化の特殊な例がポリモーフィズム
抽象化の議論しててどっちが抽象的かわかってないのは草
653: デフォルトの名無しさん [sage] 2025/08/03(日) 16:41:33.62 ID:AyIN7EAz(1/2) AAS
>>649
抽象化レイヤーが何かを理解してないのに合ってるわけないじゃん
654: デフォルトの名無しさん [sage] 2025/08/03(日) 16:45:06.46 ID:AyIN7EAz(2/2) AAS
>>652
カプセル化とポリモーフィズムは直交した概念
どちらか片方がもう一方の特化した概念というものではない
655: デフォルトの名無しさん [sage] 2025/08/03(日) 16:56:55.36 ID:KMHU42D7(1) AAS
複おじに念仏
656
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 17:09:45.63 ID:2/r4ysBb(2/4) AAS
>>650
>>652
二人とも違う
カプセル化とポリフォーリズムは互いに関係ない

カプセル化はある一つの型に対して、内部構造を隠蔽して、公開したメソッドを通してのみアクセスさせること
ポリフォーリズムは複数の異なる型に対して、何らかの共通な処理を可能にするものだが、様々な種類に分かれる
例えば型パラメータを用いたパラメトリックポリフォーリズムや、
型クラスやオーバーロードなど直接関係のない型同士を扱うアドホックポリフォーリズムや、
上下関係のある型同士を扱うサブタイピングポリフォーリズムなど多岐にわたる
657: デフォルトの名無しさん [] 2025/08/03(日) 17:29:25.06 ID:yJFvd+Qj(1) AAS
超巨大ブラックホールから吹き出る「風」の論文で従来理論の書き換え迫る発見…妻「それってすごいの?」
8/3(日) 14:20
https://news.yahoo.co.jp/articles/3c7d52f26620f831752c7d099d01442b34cdfe6d

3つの宇宙望遠鏡などで観測した“くじら座”の渦巻銀河「M77」
8/2(土) 23:31
https://news.yahoo.co.jp/articles/a7dc5554611060289c5d610e98131f99139efa06

認知能力が高い人はモラルが低いという調査結果
2025年08月03日 08時00分
https://gigazine.net/news/20250803-higher-cognitive-ability-have-weaker-moral-foundations/

↓ワープ観測されている↓

量子トンネル効果の「トンネル内部」を世界初観測
2025.07.28 MON
https://nazology.kusuguru.co.jp/archives/182269
>>>量子力学の誕生以来、およそ100年もの間この疑問は解き明かされていませんでした。
>>しかし2025年、国際研究チームがついに電子がトンネル内部で何をしているのかを観測することに成功しました。
>>その結果、電子は単純に直線的にトンネルを抜けるのではなく、トンネル障壁の内部で一度壁面に反射(Uターン)し、その際にエネルギーを得てから最終的に外側へ放出されるという意外な動きをしていることが判明しました。

史上初!量子トンネル効果によって分子結合が生成される様子を確認!
2023.03.04 SAT
https://nazology.kusuguru.co.jp/archives/122815
>>研究ではトンネル効果が起こる頻度も観測されており、重水素陰イオンと水素分子の間で起きた1000億回の衝突あたり1回のトンネル現象が起こって、新たな分子(水素と重水素が結合したもの)が生成されていることが示されました。
>>研究者たちはトンネル効果の正確な頻度や発生要因を解明することができれば、核反応をはじめとしたさまざまな化学反応の予測を、より正確に行えるようになると述べています。
658: デフォルトの名無しさん [] 2025/08/03(日) 17:38:49.22 ID:zNYhSnUV(1) AAS
WideStudioのソース読んでみれば
659
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 18:04:16.57 ID:4Xke6nGP(1/2) AAS
内部構造を隠蔽したいってゴールはカプセル化も継承も多態も同じだし
全部一緒でよくね?
660: デフォルトの名無しさん [sage] 2025/08/03(日) 18:24:21.41 ID:sMWLFDIb(1) AAS
複おじが多態してるw
661
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 18:49:35.14 ID:vzak/r7e(1) AAS
>>656
関係ないは言い過ぎ
オブジェクト指向の用語なんだからカプセル化は前提になる
662: デフォルトの名無しさん [sage] 2025/08/03(日) 20:05:52.78 ID:H9MXEq6C(1/2) AAS
カプセル化が無ければOOPではないのかと言えばそうでもない
663: デフォルトの名無しさん [sage] 2025/08/03(日) 20:33:41.18 ID:2/r4ysBb(3/4) AAS
>>659 >>661
ポリフォーリズムはオブジェクト指向の用語ではない
目的も隠蔽ではなく各々で異なる

例えばアドホックポリフォーリズムの一種であるオーバーロードは人間にとって似た扱いを目的として同じ演算子や同名の関数を用いる
例えばパラメトリックポリフォーリズムの一種である型パラメータによるジェネリクスはコードの共通化を目的として一つの関数にまとめる

いずれもオブジェクト指向とは無関係に存在し関係なく使われてきている
664
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 20:36:22.43 ID:O7EhC/Oh(1) AAS
ああ、また用語と自転車置き場をめぐる議論が始まっちゃったか
665: デフォルトの名無しさん [sage] 2025/08/03(日) 20:42:12.60 ID:2/r4ysBb(4/4) AAS
>>664
世界的に共通の用語であり各国版のwikipediaなどにも明記されていて論争にならない常識
https://en.m.wikipedia.org/wiki/Polymorphism_(computer_science)
666: デフォルトの名無しさん [] 2025/08/03(日) 20:43:04.18 ID:583CMhqs(1) AAS
ポリモーフィズムでは?
667: デフォルトの名無しさん [sage] 2025/08/03(日) 20:45:03.97 ID:6L5nHrbA(1/2) AAS
こういう議論はいつも同じ
オブジェクト指向しか知らない人
特にクラスしか知らない人が狭い視野で間違った偏った認識をしてるよ
668
(2): デフォルトの名無しさん [sage] 2025/08/03(日) 20:49:04.61 ID:H9MXEq6C(2/2) AAS
じゃあ荒れるネタとして
C#のプロパティはget setそれぞれににpublic/private選べるのでrustより優れている
669
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 21:38:30.46 ID:6L5nHrbA(2/2) AAS
>>668
そのような「値を得る」「値を代入する」という応用が利かない不自由な扱いよりも
Rustではもっと利便性のよい「不変参照を得る」「可変参照を得る」という形にすることが多い

例えば
struct Foo<T> {
 hoge: T,
 他略
}

impl<T> Foo<T> {
 fn hoge(&self) -> &T {
  &self.hoge
 }
 fn hoge_mut(&mut self) -> &mut T {
  &mut self.hoge
 }
}
670: デフォルトの名無しさん [sage] 2025/08/03(日) 22:17:28.59 ID:4Xke6nGP(2/2) AAS
setterとgetterが自動生成しないとやってられない時点で
そもそも設計が変だと思うんだよね
671: デフォルトの名無しさん [sage] 2025/08/03(日) 23:49:55.94 ID:StwmvA+l(1) AAS
>>668
setを公開したくなくてgetだけを公開したいならフィールド同名関数()をpublicで用意すればよい
672
(1): デフォルトの名無しさん [sage] 2025/08/03(日) 23:54:27.43 ID:lAxDq0l0(1) AAS
>>669
まーた無茶苦茶なこと書いてんなぁw
さすが
673: デフォルトの名無しさん [sage] 2025/08/04(月) 00:14:09.80 ID:iiFhiJZn(1) AAS
>>672
特に大きな型やヒープを含む型だとRustでは常套手段だろ

文字列ならさらに不変時はderef適用で
name: String, フィールドに対して

fn name(&self) -> &str {
&self.name
}

fn name_mut(&mut self) -> &mut String {
&mut self.name
}
674: デフォルトの名無しさん [sage] 2025/08/04(月) 00:58:36.75 ID:78Y6WAbh(1) AAS
メンバ関数はいっぱいあるから
通常の構文ではgetに対応するsetがどれなのかコンパイラに伝わらない
伝わらないとlensを合成できない
675: デフォルトの名無しさん [sage] 2025/08/04(月) 01:12:10.10 ID:tLSupvQe(1) AAS
置き換えてしまうsetは機能が弱く古い昔のインターフェース
現実のプログラミングでは
ベクタの一部を書き換えたいとか
文字列に文字を追加したいとか
これらは&mutを得ることで実現できる
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.251s*