『ドメイン特化言語』の第I部を読んだ。まえがきによるとこれで1冊分なので、読み終えたことにして、自分なりの理解をこのエントリィにまとめる。ちなみに、後半はリファレンスで、必要に応じて参照するために使う部分とのこと。 そのため,本書は2段構成にしました.2段構成の書籍とは本来は2冊にすべきところを1つの表紙でまとめた書籍のことです. 〈ドメイン特化言語〉は、英語だと"Domain Specific Language (DSL)"で、この本では、次のように定義されている。 特定のドメインに集中し,限定された表現力を備えたコンピュータープログラミング言語 この定義を読んだだけでは、分かったような分からないような。とうわけで具体例を眺めてみると、正規表現やCSS、Antが挙げられている(Antは肥大化して汎用言語化しているけれど)。 意外だったのは、名前に反してドメインへの集中=特化が、軽く扱われていたこと。ドメインへの特化よりも、表現力が限定的されていることを強調している。 ドメインへの集中は,限定的な表現力の結果にすぎません. DSLでない例として、R言語が挙げられている。統計処理というドメインに特化しているけれど、制御構文などが用意されているから、汎用言語であってDSLではないとのこと。統計処理はドメインとして大き過ぎると思うけれど、それは別にしても、確かにR言語の表現力は強力でスパゲッティコードだって書ける。 表現力は豊かな方が良さそうなものなのに、わざわざDSLを作る4つの理由が、「2.2 なぜDSLを使うのか?」に書かれている。1, 2つ目は分かりやすい。3つ目は、まだメリットを理解しきれていない。次の代替計算モデルと切り離しにくいように思う。最後の代替計算モデルは、うっすらとなら理解できた。ドメインに合わせたパラダイムを使える、ということだと認識している。その上、既に使っているけれど、計算モデルを意識していなかったDSL (Antなど) についての理解を進めてくれた。 2.2.1 開発生産性の向上 2.2.2 ドメインエキスパートとのコミュニケーション 2.2.3 実行コンテキストの移動 2.2.4 代替計算モデル 代替計算モデルの提供は強力だけれど難しいように思う。しかも、きっと多くの場合で実行コンテキストの移