Rust part27 (398レス)
上下前次1-新
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実装宣言を省略すると可読性や保守性で劣る
その事実以外の話には言及していない
333(1): 03/02(日)23:54 ID:Na6YXFfW(2/2) AAS
その可読性や保守性の劣化というのは現実にどの程度問題と言われてるの?
「自分は嫌い」というお気持ちじゃなくて?
あるいは「Rustが採用してないから正しい」とか?
334(1): 03/02(日)23:57 ID:JmtuUveA(3/3) AAS
一般的に必要な情報は暗黙ではなく明記されている方が保守性も高いんだよ
そして多くの人に分かりやすい
省略できるようにしたことはGoの仕様の失策だね
335: 03/03(月)00:08 ID:BZGxSOwK(1/3) AAS
Goの場合は「省略できる」というよりも「書かない」というのが正しい
選択できるものではなく、常に書かないものだから
正直自分も好きではないし、だいぶクセのある言語だけど、世間的には受け入れられてる
世の中の人は案外そこまで型にこだわりはなくて、それよりも分かりやすさの方が好まれたりする
それは単に「考えが違う」というだけで、劣るとか優れてるとかいうものではない
(それなら何でGoは人気なの?ってなるし)
336(1): 03/03(月)00:11 ID:BZGxSOwK(2/3) AAS
あとRust開発者はC++から来た人が多いと思うけど、C++のテンプレートは思いきり静的ダックタイプでしょ
あれで実際「可読性ガー」ってなるより、便利だと思う場面もあるよね?
337: 03/03(月)00:12 ID:3d6F6ZIn(1) AAS
>>334
明記されていたほうが分かりやすいというのは正しい。
その一方で、明記しなくても分かるような設計にしろ (分かり難くなるなら設計が誤っている) という哲学が Go の根底にある。
338: 03/03(月)00:19 ID:lMbQDSSk(1/2) AAS
structural vs nominalならが安全性はnominalのほうが高いが
保守性や可読性はどちらか一方が常に優れてるわけではないな
Rustはよりメタルに近いOSやライブラリでの利用を重視してるから
安全性の面からより保守的な選択をしてる
coherenceとかもアプリケーション開発者観点だと不必要に厳しい
339(1): 03/03(月)00:25 ID:xahbKnOP(1) AAS
Goでは省略しちゃうことが多くて、
ある型についてどんなinterface群を満たしているのか、を把握するために、
対象となりそうな全てのinterface群の各々のメソッド群と見比べて、
そのメソッド群すべてを実装していることを確認することで、
ようやくそのinterfaceを満たしていることを把握できる。
たった1行を省略できる利便性(?)のために、大きく可読性が落ちているのは否めない。
上下前次1-新書関写板覧索設栞歴
あと 59 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.006s