Rust part22

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2024/01/20(土) 23:21:40.08ID:wyzQTwgG
公式
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 part21
https://mevius.5ch.net/test/read.cgi/tech/1692105879/

ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
2024/02/10(土) 18:22:04.19ID:/ZC4Oa+s
只の道具なんで、向いていれば適応するし、向いてなければ使わない。
宗教的な正しさなんてどうでも良いんですよ。

おまいらは政治将校か?
2024/02/10(土) 18:23:43.39ID:7r8QxWN2
実装パターン < デザインパターン < アーキテクチャパターン
すべてデザイン(設計)のパターンではあるけど対象とする粒度の違いで呼び名が違う
2024/02/10(土) 18:25:26.70ID:iJNhxzEm
Rustでよく使われてるパターンは
レイヤードアーキテクチャ
DDD
クリーンアーキテクチャ
なのかな?他にある?
2024/02/10(土) 18:26:30.51ID:iJNhxzEm
>>583
勉強になる👍
2024/02/10(土) 18:27:23.64ID:7r8QxWN2
>>580
そう感じるのはクリーンアーキテクチャをオブジェクト指向で実装した例だけを見て
クリーンアーキテクチャをオブジェクト指向の文脈でしか理解できてないからだと思う
2024/02/10(土) 18:29:37.58ID:+PSgdWvA
>>570
暴力でも寛容でもないふつうの非暴力闘争がいいのに
非暴力的な二項対立まで否定するのは行き過ぎだよ
2024/02/10(土) 18:50:48.17ID:cODs5/To
>>586
そういう逃げは良くないぞ
例えばDDDはオブジェクト指向じゃなくても実現できる!と言ってるのと同じ
実質そのような原典は存在しない
独自解釈によるものにすぎない
2024/02/10(土) 19:06:04.16ID:kzqqrU6F
オブジェクト指向、スタック指向、手続き型しか知らないんだけど他になにがあるの?勉強したいから教えてくれ
2024/02/10(土) 19:08:51.93ID:kzqqrU6F
あと関数型と手続き型の区別がつかない
2024/02/10(土) 19:19:34.87ID:IjP+HezS
関数型はオブジェクト指向において部分的に使うもの
高階関数とかラムダ式とかはそんなに難しくない
2024/02/10(土) 19:31:34.99ID:76r5Dddg
>>590
一緒だよ
2024/02/10(土) 19:44:00.53ID:6ZZO7tOM
高階関数は「人間にとって」わかりにくくなるので使うなと
言われているね

あと論理型というのがあったなあ
2024/02/10(土) 19:47:12.54ID:IoMlesHJ
>>589
フロントエンド用途でコンポーネント指向

あと関数型というのは名前の通り関数に型を持たせたってだけ
高階関数と呼ばれてるね

オブジェクト指向に成り代わるものはいまだ出てきていない
595デフォルトの名無しさん
垢版 |
2024/02/10(土) 19:50:32.36ID:H74b4wDc
オブジェクト指向信者の人達、その時々の優れたものをオブジェクト指向認定してるイメージがある
あるいはオブジェクト指向とはオブジェクト指向を名乗った言語の良いところどりおよびそれと重なる全てと定義していそう

オブジェクト指向信者もJavaは嫌いそう
2024/02/10(土) 19:52:30.82ID:IoMlesHJ
それはそうと継承の省かれたオブジェクト指向はオブジェクト指向と名乗るべきではないと思うんだが、新しい名前は無いの?
2024/02/10(土) 19:57:03.35ID:iu2BL++f
むしろ継承を省かれたぐらいでオブジェクト指向を名乗れなくなる方が意味不明なんだが。
2024/02/10(土) 20:00:09.44ID:lgwlEc8K
オブジェクト指向は単なる理論であって言語がどう実装するかは言語の勝手
2024/02/10(土) 20:03:05.61ID:6ZZO7tOM
狭義のオブジェクト指向言語は
データと操作を一つにまとめて型として使えるよ
ということだけ

