Duck Typingの語源

プログラミング言語の動的型付けの一種で、実行時にオブジェクトの振る舞いから型を推測するものがあります。そのオブジェクトがどのような動きをするかは宣言しておく必要はなく、実行されるまで型の情報は分からなくて良いというわけです。これをDuck Typingと呼ぶのですが、今日までその語源が分かりませんでした。

調べてみると、ダック・テストという作法から来ているのだとか。

農場のそばを歩いている鳥を見たとしよう。鳥は「鴨」という名札をつけてはいない。しかし、鳥は確かに鴨のように見える。また、その鳥は池に入り、鴨のように泳ぐ。そこでその鳥はくちばしを開き、鴨のように鳴く。ここまで来れば、鳥が名札をつけていようがいまいが、その鳥が鴨であるという結論にはとっくに達したであろう。

「鴨のように見え、鴨のように鳴けば、それは鴨である」とする帰納的な立場。これを実装した有名な言語にはRubySmalltalkがありますが、全く同じ振る舞いをする二つの型があったら、どうなるんでしょうね。同じ振る舞い→同じ結果、ということで意識する必要ないのかな。