stringtranslate.com

Эстерель

Esterel — это синхронный язык программирования для разработки сложных реактивных систем. Императивный стиль программирования Esterel позволяет просто выражать параллелизм и вытеснение . Как следствие, он хорошо подходит для проектирования моделей с преобладанием управления.

Разработка языка началась в начале 1980-х годов и в основном проводилась командой Ecole des Mines de Paris и INRIA под руководством Жерара Берри во Франции. Современные компиляторы берут программы Esterel и генерируют код C или аппаратные (RTL) реализации ( VHDL или Verilog ).

Язык все еще находится в стадии разработки, и уже выпущено несколько компиляторов. Коммерческая версия Esterel — это среда разработки Esterel Studio. Компания, которая его коммерциализировала (Synfora), инициировала процесс нормализации с IEEE в апреле 2007 года, однако рабочая группа (P1778) распалась в марте 2011 года. Справочное руководство доступно для общественности. [1]

Многообразное понятие времени

Понятие времени, используемое в Esterel, отличается от понятия несинхронных языков следующим образом: понятие физического времени заменяется понятием порядка. Рассматриваются только одновременность и предшествование событий. Это означает, что физическое время не играет никакой особой роли. Это называется многоформным понятием времени. Программа на Esterel описывает полностью упорядоченную последовательность логических моментов. В каждый момент происходит произвольное количество событий (включая 0). События, происходящие в один и тот же логический момент, считаются одновременными. Другие события упорядочиваются как их экземпляры вхождений. Существует два типа операторов: те, которые занимают нулевое время (выполняются и завершаются в один и тот же момент), и те, которые задерживаются на заданное количество циклов.

Сигналы

Сигналы являются единственным средством связи. Существуют значимые и незначимые сигналы. Они далее подразделяются на входные, выходные и локальные сигналы. Сигнал имеет свойство либо присутствовать, либо отсутствовать в данный момент. Значимые сигналы также содержат значение. Сигналы транслируются по всей программе, и это означает, что любой процесс может считывать или записывать сигнал. Значение значимого сигнала может быть определено в любой момент, даже если сигнал отсутствует. Статус сигнала по умолчанию — отсутствует. Сигналы остаются отсутствующими, пока они явно не будут установлены как присутствующие с помощью оператора emit. Связь мгновенная, это означает, что сигнал, излученный в цикле, виден немедленно. Обратите внимание, что можно общаться туда и обратно в одном и том же цикле.

Правила когерентности сигналов

Таким образом

настоящее время А еще испускают Аконец

является ошибочной программой , поскольку записывающее устройство «выделить А» должно быть запущено до того, как считывающее устройство «представить А», тогда как эта программа требует, чтобы «представить А» было выполнено первым.

Языковые заявления

Примитивные утверждения Эстереля

Чистый Эстерель имеет одиннадцать примитивных утверждений. [2]

Производные утверждения Esterel

У Esterel есть несколько производных конструкций: [3] [4]

Другие заявления Esterel

Полный язык Esterel также содержит операторы для объявления и создания экземпляров модулей, для переменных, для вызова внешних процедур и для значимых сигналов.

Пример (ABRO)

Следующая программа выдает выход O, как только получены оба входа A и B. Сбрасывает поведение каждый раз, когда получен вход R.

модуль АБРО:вход А, В, R;выход О;петля [ ждем А || ждем Б ]; испускают Окаждый Рконечный модуль

Преимущества Эстерела

Недостатки Эстерела

Смотрите также

Ссылки

  1. ^ Lefebvre, J. (3 ноября 2005 г.). "Esterel v7 Reference Manual Version v7 30 – initial IEEE standardization proposal" (PDF) . Esterel Technologies. Архивировано из оригинала (PDF) 30 декабря 2005 г.
  2. ^ Берри, Жерар (1999). «Конструктивная семантика чистого эфира». CiteSeerX 10.1.1.46.2076 . 
  3. ^ Берри, Жерар (июнь 2000 г.). «Букварь языка Esterel v5». Горная школа и INRIA. CiteSeerX 10.1.1.3.1177 . 
  4. ^ Берри, Жерар ; Гонтье, Жорж (ноябрь 1992 г.). «Синхронный язык программирования Esterel: проектирование, семантика, реализация». Science of Computer Programming . 19 (2): 87–152. CiteSeerX 10.1.1.17.5606 . doi :10.1016/0167-6423(92)90005-V. 

Внешние ссылки