WikiDer > Синхронный язык программирования
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
А синхронный язык программирования это язык компьютерного программирования оптимизирован для программирования реактивные системы. Компьютерные системы можно разделить на три основных класса: (1) трансформационные системы которые принимают некоторые входные данные, обрабатывают их, доставляют свои выходные данные и прекращают выполнение; типичный пример - компилятор; (2) интерактивные системы которые постоянно взаимодействуют со своим окружением со своей скоростью; типичный пример - сеть; и (3) реактивные системы которые непрерывно взаимодействуют со своей средой со скоростью, заданной окружающей средой; Типичный пример - система автоматического управления полетом современных самолетов. Следовательно, реактивные системы должны реагировать на стимулы из окружающей среды в строгие временные рамки. По этой причине их также часто называют системы реального времени, и часто встречаются в встроенные системы.
Синхронное программирование (также синхронное реактивное программирование или же SRP) это компьютер парадигма программирования поддерживается синхронными языками программирования. Принцип SRP состоит в том, чтобы сделать ту же абстракцию для языков программирования, что и синхронная абстракция в цифровых схемах. Синхронные схемы действительно спроектированы на высоком уровне абстракции, где временные характеристики электронных транзисторов не учитываются. Поэтому предполагается, что каждый вентиль схемы (или, и, ...) вычисляет свой результат мгновенно, каждый провод, как предполагается, передает свой сигнал мгновенно. Синхронная схема синхронизируется, и на каждом такте своих часов она мгновенно вычисляет свои выходные значения и новые значения своих ячеек памяти (защелок) из своих входных значений и текущих значений своих ячеек памяти. Другими словами, схема ведет себя так, как будто электроны движутся бесконечно быстро. Первые синхронные языки программирования были изобретены во Франции в 1980-х годах: Эстерель, Блеск и Сигнал. С тех пор появилось много других синхронных языков.
Синхронная абстракция значительно упрощает рассуждения о времени в синхронной программе благодаря понятию логические тики: синхронная программа реагирует на свое окружение в виде последовательности тиков, и вычисления в пределах тика считаются мгновенными, то есть, как если бы процессор, выполняющий их, был бесконечно быстрым. Заявление "а || б"поэтому абстрагируется как пакет"ab" куда "а" и "б"являются одновременными. В качестве конкретного примера, заявление Эстерель"каждые 60 секунд испускать минуту"указывает, что сигнал"минута"точно синхронно с 60-м появлением сигнала"второй". На более фундаментальном уровне синхронная абстракция устраняет недетерминизм, возникающий в результате чередования параллельных поведений. Это позволяет детерминированный семантика, что делает синхронные программы доступными для формального анализа, проверка и сертифицированная генерация кода, и может использоваться как формальная спецификация формализмы.
Напротив, в асинхронной модели вычислений на последовательном процессоре утверждение "а || б"может быть реализовано как"а; б"или как"б; а". Это известно как недетерминизм на основе чередования. Недостатком асинхронной модели является то, что она по сути запрещает детерминированную семантику (например, условия гонки), что усложняет формальные рассуждения, такие как анализ и проверка. Тем не менее, асинхронные формализмы очень полезны для моделирования, проектирования и проверки распределенных систем, поскольку они по своей сути асинхронны.
Также контрастируют системы с процессами, которые в основном взаимодействовать синхронно. Примером могут служить системы, построенные на основе Связь последовательных процессов (CSP) модель, которая также допускает недетерминированный выбор.
Синхронные языки
- Аргос
- Атом (а предметно-ориентированный язык в Haskell для встроенного программирования в реальном времени)
- Averest
- ChucK (синхронный реактивный язык программирования для аудио)
- Эстерель[1]
- LabVIEW
- LEA
- Блеск
- ПЛЕКСИЛ
- СИГНАЛ (синхронный язык, ориентированный на поток данных, обеспечивающий многочастотные спецификации)
- СОЛЬ
- SyncCharts
Смотрите также
Рекомендации
- Николас Хальбвакс. «Синхронное программирование реактивных систем». Kluwer Academic Publishers, 1993. http://www-verimag.imag.fr/~halbwach/newbook.pdf
- ^ Дж. Берри и Дж. Гонтье. Синхронный язык программирования ESTEREL: Дизайн, семантика, реализация. Наука компьютерного программирования, 19(2), 1992.
внешняя ссылка
- Синхронная группа в лаборатории Verimag.
- Язык программирования SIGNAL.
- Унификация синхронных и асинхронных моделей для языков параллельного программирования —Предлагает параллельные языки на основе C, позволяет программистам определять параллелизм и управлять им на широком спектре компьютерных архитектур.