
Subtextは、アプリケーションソフトウェア開発のための、適度にビジュアルなプログラミング言語および環境です。これは、コピーされたブロックをプログラム構造の第一級プロトタイプとして扱うことで、「例中心型プログラミング」と呼ばれる新しいプログラミングモデルを開発するための実験的研究プロジェクトです。ユーザーがセルを更新する際にスプレッドシートで発生するようなライブテキストを使用して、頻繁なフィードバックを提供します。最終的には、日常的に使用できる実用的な言語となるよう開発が進められています。オープンソースソフトウェアとして公開される予定ですが、ライセンスはまだ決定されていません。
Subtextは、Jonathan Edwardsによって作成され、彼はこの言語に関する論文をOOPSLAに投稿した。この論文は2005年の会議の一部として採択された。


Subtext環境の初期のビデオプレビューは2006年頃に公開され[ 1 ] 、 SubtextプログラムのセマンティクスとSubtext環境およびランタイムとの密接な統合が示されました。
Subtext プログラムは、テキスト プログラムを入力するのではなく、さまざまな型の要素を構文ツリーに追加してリンクし、必要に応じて値や名前を入力することによって宣言および操作 (または変更) されます。Subtext 言語と環境の設計により、プログラムの表現と実行の間に区別はありません。スプレッドシートと同様に、Subtext プログラムは環境とランタイム内でライブで実行され、プログラミングはグラフィカル環境を介してこれらの実行を直接操作することです。一般的な関数型プログラミング言語とは異なり、Subtext は単純な意味論を持ち、「リアクティブ プログラミング」として知られるモデルの下で、可変状態、I/O、および並行性を必要とするリアクティブ システムにも容易に適用できます。[ 2 ]コンソール入力 (「呼び出し」) は Subtext プログラム内のデータ フローを介して利用でき、ユーザーが値を対話的に操作できます。
別の原理を用いた Subtext 言語の継続およびサブセットであるCoherenceは、実験的なプログラミング言語および環境であり、「コヒーレント反応」と呼ばれる変更駆動型計算の新しいモデルを使用して、プログラムの開発中にその効果と副作用を対話的に調整します。この言語は対話型アプリケーション ソフトウェアに特化しており、Subtext の作成者である Jonathan Edwards によって設計され、ホワイト ペーパーを公開することでその開発状況を報告しています。
副作用は、命令型プログラミングの本質であると同時に、その最大の難点でもあります。プログラマーは、互いの副作用を管理するために、アクションを慎重に調整する必要があります。このような調整は複雑で、エラーが発生しやすく、脆弱です。コヒーレント・リアクションは、副作用を自動的に調整する、変化駆動型計算の新しいモデルです。アクションを自動的に調整することで、プログラマーはいつ実行するかではなく、何を実行するかを表現できるようになります。
—ジョナサン・エドワーズ、コヒーレント反応、MIT CSAIL

状態の変化は、反応と呼ばれるイベントを引き起こし、それがさらに他の状態を変化させます。一貫性のある実行順序とは、各反応が、その変化によって影響を受ける他の反応よりも先に実行される順序のことです。一貫性のある順序は、不整合が発生したときにそれを検出し、その影響を遡って調べることで、反復的に発見されます。Coherence の基本的な構成要素は、動的に型付けされた可変ツリーです。基本的な抽象化メカニズムは仮想ツリーであり、その値は遅延的に計算され、その動作は一貫性のある反応によって生成されます。[ 4 ]