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