Synchronous programming language
A synchronous programming language is a computer programming language optimized for programming reactive systems. Computer systems can be sorted in three main classes: (1) transformational systems that take some inputs, process them, deliver their outputs, and terminate their execution; a typical example is a compiler; (2) interactive systems that interact continuously with their environment, at their own speed; a typical example is the web; and (3) reactive systems that interact continuously with their environment, at a speed imposed by the environment; a typical example is the automatic flight control system of modern airplanes. Reactive systems must therefore react to stimuli from the environment within strict time bounds. For this reason they are often also called real-time systems, and are found often in embedded systems.
Synchronous programming (also synchronous reactive programming or SRP) is a computer programming paradigm supported by synchronous programming languages.
Implementations
The ESTEREL language is an example of a synchronous programming language.[1]
Synchronous languages
- Argos
- Atom (a DSL in Haskell for hard realtime embedded programming)
- Averest
- ChucK (a synchronous reactive programming language for audio)
- Esterel
- LabVIEW
- LEA
- Lustre
- PLEXIL
- SIGNAL (a dataflow-oriented synchronous language enabling multi-clock specifications)
- SOL
- SyncCharts
External links
- The Synchronous group at Verimag lab.
- The SIGNAL programming language.
- Unification of Synchronous and Asynchronous Models for Parallel Programming Languages -- Proposes parallel languages based on C, lets programmers specify and manage parallelism on a broad range of computer architectures.
References
- Nicolas Halbwachs. "Synchronous programming of reactive systems". Kluwer Academic Publishers, 1993. http://www-verimag.imag.fr/~halbwach/newbook.pdf
- ^ G. Berry and G. Gonthier. The synchronous programming language ESTEREL: Design, semantics, implementation. Science of Computer Programming, 19(2), 1992.