トップページ > プログラム > 2019年06月24日 > 218UFAwP

書き込み順位&時間帯一覧

10 位/203 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000110130000000000006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレ立てるまでもない質問はここで 149匹目
TypeScript part3

書き込みレス一覧

スレ立てるまでもない質問はここで 149匹目
357 :デフォルトの名無しさん[]:2019/06/24(月) 07:02:00.65 ID:218UFAwP
>>350
あ、わかったかも。
「(クラス毎ではなく)オブジェクト毎に所持メソッドやメンバー変数を変えられる」
これがプロトタイプの本質だって言ってるんですね。

否定してる最初の説明でもその意味だと思うけど、
「動的にクラス定義を変更してその全インスタンスの振る舞いがまとめて変わる」
のか
「特定のオブジェクト限定で振る舞いを変えられる」
のかが紛らわしい。

まあでも当然後者の意味だと思うけど。
クラスが動的に再定義されちゃったら型安全壊れるし、
コンパイル時にバグを見つけれる事が強みなので、それをやる言語は無いはず。
スレ立てるまでもない質問はここで 149匹目
359 :デフォルトの名無しさん[]:2019/06/24(月) 08:27:58.03 ID:218UFAwP
ああそうか
まあでもその存在しないメソッドを呼んでしまったとかで例外が出ちゃうから、
クラスを使用している言語はオブジェクト別の所持メソッドの変更を許可しないだろうということです。
それをやっちゃうとせっかくのクラスによる安全性を放棄してしまう
スレ立てるまでもない質問はここで 149匹目
361 :デフォルトの名無しさん[]:2019/06/24(月) 10:51:03.90 ID:218UFAwP
ダックタイピング調べてみた。

これはたぶんJavaプログラマー的に言えば
interfaceを明記しなくても自動判別してくれるということだろう。
メソッド側が期待するinterfaceとクラスが実装しているinterfaceを自動判別する。

https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
class Duck
def sound
'quack'
end
end

もしこれのsoundメソッドのとこをコメントアウトしたら
test(Duck.new)がコンパイルエラーになるんだろう。

しかしプロトタイプベースだったらコンパイル時にエラーを出すのは無理だろう。
しかしクラスのメリットは確かにコンパイル時エラーの検出のためだけではない。
プロトタイプかつクラスを使用する言語があったとしたら、
その場合クラスは単に抽象的な意味を記述するため、あるいは
クローンの連鎖の大元になるためにある。
そんな言語もあってもいいのかもしれない。
スレ立てるまでもない質問はここで 149匹目
362 :デフォルトの名無しさん[]:2019/06/24(月) 11:08:38.28 ID:218UFAwP
ダックタイピング良く調べてみると
このwikipediaの記事は間違いだって言ってる記事があるな
「そのオブジェクトがどんなメソッドを所持しているかを事前に知らずにとにかく呼び出してしまう」
つまり動的バインディングのような概念である、と。
プロトタイプベース系の話だな、それなら。

wikipediaの記事からは、クラスがあって、
interfaceを書かなくても多態性が実現できるinterface自動判別の仕組みだ、
という印象を受ける。
スレ立てるまでもない質問はここで 149匹目
363 :デフォルトの名無しさん[]:2019/06/24(月) 11:11:04.94 ID:218UFAwP
https://en.wikipedia.org/wiki/Duck_typing#Criticism_of_the_term_itself
>AttributeError: 'Whale' object has no attribute 'fly'

英語版wikipediaの記事だと、「メソッドがあるかないかを事前に気にせずにとにかく呼び出してしまう」
というプロトタイプベース的な意味でダックタイピングという言葉を使用しているようだ。
TypeScript part3
252 :デフォルトの名無しさん[]:2019/06/24(月) 11:41:32.01 ID:218UFAwP
この研究によるとTypeScriptは最もバグ発生率が低い言語なんだけどその理由とか体感とかありますか?
https://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf
>TypeScript −1.32 (0.40)∗∗ −2.15 (0.98)∗ −1.34 (0.41)∗∗ −0.34 (0.07)∗∗∗


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。