Lustre (мова програмування)
Lustre — це формально визначена, декларативна та синхронна мова програмування потоків даних для програмування реактивних систем. Вона почалася, як дослідницький проєкт на початку 1980-х років. Формальну презентацію мови можна знайти в Proceedings of the IEEE за 1991 рік. У 1993 році мову впровадили в практичне, промислове використання як основну мову промислового середовища SCADE, розробленого Esterel Technologies. Зараз вона використовується для програмного забезпечення критично важливих систем керування на повітряних суднах[1]. вертольотах і атомних електростанціях.
Програма 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
- ↑ SCADE Success Stories. Процитовано 8 червня 2013 року.
- Synchrone Lab [Архівовано 2020-11-25 у Wayback Machine.] Офіційний вебсайт
- SCADE сторінка продукту