カプセル化、継承、多態性をオブジェクト指向に入れるかどうかは
昔から諸説ある
2024/02/10(土) 20:03:30.97ID:WFGhMJhr
>>596
オブジェクト指向はオブジェクトの中に値(異種複数可)を閉じ込めてオブジェクトへの公開メソッドのみ公開すること
継承なんて概念はない
2024/02/10(土) 20:05:33.42ID:2iG7gUv6
なんかオブジェクト指向といいデザインパターンといい一般的な意味とは違うふうに捉えてる人が多いね
2024/02/10(土) 20:10:54.41ID:VlV2WaeL
オブジェクト指向かどうかはどうでもよくてどういうアーキテクチャで設計して実装するかが重要なんだけど
2024/02/10(土) 20:13:45.74ID:o2x+aGn+
関数型プログラミングがどこで使われてるのか調べてみたけどコンピューターサイエンス分野しか見つからない
2024/02/10(土) 20:22:15.34ID:6cZfMrU8
>>603
関数型プログラミングはただの手続き型プログラミングなんだから当たり前だろ
2024/02/10(土) 20:30:09.19ID:xWWw0qe+
フロントエンド屋か単にスクリプト組むくらいしかやらない人はオブジェクト指向に触れない
実装屋は逆にオブジェクト指向をベースにしたものばっかりやる
オブジェクト指向アンチの正体が分かっちゃうね
2024/02/10(土) 20:39:26.86ID:U5vUZCjE
手続き型を文芸的にしたのがオブジェクト指向で、数学的にしたのが関数型
607デフォルトの名無しさん
垢版 |
2024/02/10(土) 20:46:30.71ID:lnD8LNvj
オブジェクト指向も関数型も確固たる定義がないバズワードだからな
話題にするだけ無駄
2024/02/10(土) 20:54:14.59ID:XEL9SE6k
グラデーション的だわな。
常識的な分類として「かなりこっち寄り」くらいに言えるものはあるけど。
文句なく関数型といえる汎用プログラミング言語は Haskell くらいか。
2024/02/10(土) 21:00:12.52ID:2fVxDtyX
オブシコアンチってなんでアンチやってるの?オブシコへのただならぬ恨みを感じるけど
2024/02/10(土) 21:04:41.79ID:hNXhuidE
勉強になるような知識どんどん書き込んでくれ
611デフォルトの名無しさん
垢版 |
2024/02/10(土) 21:20:25.37ID:wHWIBAUz
オブジェクトを指向指向したら汚いコードがいっぱい出た
2024/02/10(土) 21:34:14.43ID:t6h0tc+k
オブジェクト指向自体には問題はなにもない
問題とされているのはオブジェクト指向ではなくクラス継承
これは実装継承となるアンチパターンなので使ってはいけない
2024/02/10(土) 22:00:16.03ID:EoWeXpbc
>>612
ここはRustスレで継承問題はクラス機能ごと排除することでとうに解決されているんだがなんで継承問題を擦ってるんです?
2024/02/10(土) 22:03:08.49ID:TERvB2uZ
みんながRustを使えば解決だね
615デフォルトの名無しさん
垢版 |
2024/02/10(土) 22:07:13.96ID:a08tomEu
一部のRust信者の布教活動がひどかったせいで他スレ住人からさんざんヘイトを買い
普通のRust使いもクソどうでもいいこだわりを押し付けられるばっかりで
有益な情報が集まらないと判断しここを見限った

結果、ここが雑談部屋になることを止めようという勢力はRust信者だけになってしまった
2024/02/10(土) 22:12:14.65ID:Bpk68K+1
今どきRustだけしか使えない実装屋なんているわけなくて他の言語の雑談がちゃんと通じるからなにも問題ない
バイリンガルプログラマな姿こそ実装屋が目指すべきところ
2024/02/10(土) 22:14:50.40ID:XEL9SE6k
べつに実装継承でもそれ自体が問題ってわけではない。
実装継承が依存を強める (密結合) といったって実際に依存があるものが依存するのは当たり前だし仕方がない。
ただ問題なのは事前に適切な設計をすることもまた出来ないという現実があるってことだ。
プログラムを書き進めたら思ってのと違うかったというときに強固な依存があると軌道修正がしんどい。
2024/02/10(土) 22:26:31.80ID:ewSY5W0Q
継承は廃れた技術だから議論する意味がない
関心の分離を意識したプログラミングをしていこう
2024/02/10(土) 22:29:03.46ID:Lf9bQLCg
>>613
前にこのスレで話題になってただろ
Servoではポインタを使って無理矢理DOMの継承を実装してるとかなんとか
2024/02/10(土) 22:30:28.98ID:HLmY2iS7
>>619
なにそのアンチパターンww
俺らはこれを反面教師として頑張ろうな
2024/02/10(土) 22:42:16.36ID:+PSgdWvA
>>604
手続き型には関数とデータ構造がある
関数しか(抽象化され)ないというのはオブジェクト指向の視点からそう見えるだけだ
2024/02/10(土) 22:56:15.78ID:XEL9SE6k
関数型言語が言う関数ってのは数学用語の関数のことで、
引数と評価結果の関係で表現される。
C とか Rust とかがいう関数のことではないよ。
関数とは呼ばれていても値を返すサブルーチンであって関数ではない。
2024/02/10(土) 22:57:32.43ID:YTHRY4oL
いやマジレスすなw
2024/02/10(土) 23:01:02.32ID:2CpL/1KO
Deref使った継承もどきは委譲と変わらんよ

