身近なDSLというとSQLだけど、ORMというかExpression Treeみたいなことをしていると、SQLはもっと機械に優しい構文の方が良いんじゃない?、とか思ってみたりして(´∀`)

まあ、それを言ったら、いつまでRDBなんかを使っているんだ?、ってことにもなるけどさ(・ω・)

で、週末に届いた本。

ドメイン特化型開発 VSとDSLによる次世代モデル駆動開発 (Microsoft .net Development Series)

ドメイン特化型開発 VSとDSLによる次世代モデル駆動開発 (Microsoft .net Development Series)

DSL Toolsの本ですが。
とりあえずざっと目を通しただけ。
今週はSilverlight 2本とかも届くので、しばらく積読になりそうですが(´・ω・`)


コード生成型の外部DSLって使いどころ(DSLの設計)が難しいような気もするけど。
どこら辺が難しいと思うかと言うと、DSL自体はメタ情報ではなくて、オリジナルのメタ情報から生成した単なる表記になっちゃいそうな所。
例えば、DBのスキーマからデータアクセスクラスを作るようなケースを想定すると、メタ情報はあくまでDBのスキーマであって、DSLはDBのスキーマから生成したメタ情報の表記でしかなくなっちゃうというか。
だったらDBのスキーマから直ソースを生成するか、内部DSLとか、実行時に動的に処理を生成した方が簡潔になるんじゃない(゚Д゚)?、っと思ってしまうわけで。
オリジナルのメタ情報→DSLの流れだけではなくて、DSL→オリジナルのメタ情報のラウンドトリップがあればまた別かもしれないけれど。


この辺を考えた時の、設計というか使いどころが難しいと思うのよね(・ω・)