Articulo de referencia

Lenguaje de programación síncrono

Un lenguaje de programación síncrono es un lenguaje de programación informática optimizado para programar sistemas reactivos . Los sistemas informáticos se pueden clasificar en ...

Un lenguaje de programación síncrono es un lenguaje de programación informática optimizado para programar sistemas reactivos .

Los sistemas informáticos se pueden clasificar en tres clases principales:

  1. Los sistemas transformacionales toman algunas entradas, las procesan, entregan sus salidas y finalizan su ejecución. Un ejemplo típico es un compilador.
  2. Los sistemas interactivos interactúan continuamente con su entorno, a su propio ritmo. Un ejemplo típico es la web.
  3. Los sistemas reactivos interactúan continuamente con su entorno, a una velocidad impuesta por este. Un ejemplo típico es el sistema de control automático de vuelo de los aviones modernos. Por lo tanto, los sistemas reactivos deben reaccionar a los estímulos del entorno dentro de límites de tiempo estrictos. Por esta razón, también se les suele llamar sistemas en tiempo real y se encuentran frecuentemente en sistemas embebidos .

La programación síncrona , también llamada programación reactiva síncrona ( PRS ), es un paradigma de programación informática que utiliza lenguajes de programación síncronos. El principio de la PRS consiste en aplicar a los lenguajes de programación la misma abstracción que a los circuitos digitales. Los circuitos síncronos se diseñan con un alto nivel de abstracción, donde se ignoran las características de temporización de los transistores electrónicos. Por lo tanto, se asume que cada puerta lógica del circuito (OR, AND, etc.) calcula su resultado instantáneamente, y que cada cable transmite su señal de forma instantánea. Un circuito síncrono se sincroniza con un reloj y, en cada ciclo, calcula instantáneamente sus valores de salida y los nuevos valores de sus celdas de memoria (latches) a partir de sus valores de entrada y los valores actuales de dichas celdas. En otras palabras, el circuito se comporta como si los electrones fluyeran a una velocidad infinita. Los primeros lenguajes de programación síncrona se inventaron en Francia en la década de 1980: Esterel , Lustre y SIGNAL . Desde entonces, han surgido muchos otros lenguajes síncronos.

La abstracción síncrona simplifica enormemente el razonamiento sobre el tiempo en un programa síncrono, gracias a la noción de ciclos lógicos : un programa síncrono reacciona a su entorno en una secuencia de ciclos, y se asume que los cálculos dentro de un ciclo son instantáneos, es decir, como si el procesador que los ejecuta fuera infinitamente rápido. La instrucción "a||b" se abstrae, por lo tanto, como el paquete "ab", donde "a" y "b" son simultáneos. Para poner un ejemplo concreto, la instrucción de Esterel "every 60 second emit minute" especifica que la señal "minute" es exactamente síncrona con la sexagésima ocurrencia de la señal "second". En un nivel más fundamental, la abstracción síncrona elimina el no determinismo resultante de la intercalación de comportamientos concurrentes. Esto permite una semántica determinista , lo que hace que los programas síncronos sean susceptibles de análisis formal, verificación y generación de código certificado, y utilizables como formalismos de especificación formal .

En cambio, en el modelo de computación asíncrono, en un procesador secuencial, la instrucción "a||b" puede implementarse como "a;b" o como "b;a". Esto se conoce como no determinismo basado en el entrelazado . La desventaja de un modelo asíncrono es que intrínsecamente prohíbe la semántica determinista (por ejemplo, las condiciones de carrera), lo que hace que el razonamiento formal, como el análisis y la verificación, sea más complejo. No obstante, los formalismos asíncronos son muy útiles para modelar, diseñar y verificar sistemas distribuidos, porque son intrínsecamente asíncronos.

Por otro lado, existen sistemas con procesos que interactúan de forma síncrona . Un ejemplo serían los sistemas basados ​​en el modelo de procesos secuenciales comunicantes (CSP) , que permite la elección determinista (externa) y no determinista (interna).

Lenguas síncronas

Véase también

Referencias

  • Nicolas Halbwachs. "Programación síncrona de sistemas reactivos". Kluwer Academic Publishers, 1993. https://www-verimag.imag.fr/~halbwach/newbook.pdf
  1. G. Berry y G. Gonthier. El lenguaje de programación síncrono ESTEREL: diseño, semántica e implementación. Science of Computer Programming , 19(2), 1992.
  • El grupo Synchronous del laboratorio Verimag.
  • El lenguaje de programación SIGNAL .
  • Unificación de modelos síncronos y asíncronos para lenguajes de programación paralelos : propone lenguajes paralelos basados ​​en C , que permiten a los programadores especificar y gestionar el paralelismo en una amplia gama de arquitecturas informáticas.