継承が敬遠されるのは変数、関数単位でfinalとかsealedで修飾したりprivate/protectedを使い分けないと
基底クラスで満たすべき不変条件を継承クラスでぶっ壊されてしんどいって話だから
基底クラスをブラックボックスで抱えて公開機能だけをそのまま公開する形なら全部委譲してるのと同じ
2024/02/10(土) 23:23:00.37ID:+PSgdWvA
正しい責任転嫁と悪い責任転嫁を区別するのが面倒臭いと思えば全部委譲でいい
正当化が必要と感じる人には継承が必要なのだろう
2024/02/11(日) 08:17:40.00ID:Jcf8p7/N
委譲やるよりインターフェースで共通項をもたせてポリモーフィズムできるほうがスッキリ実装できる
2024/02/11(日) 08:28:38.26ID:8+WjthrU
インターフェースでやるときこそ委譲の使いどころでは?
データレイヤーでのインターフェースRepositoryのImplからDataSourceの各メゾットを呼び出すのはまさしく委譲の考え
2024/02/11(日) 09:33:37.86ID:QXc2iF2X
オブシコ=オブジェクト指向
で使ってるとやっとわかった。「あたしこ」の「しこ」かと勘違いして訳がわからなかったよ。
2024/02/11(日) 09:47:23.19ID:mQVY2wVN
>>627
レポジトリはドメインレイヤーがやるところでしょ
630デフォルトの名無しさん
垢版 |
2024/02/11(日) 12:10:09.20ID:xzgPE83s
>>627
delegationとforwardingの区別が付いてないね
2024/02/11(日) 12:18:42.79ID:eNn3abAv
ここで数学用語ではなく、学校では評価されない用語を使うのがオブジェクト指向
632デフォルトの名無しさん
垢版 |
2024/02/11(日) 13:10:55.53ID:5cbdJqGT
オブジェクト指向の良い所は真に賢い人は真面目に勉強しないしょうもなさと多彩な用語の数にある

だからオブジェクト指向言語を勉強した人間は真に賢い人間と競合することなくマウントを取ることが出来るようになる
2024/02/11(日) 13:30:06.52ID:UTHxd4xs
>>627
それは委譲ではない
継承と委譲とインターフェースは違うもの
634デフォルトの名無しさん
垢版 |
2024/02/11(日) 14:12:49.22ID:tvA72CFJ
自分の使っている用語の定義に無頓着な人が賢いwとか有り得ない
635デフォルトの名無しさん
垢版 |
2024/02/11(日) 14:28:55.59ID:FmT3HYkV
>>634
“賢い”の定義が違うんだろ
察してやれ
2024/02/11(日) 14:35:31.96ID:eNn3abAv
定義を後出しすることに罪悪感がない人はたぶんもっとリアルな悪を見慣れている
2024/02/11(日) 15:00:23.67ID:p0mJmxcL
Rustにはインターフェースは無くて型クラスはある
型クラスを推してけ
638デフォルトの名無しさん
垢版 |
2024/02/11(日) 15:56:01.57ID:EVWrf4kv
>>634
その用語、定義ありませんよw
君が勝手に思い込んでるだけw
639デフォルトの名無しさん
垢版 |
2024/02/11(日) 16:06:16.13ID:nNzLNGzY
オブシコ用語って掛け算順序界隈の主張する「等分除と包含除」とかの仲間だよね
2024/02/11(日) 16:16:18.76ID:+E66gntj
>>639
(^_^)ノ
641デフォルトの名無しさん
垢版 |
2024/02/11(日) 16:21:31.17ID:cP74y9AE
時代はオブシコではなく関数型プログラミング
オブシコは時代遅れ
例えば機械学習は関数型プログラミングやってる
642デフォルトの名無しさん
垢版 |
2024/02/11(日) 16:24:12.02ID:aCOYKxUA
>>637
型理論においてはどちらも同じ
643デフォルトの名無しさん
垢版 |
2024/02/11(日) 16:30:25.25ID:O/MMVA2r
なんかみんな単発だからレスバできないなあ
644デフォルトの名無しさん
垢版 |
2024/02/11(日) 20:46:34.90ID:XOn8R4o/
RustがJSを滅ぼしてくれるのはいつになるかいのう……
645デフォルトの名無しさん
垢版 |
2024/02/11(日) 21:26:37.41ID:M/VumamL
まず先にDOMを滅ぼしてくれないとRustがウェブを乗っ取れない
DOMがJS依存すぎる
2024/02/11(日) 21:51:44.10ID:XOPhWcHA
DOMはJSに依存しないしいろんな言語のインターフェースがあるが。
647デフォルトの名無しさん
垢版 |
2024/02/11(日) 22:42:14.41ID:575tRfGH
>>646
肝心のWasmにDOM操作を許可しないんじゃ意味ない
648デフォルトの名無しさん
垢版 |
2024/02/11(日) 22:47:25.71ID:YLWTi6Ka
>>647
DOM操作自体はwasmでもできるぞ
オーバーヘッドが大きすぎて遅いだけ
2024/02/11(日) 22:56:40.04ID:Ij1X5KaV
>>648
Wasmから直接DOM操作は不可能
JavaScriptにやってもらうしかない
つまりJavaScriptしかできない

