「目次見てびっくりしたよ」
「なんで?」
「ほとんどが知ってる話題だから」
「うそー」
「一部は、いくつかの本で話題にした話でもある」
「どの本?」
「[完全版] C#実践ダイナミックプログラミングとか」
「だって違うじゃないか。メタプログラミングとダイナミックプログラミングじゃ、話が違うじゃないか」
「いや、結果的に同じなんだよ」
「えーっ」
「他にもANGFはリフレクションの塊だし、トイ言語作っているときはReflaction.Emitでコード生成したこともあるし、式ツリーをいじったこともあるし、けっこう知ってる話題が多い本みたいだな」
「じゃあ、質問。どっちの本を書うと良いと思う?」
「どっちも買うといいと思うよ。重複してない話題もあるし」
「かなりの出費だよ!」
オマケ §
「それでメタプログラミングって、やった方がいいと思う?」
「いいと思うぞ。というか、ある程度進むと不可避だ」
「なんで?」
「ソースコードが大きくなってくると、複雑さの爆発を防ぐためにどうしても使った方が良くなる」
「どういうこと?」
「似たようなコードがいくつも必要とされるが、1つのソースには集約できない場合は、メタプログラミングで解決しろってことだ」
「それって、10行ぐらいのサンプルソースで良いとか悪いとか言ってる人たちには縁が無い話題だってこと?」
「100行でも縁が無いだろうさ」
「じゃあ、結論はいつも通り、手を動かせってことだね」
「そうだ。100行だけソース書いてあとはひたすら日本語の舌戦で戦ってるような口だけ人間には関係無い話だ。そういう人間に堕落したくなければ、とりあえず口より先に手を動かせ。話はそれからだ」