Rubyの話題からあんまり離れたら、ブース移りますね。
機械す。
> 疑問その1
>
> interface がよく分かっていないのですがオススメの情報源はあるでしょう
> か? ぶっちゃけあれって何が便利なのか分からんのですが(^^;
Javaの話は誰でも分かる、と前提で話したのがマズかったかも、反省します。
interfaceは、実装と設計を切り話す目的で作られたらしいです。
要するに、「こういう振る舞いを期待して」interface(仮想クラス?)
ベースで設計して、実際に差し込むモジュールには、interfaceを継承させて、
「コレはinterfaceの子クラスとゆーことで通してちょうだい」とパスポート
を渡すようなモノです。
引数に型チェックがあるタイプの言語ならでは、のツールですね。
> 疑問その2
>
> duck typing は「Ruby だから可能」なのでしょうか?
うにゃ、SmalltalkでもLispでもPythonでも出来ます。でも……
> メソッドのインターフェイス(Java的でない意味で)を決定し、同じように
> 動作する(内部の処理は全然違っても)メソッドを用意してやればそれでいい
> んじゃないの?と思っているんですけど、この解釈って乱暴すぎますか?(^^;
いや、型チェックする言語では、そも「アヒルのように見え、アヒルのように
鳴いても、アヒルの『血統書』が無いとアヒルとは認められない」わけで、
ダックタイピングは不可能なわけです。
で、偽造血統書がinerfaceなわけで……とかいうと、不穏だから(笑)もう少し
マシな言い方をすると……
・アヒルと認めるにはある協会の認定書を必要とする
・その認定書がinterfaceである
・受け入れ側では、その認定書が保証することを前提として受け入れ態勢を組む
っていうことでしょうか。
だから、Javaのinterfaceは、Mix-inの考え方とは全然関係なく、むしろ
変態……じゃなかった多態性を実現するためのツールと考えた方がいいと
思います。
……一時期、Javaを中心としてモノを考えてた時代があり、その頃は不思議に
も思わなかったのだけど、私がJava中心に疑問を覚えたのは、実はSmalltalkが
型チェックを行わない言語だったという事実に衝撃を受けたからなんですよね。
Javaか……なにもかもが懐かしい(をい……)
/機械伯爵/