togetter ”言語内 DSL を考える” を 読んだ
を読んだ. DSLs 3.7, 6 を連想させる内容だった。
マクロを例にして話が進む。ちょっと想像が出来なかった。
個人的には、内部の構造がちらついても良いんだが
DSLの記述層の何処に間違いがあるかが分かってほしいのは確か。
Internal DSLの Expression Builderを使っている分には、静的言語であればIDEの補完で間違いを減らせるし
ブロックベースのRubyでDSLを組んでも、DSL層の記述部分の間違いが、スタックトレースの上位に間違いが表示されると思うので、それほど気にならない気がする。
ただ、これは、Ruby言語を使っているプログラマー、DSLのメカニズムをちょっと知ってみたいと思うプログラマー目線。
DSL記述層と内部メカニズムの境界をガチにはっきりさせたいなら、External DSLを選択した方がよいのだろう。
Internal DSL/External DSLを選択する理由は、6章読を
External DSLに比べて、Internal DSLの方が、相対的にDSLの仕組みの構築の学習コストや実際につくり込みコスト、
プログラミング設計などしないプログラマには、自分で使い慣れた言語で記述できて親しみやすい、などなど。
(External DSLの実現方法の選択は色々あるが、XMLを使って自分でパーサをつくり込まない方法の他に、Parser Generatorとか Tree Constructionとか プログラミング言語をつくるのと似た仕組みも範囲内。)
External DSLの魅力は、DSL記述のノイズをInternal DSLよりも取り除け、
より Domain Expertとのコミュニケーションに注力できる かつ 実行可能な言語が設計できる、
DSL記述層と内部のメカニズムの境界をもっと明確にできる などなどか
Domain-Specific Languages (Addison-Wesley Signature Series (Fowler))
- 作者: Martin Fowler
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2010/09/23
- メディア: ハードカバー
- 購入: 1人 クリック: 55回
- この商品を含むブログ (10件) を見る