そのため単純なDOM操作だとJavaScriptが有利だが
Wasmで何らかの処理をしつつのDOM操作だとWasmが勝つことが増えていく
2024/02/11(日) 23:09:37.71ID:bi52uRem
自演ええて
651デフォルトの名無しさん
垢版 |
2024/02/11(日) 23:36:32.19ID:BuG8Esm8
>>649
645だけど、だからDOM自体が欠陥品なんだって
JS依存の現状から脱却するにはDOMに変わるものが必要
652デフォルトの名無しさん
垢版 |
2024/02/12(月) 00:40:57.30ID:cVfqqlnc
tree構造以外である程度の汎用性あるデータ構造なんてないわ。
653デフォルトの名無しさん
垢版 |
2024/02/12(月) 01:04:43.36ID:tgn3NuIP
DOMに文句言ったところで何かが変わるわけじゃないからな
どうでもいい話
2024/02/12(月) 10:19:02.60ID:Autq7Dxb
>>651
現状JSからしか使えないってのとDOMに欠陥があるかどうかってのは全然別の話だと思うが。
655デフォルトの名無しさん
垢版 |
2024/02/12(月) 10:33:25.13ID:QcKWCRm/
>>654
DOMには安全性のためにJavaScriptでしか触れないのは、DOMの出た当初は良かったが、JavaScript以外の言語も幅広く使われるようになった今ではその設計が古くなって欠陥品になってるのは事実
2024/02/12(月) 10:41:33.86ID:Autq7Dxb
DOMの設計と全然関係ない話。
2024/02/12(月) 10:51:22.86ID:dpV2oNnW
>>653
他人に文句を言うより自分で労働するという正義感は過労死の原因だよ
クレーマーはこの正義感を変えるじゃなくて既に変化した人
658デフォルトの名無しさん
垢版 |
2024/02/12(月) 11:07:16.48ID:UiVeSAOt
domなしでのナビゲーションの方法があってもいいとは思う
659デフォルトの名無しさん
垢版 |
2024/02/12(月) 11:08:30.75ID:CTu12wXT
いい加減にDOMはXMLをやめようぜ
無駄な構文が莫大な通信ロスを生んでる
660デフォルトの名無しさん
垢版 |
2024/02/12(月) 11:23:28.89ID:u1N968/b
>>657
正義感w
自分でコントロールできないこととコントロールできることの判別こそ過労死しないためには最重要なんだけどね

DOMが欠陥品?
で?君はどうしたいんだい?
661デフォルトの名無しさん
垢版 |
2024/02/12(月) 11:28:30.41ID:e3JrcLqa
>>655
昔DOMは他の言語からでも直接触れたがほぼ全て淘汰されてJSだけが生き残った
2024/02/12(月) 11:38:53.51ID:nlvJBCEb
DOMをゴミと言うのはWindowsをゴミと言ってるのと同等で無駄なこと
2024/02/12(月) 11:41:30.45ID:dpV2oNnW
やりたいことを先に固定してからそれに合わせて物事をコントロール可能にするという順序は逆にしたい
664デフォルトの名無しさん
垢版 |
2024/02/12(月) 13:30:26.12ID:UkU83gVN
DOMの代替の候補って存在するのかな
2024/02/12(月) 13:49:21.10ID:3NLsFenn
>>662
Windowsはゴミだから個人も仕事からも排除した
しかしネットがWebベースのこの時代にWebブラウザは排除できない
DOMは取り扱わざるを得ない

