DSL 【Domain-Specific Language】 ドメイン固有言語 / ドメイン特化言語
概要
DSL(Domain-Specific Language)とは、特定の作業の遂行や問題の解決に特化して設計されたコンピュータ言語。特定用途向けのプログラミング言語やマークアップ言語、モデリング言語などが該当する。特定の領域や対象に関連する処理や定義の記述に特化した語彙や仕様を持つ言語のことを指し、C言語やXMLのように特定の用途や目的を持たない汎用のプログラミング言語やマークアップ言語などと対比される。
ただし、このような機能があればDSLであるとか、このような水準に達していれば汎用言語であるといったような厳密な基準や定義はなく、Webページの動的な生成に特化したDSLとして産まれながら、次第に機能が拡張され汎用的になっていったPHPのような例もある。
DSLには対象や領域ごとに様々な言語がある。各分野で特に著名な例としては、Webページ記述のためのHTML、スタイル記述言語のCSS、組版言語のTeX/LaTeX、ページ記述言語のPostScript、データベースへの問い合わせ言語SQL、電子回路設計のためのハードウェア記述言語(HDL)であるVerilogやVHDL、文字列のパターンを表現する正規表現、文脈自由文法を定義するBN記法(BNF)などがある。
元になる汎用の言語(ホスト言語)が存在し、その語彙や構文を借りながら、複雑な機能を制限、省略するなどして定義されたものを「組み込みDSL」(embedded DSL)あるいは「内部DSL」(internal DSL)と呼び、既存の言語とは無関係に独立に定義されたものを「外部DSL」(external DSL)という。
(2020.3.17更新)