Lustre es un lenguaje de programación de flujo de datos sincrónico , declarativo y formalmente definido para la programación de sistemas reactivos. Comenzó como un proyecto de investigación a principios de la década de 1980. Se puede encontrar una presentación formal del lenguaje en las Actas del IEEE de 1991. [1] En 1993 progresó hacia un uso industrial práctico en un producto comercial como el lenguaje central del entorno industrial SCADE, desarrollado por Esterel Technologies . Ahora se utiliza para software de control crítico en aeronaves , [2] helicópteros y plantas de energía nuclear .
Un programa Lustre es una serie de definiciones de nodos , escritas como:
nodo foo ( a : bool ) devuelve ( b : bool ); sea b = no a ; tel
Donde foo
es el nombre del nodo, a
es el nombre de la entrada única de este nodo y b
es el nombre de la salida única. En este ejemplo, el nodo foo
devuelve la negación de su entrada a
, que es el resultado esperado.
Se pueden declarar variables internas adicionales de la siguiente manera:
nodo Nand ( X , Y : bool ) devuelve ( Z : bool ); var U : bool ; sea U = X e Y ; Z = no U ; tel
Nota: El orden de las ecuaciones no importa, el orden de las líneas U = X and Y;
no Z = not U;
cambia el resultado.
nodo Edge ( X : bool ) devuelve ( E : bool ); sea E = falso -> X y no pre X ; tel