とはいえRustによるWasmからの取り扱いは以前よりかなり状況が良くなってきている
まずReference Types の導入によりJavaScriptのオブジェクトをそのまま透過的にだがRust(Wasm)側でも持ったり返したりできるようになった
これはJavaScriptグルーコードの削減をもたらしている
さらにGC対応もメモリ管理のうちJavaScript側依存のものの扱いを任せられるようになりRustでも取り扱いが楽になる
Rust側の内部に閉じたデータのみメモリ管理すればよくなるからだ
2024/02/12(月) 15:41:26.64ID:QicyHe7E
デザインパターンはあくまで定石集なんだから、Rust用のデザインパターン作ればいいだけの話。
「Rustならこんなに簡単にできる」と自慢できるから、信者にとってもいいことかと。

あと、Rustでダックタイピングできたっけ? 事前にTraitで定義しなきゃいけないんだったら面倒だなぁ。
2024/02/12(月) 15:46:26.73ID:FSKnAMMD
デザインパターンって簡単に実装できるとか
自慢するたぐいのものだっけ?
2024/02/12(月) 15:55:33.33ID:Jqge1vnq
単発NG推奨
2024/02/12(月) 15:56:29.31ID:9yTkyF6j
ドメインまわりをフレームワークと分離させる設計ならなんでもいいや
今後リファクタリングすることを考えた設計が大事
2024/02/12(月) 15:56:34.13ID:Jqge1vnq
ここはRustスレです消えてください
2024/02/12(月) 16:00:10.23ID:nHDMmyKy
>>666
ダックタイピングは動的型付け言語のためのオモチャであり
デメリットも多いためまともな言語はダックタイピングを排除して別の形を取っている
ダックタイピングは規律のない無政府状態であり可読性も下げデバッグもしにくくなり最悪となる
もちろん実行時の動的型付けの問題もはらんでおり自然の静的なチェックができない
2024/02/12(月) 16:11:47.85ID:KZYjz35/
ダックタイピングというゴミのような方法に対して
Rustはダックタイピングを採用せずに代わりに完璧な方法を用意した
それがtraitのrequired methodsとtrait boundsである
この二つにより全てを解決している
2024/02/12(月) 16:12:19.21ID:9yTkyF6j
ダックタイピングなんて荒業ではなく、ポリモーフィズムをやりましょ
674デフォルトの名無しさん
垢版 |
2024/02/12(月) 16:23:13.06ID:cVfqqlnc
>>664
ない。結局まともに使えるものを用意しようと思えばああなる。
それも理解せずに馬鹿みたいに文句言ってるだけだわな。
2024/02/12(月) 18:20:41.31ID:g0MzjlGR
>>667
繰り返されれば飽きる
繰り返されないのはパターンではない
676デフォルトの名無しさん
垢版 |
2024/02/12(月) 18:37:22.53ID:NJ55srXB
>>671
GoやTypeScriptみたいな静的片付け言語でもダックタイピング採用してるよ
nominal/structuralと動的/静的は直交
2024/02/12(月) 18:47:33.19ID:0RqNbR5g
Goは実行時にランタイムが動的にvtableを生成してメソッドlookupするわけだから
静的ではないでしょ?
そんなことはC++やRustでは許されない行為だよ
2024/02/12(月) 19:22:42.84ID:QavMz5Qe
>>676
TSはanyで型が消えてるときの話じゃないの?
679デフォルトの名無しさん
垢版 |
2024/02/12(月) 20:01:03.19ID:uYjIYqfU
誰も定義の擦り合わせをしないのでどんどん意思疎通が困難になっていく
680デフォルトの名無しさん
垢版 |
2024/02/12(月) 20:07:14.69ID:uYjIYqfU
一言居士の群れ
2024/02/12(月) 20:21:22.17ID:oZv/D2wt
ダックタイピングは一見するとお手軽に見えるけどプログラミング開発の足を引っ張る悪
Rustは排除しているので大丈夫
そしてRustではトレイト境界により確実に使えるものだけを呼び出せることを静的に保証しつつ用いる
682デフォルトの名無しさん
垢版 |
2024/02/12(月) 20:24:19.09ID:H9LyWZwk
現代はデザインパターンで設計するんじゃなくフレームワークで作る時代だけどな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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