Lingua Francaは、予測可能で並行処理が可能、かつ時間制約のあるシステムの開発を促進するために設計された調整言語です。開発者がスレッド、ロック、同期プリミティブを手動で管理する必要がある従来のプログラミング言語とは異なり、Lingua Francaはリアクター指向のパラダイムを採用しています。このアプローチにより、開発者はリアクティブなコンポーネントを指定し、それらをより大きなシステムへと構成することができます。このモデルを使用することで、フレームワークは構造的にレースコンディションを排除することを目指しており、アクター、Pub-Sub、またはサービス指向アーキテクチャといった一般的な並行プログラミングフレームワークよりも再現性の高い動作を提供します。
Lingua Francaの核心的なメカニズムは、「リアクター」の定義に関わります。これは、定義された因果関係分析を通じて相互作用するリアクティブなコンポーネントです。例えば、「じゃんけん」のゲームにおいて、この言語は2人のプレイヤーが同時に選択を公開することを保証します。もしプログラムのロジックによって、一人のプレイヤーが自分の選択を公開する前に相手の選択を観察できてしまう場合、Lingua Francaの因果関係分析はこれを因果ループとして特定し、プログラムを無効とマークします。これにより、システム内において「同時に」という言葉が正確で決定論的な意味を持つことが保証されます。さらに、この言語はタイミングのセマンティクスをコアに直接組み込んでおり、並行プログラミングで通常必要とされる複雑なタイミングロジックなしに、時間制約のあるタスクを正確に処理することを可能にします。
Lingua Francaの定義的な特徴の一つは、それがスタンドアロンのプログラミング言語ではなく、既存の言語と連携する調整レイヤーであるという点です。開発者は、リアクターの内部ロジックをC、C++、Python、TypeScript、またはRustなどの言語で記述することができます。これにより、最小限の修正で単一マシンのマルチスレッドアプリケーションから分散アーキテクチャへのシームレスな移行が可能になります。しかし、このフレームワークは分散システムやスレッド管理の複雑さを抽象化する一方で、実際のビジネスロジックについては基礎となる言語の能力に依存します。主なトレードオフは、並行処理と分散処理を簡素化する一方で、開発者は非リアクティブなコード部分において、選択したホスト言語のランタイムと機能の制約内で作業を継続する必要があるという点です。
