Content deleted Content added
Removing link(s) to "SyncCharts": Unlinking from deleted article (PROD) - Little chance of return (GNG failure). (TW) |
m CQ, layout |
||
Line 8:
'''Synchronous programming''' (also '''synchronous reactive programming''' or '''SRP''') is a computer programming [[Programming paradigm|paradigm]] supported by synchronous programming languages. The principle of SRP is to make the same abstraction for programming languages as the synchronous abstraction in digital circuits. Synchronous circuits are indeed designed at a high-level of abstraction where the timing characteristics of the electronic transistors are neglected. Each gate of the circuit (or, and, ...) is therefore assumed to compute its result instantaneously, each wire is assumed to transmit its signal instantaneously. A synchronous circuit is clocked and at each tick of its clock, it computes instantaneously its output values and the new values of its memory cells (latches) from its input values and the current values of its memory cells. In other words, the circuit behaves as if the electrons were flowing infinitely fast. The first synchronous programming languages were invented in France in the 1980s: [[Esterel]], [[Lustre (programming language)|Lustre]] and [[SIGNAL (programming language)|Signal]]. Since then, many other synchronous languages have emerged.
The synchronous abstraction makes reasoning about time in a synchronous program a lot easier, thanks to the notion of '''logical ticks''': a synchronous program reacts to its environment in a sequence of ticks, and computations within a tick are assumed to be instantaneous, i.e., as if the processor executing them were infinitely fast. The statement
In contrast, in the asynchronous model of computation, on a sequential processor, the statement
Also in contrast are systems with processes that basically ''interact synchronously''. An example would be systems built based on the [[Communicating sequential processes|Communicating sequential processes (CSP)]] model, which also allows nondeterministic choice.
Line 29:
*SyncCharts
==See also==▼
* [[Asynchronous programming]]▼
* [[Concurrency (computer science)]]▼
== References ==
* Nicolas Halbwachs. "Synchronous programming of reactive systems". Kluwer Academic Publishers, 1993. http://www-verimag.imag.fr/~halbwach/newbook.pdf
Line 38 ⟶ 41:
*[http://www.irisa.fr/espresso/Polychrony/ The SIGNAL programming language].
*[https://web.archive.org/web/20050324021405/http://ece.purdue.edu/~hankd/CARP/XPC/paper.html Unification of Synchronous and Asynchronous Models for Parallel Programming Languages] —Proposes [[parallel languages]] based on [[C (programming language)|C]], lets programmers specify and manage parallelism on a broad range of computer architectures.
▲==See also==
▲* [[Asynchronous programming]]
▲* [[Concurrency (computer science)]]
{{Programming language}}
|