stringtranslate.com

Синхронный язык программирования

Язык синхронного программирования — это язык компьютерного программирования , оптимизированный для программирования реактивных систем.

Компьютерные системы можно разделить на три основных класса:

  1. Трансформационные системы принимают некоторые входные данные, обрабатывают их, выдают выходные данные и прекращают их выполнение. Типичный пример — компилятор.
  2. Интерактивные системы непрерывно взаимодействуют со своей средой со своей собственной скоростью. Типичным примером является Интернет.
  3. Реактивные системы непрерывно взаимодействуют с окружающей средой со скоростью, определяемой окружающей средой. Типичным примером является система автоматического управления полетом современных самолетов. Поэтому реактивные системы должны реагировать на стимулы из окружающей среды в строгие сроки. По этой причине их часто называют системами реального времени , и они часто встречаются во встроенных системах .

Синхронное программирование , также называемое синхронным реактивным программированием ( SRP ), представляет собой парадигму компьютерного программирования, поддерживаемую языками синхронного программирования. Принцип SRP заключается в создании той же абстракции для языков программирования, что и синхронная абстракция в цифровых схемах. Синхронные схемы действительно разрабатываются на высоком уровне абстракции, где временные характеристики электронных транзисторов не учитываются. Таким образом, предполагается, что каждый вентиль схемы (или, и, ...) мгновенно вычисляет свой результат, предполагается, что каждый провод мгновенно передает свой сигнал. Синхронная схема тактируется и при каждом такте часов мгновенно вычисляет свои выходные значения и новые значения ячеек памяти (защелки) на основе входных значений и текущих значений ячеек памяти. Другими словами, схема ведет себя так, как будто электроны текут бесконечно быстро. Первые синхронные языки программирования были изобретены во Франции в 1980-х годах: Esterel , Lustre и SIGNAL . С тех пор появилось множество других синхронных языков.

Синхронная абстракция значительно упрощает рассуждения о времени в синхронной программе благодаря понятию логических тактов : синхронная программа реагирует на окружающую среду последовательностью тиков, а вычисления внутри такта считаются мгновенными, т. е. как если бы процессор, выполняющий их, был бы бесконечно быстрым. Таким образом, оператор «a||b» абстрагируется как пакет «ab», где «a» и «b» являются одновременными. Возьмем конкретный пример: оператор Esterel «выпускает каждые 60 секунд минуту» указывает, что сигнал «минута» точно синхронен с 60-м появлением сигнала «секунда». На более фундаментальном уровне синхронная абстракция устраняет недетерминизм, возникающий в результате чередования параллельных действий. Это обеспечивает детерминированную семантику, что делает синхронные программы пригодными для формального анализа, проверки и генерации сертифицированного кода, а также их можно использовать в качестве формализмов формальных спецификаций .

Напротив, в асинхронной модели вычислений на последовательном процессоре оператор «a||b» может быть реализован либо как «a;b», либо как «b;a». Это известно как недетерминизм, основанный на чередовании. Недостаток асинхронной модели заключается в том, что она по своей сути запрещает детерминированную семантику (например, условия гонки), что усложняет формальные рассуждения, такие как анализ и проверка. Тем не менее асинхронные формализмы очень полезны для моделирования, проектирования и проверки распределенных систем, поскольку они по своей сути асинхронны.

Также контрастом являются системы с процессами, которые в основном взаимодействуют синхронно . Примером могут служить системы, основанные на модели коммуникационных последовательных процессов (CSP) , которая допускает детерминированный (внешний) и недетерминированный (внутренний) выбор.

Синхронные языки

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

Рекомендации

  1. ^ Г. Берри и Г. Гонтье. Язык синхронного программирования ESTEREL: Проектирование, семантика, реализация. Наука компьютерного программирования , 19 (2), 1992.

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