ドメイン固有言語
DSLには次のような利点がある。
DSL は問題領域に適した抽象レベルと慣用句でソリューションを表現する。そのため、その領域の専門家が DSL で書かれたプログラムを理解でき、検証でき、修正でき、さらには開発できる。ただし、実際にそうなっている実例は少ない。
コード自体がドキュメントの役割を果たす。
DSL は、品質/生産性/信頼性/保守性/移植性/再利用性を高める。
DSL はその領域のレベルで検証可能である。言語構成要素が安全である限り、それを使って書かれたプログラムは安全とみなせる。
一方で、以下のような欠点もある。
DSLを習得するのにコストがかかるのに対して、その応用範囲が相対的に狭い。
DSL自体を設計/実装/保守するのにもコストがかかり、そのための開発環境が必要である。
正しい適用範囲を探し、設定し、維持することが難しい。
ドメイン固有な部分と汎用プログラミング言語の構文とのバランス調整が難しい。
ハンドコーディングされたソフトウェアに比較して性能的に不利な可能性がある(実装しているアルゴリズムの効率の問題や、マルチコアCPU対応などのハードウェア活用度などに起因する)。
似たようなDSLが増殖する(同業各社がそれぞれDSLを開発する場合など)。
技術系でない(DSLの対象領域の)専門家は、DSLで書かれたプログラムであっても自らコードを書いたり修正したりできないことがある。
ITシステムにDSLを組み込むことは、汎用言語に比べて困難である。
1つのDSLに熟達した人材は相対的に少ないため、人件費が高くつく可能性がある。
汎用プログラミング言語に比べてコード例を見つけにくい。