著作一覧 |
ライブラリの内側を実装する場合と外側を実装する場合の一番の相違は、糖衣構文の下の生な実現方法についての知識の必要性の有無だ。
IDispatchとIDLを知らずにCOMのコンポーネントを開発するのは相当に無理がある(例:MFCを使ったActiveXコントロール)。同様に、LINQで操作できるオブジェクトの開発を行うには、IQueryableを知らずに何かするのは無理がある。そこまで行かずともforeachできるようにするにはIEnumerableを知らずに作るわけにはいかない。
でも、外側だって、それを結局は知らなければデバッグも何もできないのではなかろうか。
それに、DSL的なデータ構造を使ったプログラミングをするには、オブジェクトのみならず型も抽象化して扱う必要があるので、リフレクションや糖衣構文の下にある本来の呼び出し方法を知らないと無理がある(たとえばIDEのインテリセンスに頼って500個のオブジェクトに対する5000行列挙された手続きを読むより、500要素の配列を列挙してループで操作する10行のコードのほうが読みやすい)。
というわけで、結局は生なAPIを知らなければ相当辛い。
入門書に歯がゆい思いをするのは、そこの説明がおざなりであったり、無かったりすることだ。
ジェズイットを見習え |