言語ワークベンチ

2008年9月9日

Language Workbench は、2005年に私が提唱した、複数の統合されたドメイン固有言語を介してソフトウェアを構築するように設計された、新しいクラスのソフトウェア開発ツールを表す用語です。このようなツールはまだまだ主流からは程遠いですが、開発は現在も継続しており、興味深いものとなっています。プログラミングの「風景」を大きく変えると感じているものの一つです。

言語ワークベンチは、言語指向プログラミングのコンセプトをサポートします。これは、システムのさまざまな部分を特定し、各領域に固有のドメイン固有言語(あるいは構築)を使用してソフトウェアシステムを構築するという概念です。ワークベンチは、これらの言語の定義と、それらを組み合わせて一貫性のある全体に統合します。

ワークベンチがサポートする DSL を定義するには

  • 言語のセマンティックモデルのスキーマを定義する
  • 言語向けの1つ以上のリッチ編集環境を定義する
  • 解釈とコード生成の組み合わせを通じて、言語の動作セマンティクスを定義する。

これらのツールの特徴は、編集環境にあります。人々は長年、外部DSLを作成してきましたが、これらはテキストエディタで編集します。言語ワークベンチは、これを更に進めて、最新のPostIntelliJ IDEと同等か、それ以上のレベルに達しようとしています。一部の言語ワークベンチは通常のテキストを編集することをサポートし、また一部は、構文解析を必要としない構造化テキスト、ダイアグラム、またはその両方をサポートする、射影エディタを使用します。

特に強力な編集スタイルは、例の実行をエディターに織り込んだ環境です。私はこれをIllustrativeProgrammingと呼んでいます。最も一般的な例はスプレッドシートです。スプレッドシートを編集すると、最初に表示されるのは、動作定義を表す数式ではなく、数式から計算された数値です。プログラムとサンプルデータは織り込まれているので、プログラムを編集するとすぐに結果が表示されます。この編集スタイルは、プログラミング言語の通常の概念とは根本的に異なり、ドメインのエキスパートをソフトウェア開発に深く関与させる上で非常に重要になる可能性があります。

私は2005年に言語ワークベンチに関する一連の論文を書きました。これらの考えのいくつかは修正する必要はありますが、現時点では、それらに関する最も深い議論です。