ドメイン特化言語(DSL)

先日書いた特定の問題領域(ドメイン)のための独自の言語のことをドメイン特化言語DSL)というようです。
Martin Fowler氏がドメイン特化言語について書いていました。

ドメイン特化言語
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?DomainSpecificLanguage

ドメイン特化言語は書籍「達人プログラマー―システム開発の職人から名匠への道」にあるメタプログラミングに最適な言語ということになります。
ドメイン特化言語を開発する場合のアプローチとして、独自の言語を開発する方法と汎用的な言語をカスタマイズする方法が考えられます。
私はドメイン特化言語を開発するための言語を調査していたわけですが、ここ数日使ってみた感じではRubyがもっとも有力な候補になっています。
上記のURLのWEBページにMartin Fowler氏が書いていることもRubyが(そしてLispSmalltalkも)ドメイン特化言語の記述に適していることを示しています。
Rubyは最近非常に注目を集めているのですが、にわかのユーザはこのような観点はあまり認識されていないかもしれません。


あとドメイン特化言語の選択の上で重要な観点として、単にソースを作成するために補助的に使用するのか、アプリケーションの一部として組み込んで使用する*1のかということです。
前者であれば開発環境の一部として利用できれば良いのですが後者の場合には実行環境にどのように配置されるのか、例えばクライアント端末に実行環境をインストールすることがゆるされるのかなどが要件となります。
そんなわけで、Linuxは問題ないと思いますが、MicrosoftIronRubyなどでRubyを支持してくれることを大いに期待したいと思います。

*1:アプリケーションの一部として組み込んで使用することをMartin Fowler氏は内部DSLと言っています。
「内部DSLスタイル」
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?InternalDslStyle