ウィキペディアはダックタイピングについて次のように述べていました:
オブジェクト指向プログラミング言語を使用したコンピューター プログラミングでは、ダック タイピングは動的型付けのスタイルであり、特定のクラスからの継承や特定のインターフェイスの実装ではなく、オブジェクトの現在のメソッドとプロパティのセットによって有効なセマンティクスが決定されます。
(* 編集者注: この質問が投稿されて以来、ウィキペディアの記事は編集され、「動的」という単語が削除されました。)
構造型付けについて次のように述べています。
構造型システム (またはプロパティ ベースの型システム) は、型システムの主要なクラスであり、型の互換性と等価性は、明示的な宣言ではなく、型の構造によって決定されます。
次のように、構造的サブタイピングとダックタイピングを対比します。
[構造システム] は、実行時にアクセスされる構造の一部のみが互換性をチェックされる ... ダック タイピングとは対照的です。
しかし、ダックタイピングという用語は、少なくとも構造的なサブタイピングシステムを直感的に包含しているように思えます。実際、ウィキペディアには次のように書かれています。
概念の名前 [ダックタイピング] は、ジェームズ ウィットコム ライリーによるアヒル テストを指し、次のように表現できます。「アヒルのように歩き、アヒルのように泳ぎ、アヒルのように鳴く鳥を見たとき私はその鳥をアヒルと呼んでいます。」
だから私の質問は: 構造的サブタイピングをダックタイピングと呼べないのはなぜですか? ダック型として分類できない動的型付け言語も存在しますか?
追記:
reddit.com でdaydreamdrunkという名前の誰かが雄弁に言ったように、「アヒルのようにコンパイルし、アヒルのようにリンクするなら...」
あとがき
多くの答えは、基本的に、ここで既に引用したことを再ハッシュしているだけのようで、より深い質問に対処していません。動的型付けと構造的サブタイピングの両方をカバーするためにダックタイピングという用語を使用しないのはなぜですか? 構造的なサブタイピングではなく、ダックタイピングについてのみ話したい場合は、動的メンバー検索と呼んでください。私の問題は、ダックタイピングという用語について何も言わないことです。これは動的言語にのみ適用されます。