タグ

ducktypingに関するmogwaingのブックマーク (3)

  • Type Inference vs. Static/Dynamic Typing

  • いやなブログ: C のテンプレートでダックタイピング

    C++ のテンプレートでダックタイピング RubyPython などの動的な言語では、ダックタイピング (duck typing) というテクニックが多用されています。 ダックタイピングは、同じインタフェースさえ備えていれば型は何でも構わない、という考え方に基づく多態 (polymorphism) の手法です。アヒルのように見えて、アヒルのように鳴くなら、アヒルに違いない、というわけです。 そして、現在最も注目を浴びている言語である C++ でもテンプレートを用いるとダックタイピングを行えます。 ダックタイピングを使うと、継承関係を無視して多態的にオブジェクトのメソッドを呼び出せます。たとえば、次の Ruby のコードでは、func に Duck と Foo のどちらのオブジェクトを渡しても正常に動作します。これは Duck, Foo ともに、共通のインタフェースを持つ quack

  • まつもと直伝 プログラミングのオキテ 第4回(3)

    図7 明示的な型チェックを実行した例<BR>Stringクラス以外を受け取った場合,例外を発生させている。 動的型のメリット では,もう一方の動的型についてはどうでしょう。動的型を採用したプログラミング言語の最大の利点は,ソース・コードが簡潔になることです。プログラミング言語はより簡潔により多くのことをコンピュータに伝えるために進化してきました。きちんと動き,エラーも検出できるのであれば,プログラムの動きの質とは関係のない型指定などない方が良い,というのも一つの考え方です。 プログラムが簡潔に記述できれば,プログラムを書くときに,型のような処理の質に関係ない部分のことを考えなくても済みます。質に集中した簡潔な記述ができれば,生産性も向上することでしょう。 一方,いくら簡潔に記述できてプログラムが書きやすくなっても,型情報がなければ,プログラムを読解しにくくなるのではないか,という懸念

    まつもと直伝 プログラミングのオキテ 第4回(3)
  • 1