Lustre語言
Lustre是形式化定義的、聲明式和同步式的數據流程編程語言,用於響應式系統編程。它在1980年代前期成為了研究專案,受到過Lucid語言的影響[1]。這個語言的形式表述可以在1991年的《Proceedings of the IEEE》找到[2]。在1993年,它發展進入實際的商業和工業使用,成為一個商業產品,它是愛斯特爾技術公司開發的工業環境SCADE的核心語言。它被用於在空中巴士[3]、空客直升機和核電廠的關鍵控制軟件中。
編程範型 | 數據流程, 同步式 |
---|---|
設計者 | J.L.Bergerand, P.Caspi, N.Halbwachs, J.A.Plaice. |
實作者 | 愛斯特爾技術公司 |
釋出時間 | 1985年 |
許可證 | 專有軟件 |
主要實作產品 | |
SCADE的核心語言 | |
啟發語言 | |
Lucid | |
影響語言 | |
Lucid Synchrone |
Lustre程式的結構
編輯Lustre程式是一系列的「節點」定義,寫為:
node foo(a : bool) returns (b : bool); let b = not a; tel
這裏的foo
是節點的名字,a
是這個節點的單一輸入的名字,而b
是單一輸出的名字。在這個例子中,節點foo
返回對它的輸入a
的否定,這是於預期的結果。
內在變數
編輯額外的內部變數可以聲明如下:
node Nand(X,Y: bool) returns (Z: bool); var U: bool; let U = X and Y; Z = not U; tel
注意:等式的次序並不重要,行U = X and Y;
和Z = not U;
的次序不改變結果。
特殊算子
編輯pre p |
返回p 以前的值
|
p -> q |
設置p 為表達式q 的初始值
|
例子
編輯邊緣檢測
編輯node Edge (X : bool) returns (E : bool); let E = false -> X and not pre X; tel
參見
編輯- Esterel
- SIGNAL(另一種面向數據流程同步語言)
- 同步式編程
- Lucid (程式語言)
- 數據流程編程
參照
編輯- ^ Automatic control systems programming using a real-time declarative language. J.L.Bergerand, P.Caspi, N.Halbwachs, J.A.Plaice. IFAC Proceedings Volumes Volume 19, Issue 6, May 1986, Pages 89-93.
- ^ The Synchronous Data Flow Programming Language LUSTRE[失效連結]. N. Halbwachs et al. In Proc. IEEE 1991 Vol. 79, No. 9. Accessed 17 March 2014.
- ^ SCADE Success Stories. [8 June 2013]. (原始內容存檔於2019-01-30).
外部連結
編輯- Synchrone Lab (頁面存檔備份,存於互聯網檔案館) Official website
- SCADE product page