『ドメイン特化言語』の第I部を読んだ。まえがきによるとこれで1冊分なので、読み終えたことにして、自分なりの理解をこのエントリィにまとめる。ちなみに、後半はリファレンスで、必要に応じて参照するために使う部分とのこと。
〈ドメイン特化言語〉は、英語だと"Domain Specific Language (DSL)"で、この本では、次のように定義されている。
意外だったのは、名前に反してドメインへの集中=特化が、軽く扱われていたこと。ドメインへの特化よりも、表現力が限定的されていることを強調している。
表現力は豊かな方が良さそうなものなのに、わざわざDSLを作る4つの理由が、「2.2 なぜDSLを使うのか?」に書かれている。1, 2つ目は分かりやすい。3つ目は、まだメリットを理解しきれていない。次の代替計算モデルと切り離しにくいように思う。最後の代替計算モデルは、うっすらとなら理解できた。ドメインに合わせたパラダイムを使える、ということだと認識している。その上、既に使っているけれど、計算モデルを意識していなかったDSL (Antなど) についての理解を進めてくれた。
代替計算モデルの提供は強力だけれど難しいように思う。しかも、きっと多くの場合で実行コンテキストの移動を伴うだろうし。そうなると、移動前後の計算モデルと実行コンテキストへの理解が必要になる。その上、当然なんだけれど、ドメインへの理解も深めていく必要がある。本当に難しいのは、後者――理解を〈セマンティックモデル〉として表現・実装することなんだろうけれど。
ともあれ、作るのは難しそうだけれど、既に使っているDSLへの見方を広げて貰えた。読んでよかった。手に入りにくくなってしまったけれど、見つかってよかった。
そのため,本書は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 代替計算モデル
代替計算モデルの提供は強力だけれど難しいように思う。しかも、きっと多くの場合で実行コンテキストの移動を伴うだろうし。そうなると、移動前後の計算モデルと実行コンテキストへの理解が必要になる。その上、当然なんだけれど、ドメインへの理解も深めていく必要がある。本当に難しいのは、後者――理解を〈セマンティックモデル〉として表現・実装することなんだろうけれど。
ともあれ、作るのは難しそうだけれど、既に使っているDSLへの見方を広げて貰えた。読んでよかった。手に入りにくくなってしまったけれど、見つかってよかった。