sou's blog

落ち着いた華やかさがあり、上品に明るく陽気なさまを表す。

Duck Typingについて

参考の記事を見て、おっPrototypeパターン*1かってことで興味を引いた。
というのも個人的にすごくタイムリーな内容で、ちょうどまつもとさん*2の「コードの世界」を拝読してたところでおんなじ様にDuck Typingだよねっていう記事があった。
そして、この機会にDuck Typingについて考察してみようと考えた。

Duck Typing

“If it walks like a duck and quacks like a duck, it must be a duck”
(もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルである)

静的型言語と動的型言語

データ型*3で定義された変数のみの範囲で処理をする言語が静的型言語で、変数にデータが割り当てられた時点で初めて型が決まる言語が動的言語という簡単な解釈。
Duck Typingはこのデータ型ではなく、振る舞い*4でそのインスタンスは何者かを判断する。

コンピュータに優しい人間

あくまでも型の宣言というのは、コンピュータにとって都合の良いものであるため出来るだけ現実世界や人間に都合の良いように設計されている言語のほうが本来イイはず。
でも、みんながみんなコンピュータに優しいプログラミングに慣れてしまっているので気付かないし、概念も少し難しいかもしれないから違和感はあんまりない。というか、言語なんてあくまでツールなんだからそんなことはどうでもよくて実装がいかにスムーズに出来るかということのほうが重要かもしれない。とは言っても言語設計とかに興味を持ち出したりするとこちらもほっとけなくなってくる。

*1:Gofの生成に関するパターンのうちのひとつ

*2:rubyのパパ

*3:数字、文字列、配列、連想配列等々

*4:メソッドやプロパティ