Lenguaje de programación síncrona - Synchronous programming language

Un lenguaje de programación síncrono es un lenguaje de programación de computadoras optimizado para programar sistemas reactivos . Los sistemas informáticos se pueden clasificar en tres clases principales: (1) sistemas transformacionales que toman algunas entradas, las procesan, entregan sus salidas y terminan su ejecución; un ejemplo típico es un compilador; (2) sistemas interactivos que interactúan continuamente con su entorno, a su propia velocidad; un ejemplo típico es la web; y (3) sistemas reactivos que interactúan continuamente con su entorno, a una velocidad impuesta por el entorno; un ejemplo típico es el sistema de control de vuelo automático 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, a menudo también se denominan sistemas en tiempo real y se encuentran a menudo en sistemas integrados .

La programación síncrona (también programación reactiva síncrona o SRP ) es un paradigma de programación de computadoras soportado por lenguajes de programación síncronos. El principio de SRP es hacer la misma abstracción para los lenguajes de programación que la abstracción síncrona en los circuitos digitales. De hecho, los circuitos síncronos están diseñados con un alto nivel de abstracción donde se descuidan las características de temporización de los transistores electrónicos. Por lo tanto, se supone que cada puerta del circuito (o, y, ...) calcula su resultado instantáneamente, se supone que cada cable transmite su señal instantáneamente. Un circuito síncrono está sincronizado y en cada tic de su reloj, calcula instantáneamente sus valores de salida y los nuevos valores de sus celdas de memoria (pestillos) a partir de sus valores de entrada y los valores actuales de sus celdas de memoria. En otras palabras, el circuito se comporta como si los electrones fluyeran infinitamente rápido. Los primeros lenguajes de programación síncronos se inventaron en Francia en la década de 1980: Esterel , Lustre y Signal . Desde entonces, han surgido muchos otros lenguajes sincrónicos.

La abstracción sincrónica hace que el razonamiento sobre el tiempo en un programa sincrónico sea mucho más fácil, gracias a la noción de tics lógicos : un programa sincrónico reacciona a su entorno en una secuencia de ticks, y se supone que los cálculos dentro de un tick son instantáneos, es decir, como si el procesador que los ejecuta fuera infinitamente rápido. Por lo tanto, la declaración " a || b " se abstrae como el paquete " ab " donde " a " y " b " son simultáneos. Para tomar un ejemplo concreto, la declaración de Esterel " cada minuto de emisión de 60 segundos " especifica que la señal " minuto " es exactamente sincrónica con la 60ª aparición de la señal " segundo ". En un nivel más fundamental, la abstracción sincrónica elimina el no determinismo resultante del entrelazado de comportamientos concurrentes. Esto permite la 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 que se puedan utilizar como formalismos de especificación formal.

Por el contrario, en el modelo de cálculo asincrónico, en un procesador secuencial, la declaración " a || b " puede implementarse como " a; b " o como " b; a ". Esto se conoce como el no determinismo basado en el entrelazado . El inconveniente de un modelo asincrónico es que prohíbe intrínsecamente la semántica determinista (por ejemplo, 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 asincrónicos son muy útiles para modelar, diseñar y verificar sistemas distribuidos, porque son intrínsecamente asincrónicos.

También están en contraste los sistemas con procesos que interactúan básicamente de forma sincrónica . Un ejemplo serían los sistemas construidos sobre la base del modelo Comunicando procesos secuenciales (CSP) , que también permite una elección no determinista.

Idiomas sincrónicos

Ver también

Referencias

enlaces externos