Esterel - Esterel
Esterel je synchronní programovací jazyk pro vývoj komplexních reaktivních systémů. The imperativní programování styl Esterel umožňuje jednoduché vyjádření rovnoběžnost a preempce. V důsledku toho se dobře hodí pro návrhy modelů ovládaných ovládáním.
Vývoj jazyka začal na začátku 80. let a byl prováděn hlavně týmem Ecole des Mines de Paris a INRIA vedené Gérard Berry ve Francii. Současní překladatelé berou Esterel programy a generují Kód C. nebo hardwarové (RTL) implementace (VHDL nebo Verilog ).
Jazyk je stále ve vývoji s několika překladači. Komerční verze Esterel je vývojové prostředí Studio Esterel. Společnost, která jej komercializuje (Synfora ) zahájil normalizační proces s IEEE v dubnu 2007 se však pracovní skupina (P1778) rozpustila v březnu 2011. The Esterel v7 Reference Manual Verze v7 30 - počáteční návrh standardizace IEEE je veřejně dostupný.
Mnohostranná představa o čase
Pojem času použitého v Esterelu se liší od pojmu nesynchronních jazyků následujícím způsobem: Pojem fyzický čas je nahrazen pojmem řádu. Zvažuje se pouze simultánnost a přednost událostí. To znamená, že fyzický čas nehraje žádnou zvláštní roli. Tomu se říká mnohotvárná představa o čase. Program Esterel popisuje zcela uspořádanou sekvenci logických instancí. V každém okamžiku dojde k libovolnému počtu událostí (včetně 0). Výskyty událostí, ke kterým dojde ve stejném logickém okamžiku, jsou považovány za simultánní. Ostatní události jsou seřazeny podle jejich výskytů. Existují dva typy příkazů: Ty, které vyžadují nulový čas (spuštění a ukončení ve stejném okamžiku) a ty, které zpožďují předepsaný počet cyklů.
Signály
Signály jsou jediným komunikačním prostředkem. Existují cenné a neocenitelné signály. Dále jsou kategorizovány jako vstupní, výstupní nebo místní signály. Signál má tu vlastnost, že je v okamžiku přítomný nebo nepřítomný. Hodnotné signály také obsahují hodnotu. Signály jsou vysílány napříč programem, což znamená, že jakýkoli proces může číst nebo zapisovat signál. Hodnotu hodnotného signálu lze určit v kterémkoli okamžiku, i když signál chybí. Výchozí stav signálu chybí. Signály zůstávají nepřítomné, dokud nejsou explicitně nastaveny na přítomnost pomocí příkazu emit. Komunikace je okamžitá, to znamená, že signál emitovaný v cyklu je viditelný okamžitě. Pamatujte, že lze komunikovat tam a zpět ve stejném cyklu.
Pravidla koherence signálu
- Každý signál je v cyklu pouze přítomen nebo chybí, nikdy oba.
- Všichni autoři běží dříve, než ostatní čtenáři.
Tím pádem
present A else emit Aend
je chybný program: spisovatel „emit A“ musí běžet před čtenářem „present A“, ale sémantika jazyka vyžaduje, aby bylo nejprve provedeno „present A“, což má za následek konflikt v sémantice programu.[je zapotřebí objasnění ]
Jazykové konstrukce
Primitivní výroky Esterel
Čistý Esterel má jedenáct primitivních výroků.[1]
nic | Okamžitě končí bez dalšího účinku. |
pauza | Blokuje řídicí tok v aktuálním cyklu pro obnovení v dalším cyklu. |
p ; q | Běží p dokud to neskončí a poté ve stejné reakci nezačne q. |
p || q | Běží p a q paralelně |
smyčka p konec | Restartujte tělo p jakmile to skončí. Každá cesta tělem smyčky musí obsahovat alespoň jednu pauza prohlášení, aby se zabránilo neomezenému smyčkování v rámci jedné reakce. |
signál S v p konec | Deklaruje místní signál. |
vysílat S | Udělejte signál S přítomný v aktuálním okamžiku. Signál chybí, pokud není vysílán. |
současnost, dárek S pak p jiný q konec | Pokud signál S je přítomen v aktuálním okamžiku, okamžitě spustit p, jinak spustit q. |
pozastavit p když S | Pozastaví výkon těla v případech, kdy S je přítomen. |
past T v p konec | Deklarujte označený únikový blok. |
výstup T | Skočte na konec nejvnitřnějšího T- označený únikový blok. |
Odvozená prohlášení Esterel
Esterel má několik odvozených konstrukcí:[2][3]
Odvozené prohlášení | Expanze |
---|---|
Stůj | konec pauzy smyčky |
udržet s | smyčka emit s; pauza konec |
současnost, dárek s pak p konec | současnost, dárek s pak p jinak nic konec |
čekat s | trap T ve smyčce pauza; současnost, dárek s pak opusťte konec T konec konce smyčky |
čekat okamžitě s | past T ve smyčce přítomna s poté opusťte T konec; pozastavit konec smyčky konec |
pozastavit p když okamžitě s | pozastavit přítomný s pak pozastavit konec; p když s |
přerušit p když (okamžitě) s | past T v pozastavení p když (okamžitě) s; výstup T || čekat (okamžitě) s; výjezd T; konec |
slabý potrat p když (okamžitě) s | pasti T v p; výstup T || čekat (okamžitě) s; výjezd T; konec |
smyčka s | smyčka přerušena p ; zastavit kdy s koncová smyčka |
každý (okamžitý) s dělat p končit každý | čekat (okamžitě) s; smyčka p každý s |
Další prohlášení Esterel
Celý jazyk Esterel má také příkazy pro deklaraci a vytváření instancí modulů, pro proměnné, pro volání externích procedur a pro oceňované signály.
Příklad (ABRO)
Následující program vysílá výstup O, jakmile jsou přijaty oba vstupy A a B. Resetujte chování vždy, když je přijat vstup R.
modul ABRO: vstup A, B, R; výstup O; smyčka [čekat A || čekat B]; emitují modul Oeach Rend
Výhody Esterelu
- Model času dává programátorovi přesnou kontrolu
- Souběžnost vhodná pro specifikaci řídicích systémů
- Zcela deterministický
- Jazyk konečných států
- Předvídatelný čas provedení
- Mnohem snazší ověřit formálně
- Lze implementovat v hardwaru i softwaru
Nevýhody Esterel
- Konečný stav jazyka omezuje flexibilitu (pro zvolené pole aplikace však postačuje expresivita)
- Sémantické výzvy
- Vyhnout se porušení kauzality je často obtížné
- Obecně je obtížné je sestavit, ale existují jednoduchá kritéria správnosti
Viz také
- Lesk, programovací jazyk bratrance
- SIGNÁL, synchronní jazyk orientovaný na tok dat umožňující specifikace více hodin
- Esterel Technologies, vývojář Esterel Studio a dalších nástrojů
- Model paralelního programování
Reference
- ^ Berry, Gérard (1999). „Konstruktivní sémantika čistého Esterelu“. CiteSeerX 10.1.1.46.2076. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Berry, Gérard (červen 2000). "Esterel v5 Language Primer". Ecole des Mines a INRIA. CiteSeerX 10.1.1.3.1177. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Berry, Gérard; Gonthier, Georges (Listopad 1992). "Synchronní programovací jazyk Esterel: Design, sémantika, implementace". Věda o počítačovém programování. 19 (2): 87–152. CiteSeerX 10.1.1.17.5606. doi:10.1016 / 0167-6423 (92) 90005-V.
externí odkazy
- Esterelský jazyk v Inrii
- Esterel Web na esterel.org
- Překladač Columbia Esterel kompilátor open-source