LocalazyLocalazy
Esterel je jedinečný programovací jazyk určený pro vývoj bezpečnostně kritických systémů. Je založen na synchronním programovacím modelu, který umožňuje snadný vývoj vysoce souběžných systémů a systémů reálného času. Jazyk byl vyvinut v 80. letech 20. století týmem francouzského Institutu pro výzkum v oblasti informatiky a řízení (INRIA), který vedl profesor Gerard Berry. Jazyk Esterel byl použit v celé řadě aplikací, včetně vývoje řídicích systémů letadla Airbus A380, řídicího systému francouzské rakety Ariane 5 a japonského supravodivého fúzního reaktoru Tokamak. Synchronní programovací model používaný programem Esterel je založen na konceptu "signálů", což jsou proměnné, které mohou nabývat konečné množiny hodnot. Tyto hodnoty jsou obvykle logické (pravda/nepravda) nebo celočíselné (0, 1, 2 atd.). Signál může měnit hodnotu pouze v určitých časových okamžicích, kterým se říká "události". Události mohou být buď "vnější" (vyvolané vnějším vstupem, například stisknutím tlačítka), nebo "vnitřní" (vyvolané samotným programem). Programy Esterel jsou sestaveny z množiny "modulů", které jsou vzájemně propojeny a tvoří směrovaný graf. Každý modul má sadu vstupních a výstupních portů a sadu "signálů", které jsou k těmto portům připojeny. Moduly mohou být vzájemně propojeny v libovolném pořadí a pořadí, v jakém jsou prováděny, je určeno "tokem signálů" v grafu. Překladač Esterel automaticky vygeneruje kód, který na základě toku signálů provede moduly ve správném pořadí. To umožňuje snadný vývoj vysoce souběžných systémů, protože programátor se nemusí starat o pořadí, v jakém budou moduly vykonávány. Použití synchronního programovacího modelu také umožňuje vývoj systémů reálného času, protože lze přesně kontrolovat časování událostí. Programy Esterel lze zkompilovat tak, aby běžely na široké škále platforem, včetně vestavěných systémů. Jazyk Esterel se velmi osvědčil při vývoji systémů kritických z hlediska bezpečnosti, a to díky své schopnosti snadno vyvíjet souběžné systémy a systémy reálného času. Byl použit v široké škále aplikací, včetně řídicích systémů letadel, řídicích systémů raket a řídicích systémů fúzních reaktorů.