LocalazyLocalazy
Esterel é uma linguagem de programação única concebida para o desenvolvimento de sistemas críticos de segurança. Baseia-se no modelo de programação síncrona, o que permite o desenvolvimento fácil de sistemas altamente concorrentes e em tempo real. A língua foi desenvolvida na década de 1980 por uma equipa do Instituto Francês de Investigação em Informática e Controlo (INRIA), liderado pelo Professor Gerard Berry. Esterel tem sido utilizado numa vasta gama de aplicações, incluindo o desenvolvimento dos sistemas de controlo de aeronaves Airbus A380, o sistema de controlo de foguetes Ariane 5 francês, e o Reactor de Fusão Tokamak supercondutor japonês. O modelo de programação síncrona utilizado pela Esterel baseia-se no conceito de "sinais" que são variáveis que podem assumir um conjunto finito de valores. Estes valores são tipicamente booleanos (verdadeiro/falso) ou inteiros (0, 1, 2, etc.). Um sinal só pode mudar de valor em pontos específicos no tempo, chamados "eventos". Os eventos podem ser "externos" (desencadeados por uma entrada externa, tal como uma pressão de botão) ou "internos" (desencadeados pelo próprio programa). Os programas Esterel são construídos a partir de um conjunto de "módulos" que são ligados entre si para formar um gráfico dirigido. Cada módulo tem um conjunto de portas de entrada e de saída, e um conjunto de "sinais" que estão ligados às portas. Os módulos podem ser ligados entre si em qualquer ordem, e a ordem em que são executados é determinada pelo "fluxo de sinais" através do gráfico. O compilador Esterel irá gerar automaticamente o código que irá executar os módulos na ordem correcta, com base no fluxo de sinal. Isto permite o fácil desenvolvimento de sistemas altamente concorrentes, uma vez que o programador não precisa de se preocupar com a ordem em que os módulos serão executados. A utilização do modelo de programação síncrona permite também o desenvolvimento de sistemas em tempo real, uma vez que o timing dos eventos pode ser controlado com precisão. Os programas Esterel podem ser compilados para funcionar numa vasta gama de plataformas, incluindo sistemas incorporados. A língua Esterel tem tido muito sucesso no desenvolvimento de sistemas críticos de segurança, devido à sua capacidade de desenvolver facilmente sistemas simultâneos e em tempo real. Tem sido utilizada numa grande variedade de aplicações, incluindo sistemas de controlo de aeronaves, sistemas de controlo de foguetes, e sistemas de controlo de reactores de fusão.