DSL / Evolving into Generality


DSL

汎用言語への進化

一言要約

外部DSLは汎用言語へと進化しがち。内部DSLならホスト言語の機能を使えるため、こうした問題は発生しない。

要約

  • Antは最も成功した外部DSLのうちの1つだが、汎用化の末に「制限された表現力」を持つ、とは言えなくなっている。
    • Sendmailも似たような道を辿った。
  • こうした汎用化への希求は、外部DSLに常につきまとう。解決のための単純な答えはなく、常に気をつけること。
  • より複雑なケースでは、別の言語を作ることも有効。この言語を変換し、元の単純な言語に変換することもできる。
  • 内部DSLではこうした問題は起きないが、ホスト言語とDSLの結合が強くなりすぎてDSLが持つFeelが失われる、という類似した問題は存在する。

ファウラーへのフィードバック

担当者のつぶやき

  • Antはひどいですね。IfとかForとかありますからね。そしてそれを駆使して作られた我社のビルドツール…orz
  • 特定用途向けの拡張DSLをトランスレートして、基本となるDSLにする、というのはjjTreeが良い例かと。

みんなの突っ込み