DSL
Domain-Specific Language
ドメイン固有言語
汎用的すぎない適切な語彙を用いている
文法は既存言語のような複雑性は排除されている
理解可能な抽象度に合わせたセマンティクス
故に非エンジニアでも利用できる
本当に特殊な状況における処理しか書けない
無駄なことを考えずに済む
問題解決に関係ない部分は知らなくて済む
変な書き方ができない
処理系はホスト言語になる
ならないこともある
DSLの実行方法
直接実行型
よくわからん

フレームワークな立ち位置ってことか?
ホスト言語の上にAPIが用意されていてそれを使う的な
なので普通にホスト言語のシンタックスが使える(使えてしまう)
バイトコード生成型
ex. JVM向けのバイトコードを生成する
ソースコード変換型
実行する前にコードの展開処理が入る
DSLの実装方法
テキスト形式ではないDSL
ex
Intentional Software社

9章
jupyterとか?スプレッドシートとか?
グラフィカルなものもある
DSLの短所
新たな構文の場合IDEサポートが渋くなる
パフォーマンスへの影響
簡単ではあるが、新しい言語を覚える感じになる
具体例
UI設計向け
機能の使い回しとかは出来ない
堅牢なフロントエンド開発向け
ゴリゴリのブラウザパフォチューとかはできない
DB操作向け
具体的にどうのようにデータを取得するかなどの指定はできない
数学者向け
Very-high-speed integrated circuit Hardware Description Language
電子回路設計の自動化
ビルド向け
パーサー生成
RubyのTDD向け
例えば
グラフィックス
アニメーション
コンピュータ・ミュージック
信号処理
解析処理
印刷
財務関係
ロボット
など
この抽象化によって、それ以上でもそれ以下でもない、適切な量の情報を捕捉できる
本当にそうだな


参考