Lustre es un lenguaje de programación de flujo de datos sincrónico , declarativo y formalmente definido para programar 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 idioma en las Actas de 1991 del IEEE. [1] En 1993 progresó a 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 aviones , [2] helicópteros y plantas de energía nuclear .
Estructura de los programas Lustre
Un programa Lustre es una serie de definiciones de nodos , escritas como:
nodo foo (a: bool) devuelve (b: bool);dejar 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.
Variables internas
Las variables internas adicionales se pueden declarar de la siguiente manera:
nodo Nand (X, Y: bool) devuelve (Z: bool); var U: bool; dejar 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;
y Z = not U;
no cambia el resultado.
Operadores especiales
pre pag | Devuelve el valor anterior de p |
p -> q | Establezca p como el valor inicial de la expresión q |
Ejemplos de
Detección de bordes
Nodo Edge (X: bool) devuelve (E: bool);dejar E = falso -> X y no pre X;tel
Ver también
- Esterel
- SIGNAL (otro lenguaje síncrono orientado al flujo de datos)
- Lenguaje de programación síncrono
- Programación de flujo de datos
Referencias
- ^ [1] N. Halbwachs y col. El lenguaje de programación de flujo de datos síncrono LUSTER. En Proc. IEEE 1991 Vol. 79, No. 9. Consultado el 17 de marzo de 2014.
- ^ "Historias de éxito de SCADE" . Consultado el 8 de junio de 2013 .
enlaces externos
- Synchrone Lab [ enlace muerto ] Sitio web oficial
- Página del producto SCADE