Content deleted Content added
add paradigms navbox |
RandFreeman (talk | contribs) Adding short description: "Programming language for programming reactive systems" |
||
(One intermediate revision by one other user not shown) | |||
Line 1:
{{Short description|Programming language for programming reactive systems}}
{{Multiple issues|
{{refimprove|date=June 2012}}
Line 11 ⟶ 12:
# ''Reactive systems'' 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 computing|real-time systems]], and are found often in [[embedded system]]s.
'''Synchronous programming''', also called '''synchronous reactive programming''' ('''SRP'''), is a computer [[programming 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
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 "a||b" is therefore abstracted as the package "ab" where "a" and "b" are simultaneous. To take a concrete example, the Esterel statement "'every 60 second emit minute" specifies that the signal "minute" is exactly synchronous with the 60-th occurrence of the signal "second". At a more fundamental level, the synchronous abstraction eliminates the non-determinism resulting from the interleaving of concurrent behaviors. This allows [[deterministic]] semantics, therefore making synchronous programs amenable to formal analysis, [[formal verification|verification]] and certified code generation, and usable as [[formal specification]] formalisms.
|