Синхронна мова програмування — це мова комп'ютерного програмування, оптимізована для програмування реактивних систем.
Комп'ютерні системи можна розділити на три основні класи:
- Трансформаційні системи приймають деякі вхідні дані, обробляють їх, видають результати та припиняють їх виконання. Типовим прикладом є компілятор.
- Інтерактивні системи безперервно взаємодіють зі своїм середовищем зі своєю власною швидкістю. Типовий приклад — мережа.
- Реактивні системи безперервно взаємодіють з навколишнім середовищем зі швидкістю, яка визначається навколишнім середовищем. Типовим прикладом є система автоматичного керування польотом сучасних літаків. Таким чином, реактивні системи повинні реагувати на подразники з навколишнього середовища в строго визначені часові рамки. З цієї причини їх часто також називають системами реального часу, і вони часто зустрічаються у вбудованих системах.
Синхронне програмування, також синхронне реактивне програмування — це парадигма комп'ютерного програмування, яка підтримується мовами синхронного програмування. Принцип SRP полягає в створенні такої ж абстракції для мов програмування, як синхронна абстракція в цифрових схемах. Синхронні схеми дійсно розроблені на високому рівні абстракції, де нехтують характеристиками синхронізації електронних транзисторів. Таким чином, припускається, що кожен вентиль схеми (або, і, …) обчислює свій результат миттєво, припускається, що кожен дріт миттєво передає свій сигнал. Синхронна схема синхронізується, і з кожним тактом годинника вона миттєво обчислює свої вихідні значення та нові значення своїх комірок пам'яті (фіксаторів) зі своїх вхідних значень і поточних значень своїх комірок пам'яті. Іншими словами, схема поводиться так, ніби електрони течуть нескінченно швидко. Перші синхронні мови програмування були винайдені у Франції в 1980-х роках: Esterel, Lustre і SIGNAL. З того часу з'явилося багато інших синхронних мов.
Синхронні мови
- Argos
- Atom (спеціальна мова в Haskell для жорсткого вбудованого програмування в реальному часі)
- Averest
- Blech
- ChucK (синхронна реактивна мова програмування для аудіо)
- Esterel[1]
- LabVIEW
- LEA
- Lustre
- PLEXIL
- SIGNAL (синхронна мова, орієнтована на потік даних, що забезпечує багатотактові специфікації)
- SOL
- SyncCharts
Див. також
Примітки
- ↑ G. Berry and G. Gonthier. The synchronous programming language ESTEREL: Design, semantics, implementation. Science of Computer Programming, 19(2), 1992.
Посилання
- The Synchronous group в лабораторії Верімаг.
- Мова програмування SIGNAL.
- Уніфікація синхронних і асинхронних моделей для мов паралельного програмування — пропонує паралельні мови на основі C, дозволяє програмістам визначати паралелізм і керувати ним у широкому діапазоні комп'ютерних архітектур.