LocalazyLocalazy
Esterel je jedinečný programovací jazyk určený na vývoj bezpečnostných systémov. Je založený na synchrónnom programovacom modeli, ktorý umožňuje jednoduchý vývoj vysoko súbežných systémov a systémov reálneho času. Jazyk vyvinul v 80. rokoch 20. storočia tím vo francúzskom Inštitúte pre výskum v oblasti informatiky a riadenia (INRIA) pod vedením profesora Gerarda Berryho. Jazyk Esterel bol použitý v mnohých aplikáciách vrátane vývoja riadiacich systémov lietadla Airbus A380, francúzskeho riadiaceho systému rakety Ariane 5 a japonského supravodivého tokamakového fúzneho reaktora. Synchrónny programovací model, ktorý používa Esterel, je založený na koncepte "signálov", čo sú premenné, ktoré môžu nadobúdať konečnú množinu hodnôt. Tieto hodnoty sú zvyčajne logické (pravda/nepravda) alebo celočíselné (0, 1, 2 atď.). Signál môže meniť hodnotu len v určitých časových bodoch, ktoré sa nazývajú "udalosti". Udalosti môžu byť buď "externé" (vyvolané vonkajším vstupom, napríklad stlačením tlačidla), alebo "interné" (vyvolané samotným programom). Programy Esterel sú zostavené zo súboru "modulov", ktoré sú navzájom prepojené a tvoria smerový graf. Každý modul má sadu vstupných a výstupných portov a sadu "signálov", ktoré sú k týmto portom pripojené. Moduly môžu byť navzájom spojené v ľubovoľnom poradí a poradie, v ktorom sa vykonávajú, je určené "tokom signálov" cez graf. Kompilátor Esterel automaticky vygeneruje kód, ktorý vykoná moduly v správnom poradí na základe toku signálov. To umožňuje jednoduchý vývoj vysoko súbežných systémov, pretože programátor sa nemusí starať o poradie, v akom sa budú moduly vykonávať. Použitie synchrónneho modelu programovania umožňuje aj vývoj systémov v reálnom čase, pretože časovanie udalostí možno presne kontrolovať. Programy Esterel možno skompilovať tak, aby sa dali spustiť na širokom spektre platforiem vrátane vstavaných systémov. Jazyk Esterel bol veľmi úspešný pri vývoji systémov kritických z hľadiska bezpečnosti vďaka svojej schopnosti ľahko vyvíjať súbežné systémy a systémy v reálnom čase. Používa sa v širokej škále aplikácií vrátane systémov riadenia lietadiel, systémov riadenia rakiet a systémov riadenia fúznych reaktorov.