Эстерель: Синхронды бағдарламалау тілі және реактивті жүйелерді дамыту
Esterel
Esterel бағдарламалау тілі: реактивті жүйелерді, бақылау модельдерін жасауға арналған. C кодына немесе аппараттық құрылғыларға (VHDL/Verilog) аударылады.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Esterel – күрделі реактивті жүйелерді әзірлеуге арналған синхронды бағдарламалау тілі. Эстерелдің императивті бағдарламалау стилі параллелизмді және үзуді қарапайым түрде бейнелеуге мүмкіндік береді. Осының салдарынан, ол басқаруға бағытталған модельдеу жобалары үшін өте ыңғайлы. Тілді дамыту 1980-жылдардың басында басталды және негізінен Франциядағы Париждегі Ecole des Mines және INRIA командасы Жерар Берридің басшылығымен жүзеге асырылды. Қазіргі компиляторлар Esterel бағдарламаларын C кодына немесе аппараттық (RTL) іске асыруларға (VHDL немесе Verilog) түрлендіреді. Тіл әлі де дамып келеді, бірнеше компиляторы бар. Esterel-дің коммерциялық нұсқасы – Esterel Studio әзірлеу ортасы. Оны коммерцияландырған Synfora компаниясы 2007 жылдың сәуірінде IEEE ұйымымен нормалау процесін бастады, бірақ жұмыс тобы (P1778) 2011 жылдың наурызында таратылды. Анықтамалық нұсқаулыққа қоғамдық қолжетімділік бар.
Esterel is a synchronous programming language for the development of complex reactive systems. The imperative programming style of Esterel allows the simple expression of parallelism and preemption. As a consequence, it is well suited for control dominated model designs. The development of the language started in the early 1980s, and was mainly carried out by a team of Ecole des Mines de Paris and INRIA led by Gérard Berry in France. Current compilers take Esterel programs and generate C code or hardware (RTL) implementations (VHDL or Verilog). The language is still under development, with several compilers out. The commercial version of Esterel is the development environment Esterel Studio. The company that commercialize it (Synfora) initiated a normalization process with the IEEE in April 2007 however the working group (P1778) dissolved March 2011. The reference manual is publicly available.
Уақыт туралы көп түрлі түсінік
Эстерел тілінде қолданылатын уақыт ұғымы синхронды емес тілдердегіден мынадай ерекшеленеді: физикалық уақыт ұғымы орналасу реті ұғымымен алмастырылады. Тек оқиғалардың бірдей уақытта болуы және олардың орын алу тізбегі ғана ескеріледі. Бұл физикалық уақыттың ешқандай арнайы рөл атқармайтынын білдіреді. Бұл уақыттың көпқырлы түсінігі деп аталады. Эстерел бағдарламасы логикалық сәттердің толық реттелген тізбегін сипаттайды. Әрбір сәтте кез келген сан оқиға орын алуы мүмкін (0 оқиға да болуы мүмкін). Бірдей логикалық сәтте орын алатын оқиғалар бір мезгілде деп есептеледі. Ал қалған оқиғалар олардың орын алу ретімен реттеледі. Екі түрлі оператор бар: нөлдік уақытқа орындалатын (бір сәтте басталып, аяқталады) және белгілі бір циклдар санына кешіктірілетін операторлар.
The notion of time used in Esterel differs from that of non synchronous languages in the following way: The notion of physical time is replaced with the notion of order. Only the simultaneity and precedence of events are considered. This means that the physical time does not play any special role. This is called multiform notion of time. An Esterel program describes a totally ordered sequence of logical instants. At each instant, an arbitrary number of events occur (including 0). Event occurrences that happen at the same logical instant are considered simultaneous. Other events are ordered as their instances of occurrences. There are two types of statements: Those that take zero time (execute and terminate in the same instant) and those that delay for a prescribed number of cycles.
Сигналдар
Сигналдар – байланыс құралы. Бағаланған және бағаланбаған сигналдар болады. Олар кіріс, шығыс немесе жергілікті сигналдар деп тағы жіктеледі. Сигналдың бір сәтте болуы немесе болмауы мүмкін. Бағаланған сигналдарға мән де қосады. Сигналдар бағдарлама бойынша таратылады, яғни кез келген процесс сигналды оқи немесе жаза алады. Бағаланған сигналдың мәні кез келген сәтте анықталуы мүмкін, тіпті сигнал болмаса да. Сигналдың бастапқы күйі – болмауы. Сигналдар нақты көрсетілгенге дейін, яғни эмиссиялық оператор арқылы белгіленгенге дейін болмайды. Байланыс дереу жүзеге асады, яғни цикл ішінде жіберілген сигнал бірден көрінеді. Бір циклдың ішінде екі бағытта да байланысуға болатынын ескеріңіз.
Signals are the only means of communication. There are valued and non valued signals. They are further categorized as being input, output, or local signals. A signal has the property of being either present or absent in an instant. Valued signals also contain a value. Signals are broadcast across the program, and that means any process can read or write a signal. The value of a valued signal can be determined in any instant, even if the signal is absent. The default status of a signal is absent. Signals remain absent until they are explicitly set to present using the emit statement. Communication is instantaneous, that means that a signal emitted in a cycle is visible immediately. Note that one can communicate back and forth in the same cycle.
Эстерелдің бастапқы мәлімдемелері
Таза Эстерелде он бір бастапқы мәлімдеме бар. ештеңе бірден тоқтатылады, ешқандай әсер етпейді. 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 белгіленген құтылу блогының соңына секіреді.
Pure Esterel has eleven primitive statements. nothing Terminates immediately with no other effect. pause Blocks control flow in the current cycle for resumption in the next cycle. p ; q Runs p until it terminates and then, in the same reaction, starts q. p || q Runs p and q in parallel loop p end Restarts the body p as soon as it terminates. Every path through the loop body must contain at least one pause statement to avoid unbounded looping within a single reaction. signal S in p end Declares a local signal. emit S Make signal S present in the current instant. A signal is absent unless it is emitted. present S then p else q end If signal S is present in the current instant, immediately run p, otherwise run q. suspend p when S Suspends the execution of the body in instants where S is present. trap T in p end Declare a labeled escape block. exit T Jump to the end of the innermost T labeled escape block.
Esterel- тің басқа да мәлімдемелері
Толық Esterel тілі модульдерді жариялау және құру, айнымалыларды, сыртқы процедураларды шақыру және мәнді сигналдар үшін операторларды қамтиды.
The full Esterel language also has statements for declaring and instantiating modules, for variables, for calling external procedures, and for valued signals.