Synchronous programming language: Difference between revisions

Content deleted Content added
No edit summary
m Emboldened a phrase for format consistency.
Line 1:
{{multiple issues|lead too long=April 2012|refimprove=June 2012}}
 
A '''synchronous programming language''' is a [[computer programming language]] optimized for programming '''[[reactive system]]s'''. [[Computer system]]s 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 computing|real-time systems]], and are found often in [[embedded system]]s.
 
'''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 80s: [[Esterel]], [[Lustre (programming language)|Lustre]] and [[SIGNAL (programming language)|Signal]]. Since then, many other synchronous languages have emerged.