| パラダイム | 命令形、同期 |
|---|---|
| デザイン: | ジェラール・ベリー |
| 開発者 | インリア |
| 初登場 | 1980年代 |
| Webサイト | 詳しくはこちら |
Esterel は、複雑なリアクティブ システムの開発のための同期プログラミング言語です。Esterelの命令型プログラミングスタイルにより、並列処理とプリエンプションを簡単に表現できます。そのため、制御中心のモデル設計に適しています。
この言語の開発は 1980 年代初頭に始まり、主にフランスのGérard Berry率いるEcole des Mines de ParisとINRIAのチームによって行われました。現在のコンパイラは Esterel プログラムを受け取り、 C コードまたはハードウェア (RTL) 実装 ( VHDLまたはVerilog )を生成します。
この言語はまだ開発中であり、いくつかのコンパイラがリリースされています。Esterel の商用開発環境はEsterel Studio です。これを商用化した会社 (Synfora) は 2007 年 4 月にIEEEとの標準化プロセスを開始しましたが、ワーキング グループ (P1778) は 2011 年 3 月に解散しました。リファレンス マニュアルは公開されています。[1]
Esterelの暫定版はRacketに実装されている。[2]
時間の多様な概念
Esterel で使用される時間の概念は、非同期言語と次の点で異なります。物理時間の概念が順序の概念に置き換えられています。イベントの同時性と優先順位のみが考慮されます。つまり、物理時間は特別な役割を果たしません。これは、時間の多形式概念と呼ばれます。Esterel プログラムは、完全に順序付けられた論理的な瞬間のシーケンスを記述します。各瞬間に、任意の数のイベントが発生します (0 を含む)。同じ論理的な瞬間に発生するイベント発生は同時であると見なされます。その他のイベントは、発生のインスタンスとして順序付けられます。ステートメントには、時間ゼロ (同じ瞬間に実行および終了) のステートメントと、規定のサイクル数だけ遅延するステートメントの 2 種類があります。
信号
シグナルは、唯一の通信手段です。値を持つシグナルと値を持たないシグナルがあります。これらはさらに、入力シグナル、出力シグナル、またはローカル シグナルに分類されます。シグナルには、瞬間的に存在するか存在しないかという特性があります。値を持つシグナルにも値が含まれます。シグナルはプログラム全体にブロードキャストされるため、どのプロセスでもシグナルを読み書きできます。値を持つシグナルの値は、シグナルが存在しない場合でも、いつでも決定できます。シグナルのデフォルトのステータスは、不在です。シグナルは、emit ステートメントを使用して明示的に存在するように設定されるまで、不在のままです。通信は瞬時に行われます。つまり、サイクルで発行されたシグナルはすぐに表示されます。同じサイクルで通信をやり取りできることに注意してください。
信号の一貫性ルール
- 各信号はサイクル内に存在するか存在しないかのどちらかであり、両方が存在することはありません。
- 作家は皆、読者よりも先に走ります。
したがって
現在 A 以外
放出A
終わり
これはエラーのあるプログラムです。ライター「emit A」はリーダー「present A」の前に実行されるべきですが、このプログラムでは「present A」が最初に実行されることが必要です。
言語ステートメント
プリミティブ エステレル ステートメント
ピュアエステレルには11の基本的なステートメントがあります。[3]
派生したエステルステートメント
エステレルにはいくつかの派生構造がある: [4] [5]
その他のエステレルの声明
完全な Esterel 言語には、モジュールの宣言とインスタンス化、変数、外部プロシージャの呼び出し、値付きシグナルのためのステートメントもあります。
例(ABRO)
次のプログラムは、入力 A と B の両方が受信されるとすぐに出力 O を出力します。入力 R が受信されるたびに動作をリセットします。
モジュール ABRO: A、B、Rを入力します。 出力O; ループ [ A を待つ || B を待つ ]; 放出O 各R 終了モジュール
エステレルの利点
- 時間モデルはプログラマーに正確な制御を与える
- 制御システムの指定に便利な並行処理
- 完全に決定論的
- 有限状態言語
- 実行時間は予測可能
- 正式に検証する方がはるかに簡単
- ハードウェアとソフトウェアの両方で実装可能
エステレルの欠点
- 言語の有限状態の性質により柔軟性が制限される(ただし、選択したアプリケーション分野では表現力は十分である)
- 意味論的課題
- 因果関係の違反を避けることは難しいことが多い
- 一般的にはコンパイルが難しいが、単純な正しさの基準が存在する
参照
- Lustre、いとこプログラミング言語
- マルチクロック仕様を可能にするデータフロー指向の同期言語SIGNAL
- Esterel Studioやその他のツールの開発元であるEsterel Technologies
- 並列プログラミングモデル
参考文献
- ^ Lefebvre, J. (2005 年 11 月 3 日). 「Esterel v7 リファレンス マニュアル バージョン v7 30 – 初期 IEEE 標準化提案」(PDF) 。Esterel Technologies。2005年 12 月 30 日時点のオリジナル(PDF)からアーカイブ。
- ^ 「ラケットのエステル」. docs.racket-lang.org。
- ^ Berry, Gérard (1999). 「純粋なエステルの構成的意味論」CiteSeerX 10.1.1.46.2076。
- ^ ベリー、ジェラール (2000 年 6 月)。 「Esterel v5 言語入門」。エコール・デ・マインとINRIA。CiteSeerX 10.1.1.3.1177。
- ^ Berry, Gérard ; Gonthier, Georges (1992 年 11 月). 「Esterel 同期プログラミング言語: 設計、セマンティクス、実装」.コンピュータプログラミングの科学. 19 (2): 87– 152. CiteSeerX 10.1.1.17.5606 . doi :10.1016/0167-6423(92)90005-V.
外部リンク
- インリアのエステレル言語
- Columbia Esterelコンパイラはオープンソースコンパイラです
