ArticleslgStudy

science

Synchronous programming language

Synchronous programming language is a science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Synchronous programming language rather than just read about it. In short: A synchronous programming language is a computer programming language optimized for programming reactive systems. Computer systems can be sorted in three main classes: Transformational systems take some inputs, process them, deliver their outputs, and terminate their execution.

Key takeaways

  • Synchronous programming language belongs to science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Synchronous programming language to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Synchronous programming language from memory before moving on to harder problems.

Reference excerpt

A synchronous programming language is a computer programming language optimized for programming reactive systems. Computer systems can be sorted in three main classes:

Transformational systems take some inputs, process them, deliver their outputs, and terminate their execution. A typical example is a compiler. Interactive systems interact continuously with their environment, at their own speed. A typical example is the web. 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 systems, and are found often in embedded systems. 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 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, and 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 "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, verification and certified code generation, and usable as formal specification formalisms. In contrast, in the asynchronous model of computation, on a sequential processor, the statement "a||b" can be either implemented as "a;b" or as "b;a". This is known as the interleaving-based non determinism. The drawback with an asynchronous model is that it intrinsically forbids deterministic semantics (e.g., race conditions), which makes formal reasoning such as analysis and verification more complex. Nonetheless, asynchronous formalisms are very useful to model, design and verify distributed systems, because they are intrinsically asynchronous. Also in contrast are systems with processes that basically interact synchronously. An example would be systems based on the Communicating sequential processes (CSP) model, which allows deterministic (external) and nondeterministic (internal) choice.

Synchronous languages

Argos Atom (a domain-specific language in Haskell for hard realtime embedded programming) Averest Blech 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

See also Asynchronous programming Concurrency (computer science)

References Nicolas Halbwachs. "Synchronous programming of reactive systems". Kluwer Academic Publishers, 1993. https://www-verimag.imag.fr/~halbwach/newbook.pdf

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.

Worked examples

Example 1 — a first encounter with Synchronous programming language

Start with the simplest possible case. Write down what Synchronous programming language claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Synchronous programming language before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Synchronous programming language ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Synchronous programming language

In research
Synchronous programming language appears in science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Synchronous programming language in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Synchronous programming language is common in secondary-school and first-year university syllabi. It links to neighbouring topics Programming language classification, Synchronous programming languages, so understanding it makes those chapters shorter.
In everyday life
Look for Synchronous programming language outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.
Ask Teacher Smith questions about this articleOpens your AI tutor with a question about “Synchronous programming language” →

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Synchronous programming language in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Synchronous programming language means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Synchronous programming language out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Synchronous programming language in simple terms?

A synchronous programming language is a computer programming language optimized for programming reactive systems. Computer systems can be sorted in three main classes: Transformational systems take some inputs, process them, deliver their outputs, and terminate their execution.

Why does Synchronous programming language matter?

Because it connects several science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Synchronous programming language?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Synchronous programming language.

Tags

  • Programming language classification
  • Synchronous programming languages

Keep exploring