Rust part27 (391レス)
1-

313
(1): 03/01(土)13:10 ID:UmJa16uz(1) AAS
A:「〇〇な言語があったらいいのに」
B:「言語によるとしか言えない」
A:「・・・」
314: 03/01(土)18:25 ID:iHXAtSJa(1) AAS
Structural Typingでバイナリ境界を超えて新しいメソッドを追加できるようにしてしまうと衝突時のデメリットがメリットを上回る
Rustにcoherenceがあるのと同じ
315: 03/01(土)22:44 ID:qVuk4Ae3(1) AAS
>>308
GCの有無は関係ない
異なる型に対するコードの共通化つまりジェネリクスの話

例えばクラスを使えば同じ基底を継承する派生同士は異なる型でも共通のメソッドやプロパティを使える
しかし同じクラス継承の関係しか扱えないのは制約がキツく各機能毎に継承で多重クラス継承など問題が多い

一方でダッチタイピングや構造的サブタイピングは無関係な型同士でも同じメソッドやプロパティがあるだけで暗黙に使える
しかし互換性がなく偶然同じメソッドやプロパティを持つ同士の利用をエラーにできない問題や暗黙であるため複雑化してくると分かりにくくなるなど問題が多い

そこで機能毎にインターフェース宣言と各型でのインターフェース利用宣言することで諸問題を解決し安全で保守しやすいコードにすることができる
そしてインターフェース名(機能名)が付くことで複数の機能の列挙や関係も宣言できるようになる
Rustではトレイトと称する
316: 03/01(土)22:55 ID:J1DdG5rG(2/2) AAS
llmの3B当たりが吐き出す文章みたいで何を言ってるのか意味不明だな
317: 03/02(日)00:27 ID:yD3mmOcG(1) AAS
丸一日調べてこれとか泣けてくるな
ついでにRustのトレイト問題も調べとけよ
318: 03/02(日)08:35 ID:Na6YXFfW(1/2) AAS
>>313
最初の一文は違うだろ
A. 「(Rustにない、他の言語では使われてる機能) は問題だらけ」
っていう主張に対して反論されてるだけ
319: 03/02(日)15:32 ID:gL5X58/w(1) AAS
>>312
少なくとも君は馬鹿だよ
320: 03/02(日)17:14 ID:ZyJLqNmz(1) AAS
わからんけどtypescriptやれば
321: 03/02(日)18:00 ID:4Ag5PO4h(1) AAS
ま人生一度は型厨になるのは仕方ない
322: 03/02(日)18:29 ID:JmtuUveA(1/3) AAS
ダックタイピングは動的か静的かに関わらずデメリットが多すぎて使うべきではないよ
唯一のメリットはinterface宣言が不要だけどこれが害悪を招いちゃう
interface名がないから可読性が悪く保守性も低いのはもちろん利用方法に制限も
323
(1): 03/02(日)19:02 ID:Q0x8LaN0(1) AAS
静的なダックタイピングにはinterface宣言もinterface名もあるやろ
324
(1): 03/02(日)19:17 ID:JmtuUveA(2/3) AAS
>>323
名前をつけて宣言したらそれはinterfaceそのものだよ
名前も宣言もなしで共通のメソッド名など構造が同じなら動作することがダックタイピングだよ
325: 03/02(日)21:10 ID:JAzjPHpU(1) AAS
ubyの罪は重い
326: 03/02(日)21:55 ID:4ZT2iFI9(1) AAS
Rustってまだオワコンになってなかったんだな
327
(2): 03/02(日)22:12 ID:vq+w9eu/(1) AAS
構造に頼るよりも、ジェネリック関数でトレイト境界で制約かけた方がRustっぽい気がする。
なんとなく。
328: 03/02(日)22:50 ID:RayeYp/T(1/2) AAS
>>324
上に出てきてるように構造的部分型(Strructural Subtyping)を含めた話
まあ俺もStrructural Subtypingを静的ダックタイピングと呼ぶのは
誤解を招きやすいからあまり賛同しないがそこは問題じゃないでしょ
329: 03/02(日)23:00 ID:RayeYp/T(2/2) AAS
>>327
ジェネリックの型パラメータをトレイトで制約するということと
その制約を満たしてるかどうかを型の構造に頼ってチェックするのは両立する話
330
(1): 03/02(日)23:17 ID:g7i6E9Hi(1/2) AAS
共通する構造&機能がある時に
・interface名(Rustではtrait名)を付けて宣言するか
・名付けずにダックタイピングするか
の違いが最も大きい
後者は様々な点で劣る

両者の中間的な位置付けにいるのがGo
Goでは各型に対するinterface実装宣言を省略できてしまうため
省略すると可読性や保守性で劣ることになる
331: 03/02(日)23:37 ID:WP5yHTvc(1) AAS
その「保守性が劣る」というGoは世間的には保守しやすい言語と言われてるんだが
型で守るという意味ではなく、多くの人に分かりやすい簡易な構文だからという理由でだけど
332: 03/02(日)23:44 ID:g7i6E9Hi(2/2) AAS
各型に対するinterface実装宣言を省略すると可読性や保守性で劣る
その事実以外の話には言及していない
1-
あと 59 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.009s