Lustre — это формально определенный , декларативный и синхронный язык программирования потоков данных для программирования реактивных систем. Он начинался как исследовательский проект в начале 1980-х годов. Формальное представление языка можно найти в Трудах IEEE 1991 года. [1] В 1993 году он перешел к практическому промышленному использованию в коммерческом продукте в качестве основного языка промышленной среды SCADE, разработанной Esterel Technologies . В настоящее время он используется для критического программного обеспечения управления в самолетах , [2] вертолетах и атомных электростанциях .
Программа Lustre представляет собой ряд определений узлов , записанных следующим образом:
узел foo ( a : bool ) возвращает ( b : bool ); пусть b = не a ; tel
Где foo
— имя узла, a
— имя единственного входа этого узла, b
— имя единственного выхода. В этом примере узел foo
возвращает отрицание своего входа a
, что является ожидаемым результатом.
Дополнительные внутренние переменные могут быть объявлены следующим образом:
узел Nand ( X , Y : bool ) возвращает ( Z : bool ); var U : bool ; пусть U = X и Y ; Z = не U ; tel
Примечание: порядок уравнений не имеет значения, порядок строк U = X and Y;
не Z = not U;
влияет на результат.
узел Edge ( X : bool ) возвращает ( E : bool ); пусть E = false -> X и не pre X ; tel