Кіріспе

Esterel – күрделі реактивті жүйелерді әзірлеуге арналған синхронды бағдарламалау тілі. Эстерелдің императивті бағдарламалау стилі параллелизмді және үзуді қарапайым түрде бейнелеуге мүмкіндік береді. Осының салдарынан, ол басқаруға бағытталған модельдеу жобалары үшін өте ыңғайлы. Тілді дамыту 1980-жылдардың басында басталды және негізінен Франциядағы Париждегі Ecole des Mines және INRIA командасы Жерар Берридің басшылығымен жүзеге асырылды. Қазіргі компиляторлар Esterel бағдарламаларын C кодына немесе аппараттық (RTL) іске асыруларға (VHDL немесе Verilog) түрлендіреді. Тіл әлі де дамып келеді, бірнеше компиляторы бар. Esterel-дің коммерциялық нұсқасы – Esterel Studio әзірлеу ортасы. Оны коммерцияландырған Synfora компаниясы 2007 жылдың сәуірінде IEEE ұйымымен нормалау процесін бастады, бірақ жұмыс тобы (P1778) 2011 жылдың наурызында таратылды. Анықтамалық нұсқаулыққа қоғамдық қолжетімділік бар.

Уақыт туралы көп түрлі түсінік

Эстерел тілінде қолданылатын уақыт ұғымы синхронды емес тілдердегіден мынадай ерекшеленеді: физикалық уақыт ұғымы орналасу реті ұғымымен алмастырылады. Тек оқиғалардың бірдей уақытта болуы және олардың орын алу тізбегі ғана ескеріледі. Бұл физикалық уақыттың ешқандай арнайы рөл атқармайтынын білдіреді. Бұл уақыттың көпқырлы түсінігі деп аталады. Эстерел бағдарламасы логикалық сәттердің толық реттелген тізбегін сипаттайды. Әрбір сәтте кез келген сан оқиға орын алуы мүмкін (0 оқиға да болуы мүмкін). Бірдей логикалық сәтте орын алатын оқиғалар бір мезгілде деп есептеледі. Ал қалған оқиғалар олардың орын алу ретімен реттеледі. Екі түрлі оператор бар: нөлдік уақытқа орындалатын (бір сәтте басталып, аяқталады) және белгілі бір циклдар санына кешіктірілетін операторлар.

Сигналдар

Сигналдар – байланыс құралы. Бағаланған және бағаланбаған сигналдар болады. Олар кіріс, шығыс немесе жергілікті сигналдар деп тағы жіктеледі. Сигналдың бір сәтте болуы немесе болмауы мүмкін. Бағаланған сигналдарға мән де қосады. Сигналдар бағдарлама бойынша таратылады, яғни кез келген процесс сигналды оқи немесе жаза алады. Бағаланған сигналдың мәні кез келген сәтте анықталуы мүмкін, тіпті сигнал болмаса да. Сигналдың бастапқы күйі – болмауы. Сигналдар нақты көрсетілгенге дейін, яғни эмиссиялық оператор арқылы белгіленгенге дейін болмайды. Байланыс дереу жүзеге асады, яғни цикл ішінде жіберілген сигнал бірден көрінеді. Бір циклдың ішінде екі бағытта да байланысуға болатынын ескеріңіз.

Эстерелдің бастапқы мәлімдемелері

Таза Эстерелде он бір бастапқы мәлімдеме бар. ештеңе бірден тоқтатылады, ешқандай әсер етпейді. pause Келесі циклде жалғасу үшін ағымдағы циклде бақылау ағынын тоқтатады. p ; q p аяқталғанша орындалады, содан кейін, сол реакцияда q басталады. p || q p және q параллельді түрде орындалады. p аяғы p аяқталғаннан кейін p денесі қайтадан орындалады. Бір реакция ішінде шексіз циклге түсуін болдырмау үшін цикл денесінің әрбір жолында кем дегенде бір pause операторы болуы керек. signal S in p end Жергілікті сигнал жариялайды. emit S Ағымдағы сәтте S сигналын белсенді етеді. Сигнал шығарылмаса, жоқ болып есептеледі. present S then p else q end Егер ағымдағы сәтте S сигналы белсенді болса, бірден p орындалады, әйтпесе q орындалады. suspend p when S S сигналы белсенді болған сәттерде p орындалуын тоқтатады. trap T in p end Белгіленген құтылу блогын жариялайды. exit T Ішкі T белгіленген құтылу блогының соңына секіреді.

Esterel- тің басқа да мәлімдемелері

Толық Esterel тілі модульдерді жариялау және құру, айнымалыларды, сыртқы процедураларды шақыру және мәнді сигналдар үшін операторларды қамтиды.