DSL / Elements of language workbenches


DSL

言語ワークベンチの要素

一言要約

要約

言語ワークベンチは見た感じかなり違うように見えるが、それらが共有する共通の要素がある。

  • セマンティックモデルスキーマはセマンティックモデルのデータ構造を、たいていメタモデルを使って、静的なセマンティックとともに定義する。
  • DSL編集環境DSLスクリプトを書く人に対して、ソース編集あるいはプロジェクショナル編集(projectional editingって???)を通して、リッチな編集経験を定義する。
  • セマンティックモデルビヘイビアはコード生成とともにセマンティックモデルを作り直すことによって、DSLスクリプトのすることを定義する。

言語ワークベンチはシステムの中核としてセマンティックモデルを使用する。
結果として、モデルを定義する助けとなるツールを提供する。
プログラミング言語でセマンティックモデルを定義する代わりに、モデルに取り掛かるのにラインタイムツールを使うのを可能にする特別なメタモデリング構造の中で定義する。

この結果として、スキーマとふるまいの分離がある。
セマンティックモデルスキーマは本質的にたいしてふるまいのないデータモデルである。
セマンティックモデルのふるまいの様相はデータ構造の外部から、主としてコード生成の形式でくる。
これまでのところコード生成はセマンティックモデルを実行させる最も人気のある方法である。

言語ワークベンチのもっとも面白く重要な様相の一つが編集環境である
。 これはおそらくセマンティックモデルをポピュレートし操作するツールの、ずっとよりリッチな範囲を提供しているソフトウェア開発の重要な様相である。
テキスト編集に近いものから、図形としてDSLスクリプトを書くことを提供するグラフィカルな編集へ、さらに通常のプログラミング言語よりスプレッドシートで作業するのに近い経験を提供する「実例プログラミング」とファウラーが呼ぶものを使う環境へ変動する。

ツールの新しさと不安定さの問題を提起するだろうが、いくらかの永続的な関連を持つであろうと感じる2つの一般原則、スキーマ定義とプロジェクショナル編集がある。(意味不明)

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

担当者のつぶやき

相変わらず個人的には翻訳しづらい英語で。。。


みんなの突っ込み