ArticleslgStudy

computer science

SIGNAL (programming language)

SIGNAL (programming language) is a computer 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 SIGNAL (programming language) rather than just read about it. In short: SIGNAL is a programming language based on synchronized dataflow (flows + synchronization): a process is a set of equations on elementary flows describing both data and control. The SIGNAL formal model provides the capability to describe systems with several clocks (polychronous systems) as relational specifications.

Key takeaways

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

Reference excerpt

SIGNAL is a programming language based on synchronized dataflow (flows + synchronization): a process is a set of equations on elementary flows describing both data and control. The SIGNAL formal model provides the capability to describe systems with several clocks (polychronous systems) as relational specifications. Relations are useful as partial specifications and as specifications of non-deterministic devices (for instance a non-deterministic bus) or external processes (for instance an unsafe car driver). Using SIGNAL allows one to specify an application, to design an architecture, to refine detailed components down to RTOS or hardware description. The SIGNAL model supports a design methodology which goes from specification to implementation, from abstraction to concretization, from synchrony to asynchrony. SIGNAL has been mainly developed in INRIA Espresso team since the 1980s, at the same time as similar programming languages, Esterel and Lustre.

A brief history The SIGNAL language was first designed for signal processing applications in the beginning of the 1980s. It has been proposed to answer the demand of new domain-specific language for the design of signal processing applications, adopting a dataflow and block-diagram style with array and sliding window operators. P. Le Guernic, A. Benveniste, and T. Gautier have been in charge of the language definition. The first paper on SIGNAL was published in 1982, while the first complete description of SIGNAL appeared in the PhD thesis of T. Gautier. The symbolic representation of SIGNAL via z/3z (over [-1,0,1]) has been introduced in 1986. A full compiler of SIGNAL based on the clock calculus on hierarchy of Boolean clocks, was described by L. Besnard in his PhD thesis in 1992. The clock calculus has been improved later by T. Amagbegnon with the proposition of arborescent canonical forms. During the 1990s, the application domain of the SIGNAL language has been extended into general embedded and real-time systems. The relation-oriented specification style enabled the increasing construction of the systems, and also led to the design considering multi-clocked systems, compared to the original single-clock-based implementation of Esterel and Lustre. Moreover, the design and implementation of distributed embedded systems were also taken into account in SIGNAL. The corresponding research includes the optimization methods proposed by B. Chéron, the clustering models defined by B. Le Goff, the abstraction and separate compilation formalized by O. Maffeïs, and the implementation of distributed programs developed by P. Aubry.

The Polychrony Toolsets The Polychrony toolset is an open-source development environment for critical/embedded systems based on SIGNAL, a real-time polychronous dataflow language. It provides a unified model-driven environment to perform design exploration by using top-down and bottom-up design methodologies formally supported by design model transformations from specification to implementation and from synchrony to asynchrony. It can be included in heterogeneous design systems with various input formalisms and output languages. Polychrony is a set of tools composed of:

A SIGNAL batch compiler A graphical user interface (editor + interactive access to compiling functionalities) The Sigali tool, an associated formal system for formal verification and controller synthesis. Sigali is developed together with the INRIA Vertecs project.

The SME environment The SME (SIGNAL Meta under Eclipse) environment is a front-end of Polychrony in the Eclipse environment based on Model-Driven Engineering (MDE) technologies. It consists of a set of Eclipse plug-ins which rely on the Eclipse Modeling Framework (EMF). The environment is built around SME, a metamodel of the SIGNAL language extended with mode automata concepts. The SME environment is composed of several plug-ins which correspond to:

A reflexive editor: a tree view allowing to manipulate models conform to the SME metamodel. A graphical modeler based on the TopCased modeling facilities (cf. previous picture). A reflexive editor and an Eclipse view to create compilation scenarios. A direct connection to the Polychrony services (compilation, formal verification, etc.). A documentation and model examples.

See also Synchronous programming language Dataflow programming Globally asynchronous locally synchronous Formal verification Model checking Formal semantics of programming languages AADL Simulink Avionics System design Asynchrony (computer programming)

Notes and references

External links The INRIA/IRISA Espresso team The Polychrony toolset dedicated to SIGNAL (official website of Polychrony) backup link Synchrone Lab (the synchronous language Lustre) Esterel (the synchronous Language Esterel)

Worked examples

Example 1 — a first encounter with SIGNAL (programming language)

Start with the simplest possible case. Write down what SIGNAL (programming language) claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer 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 SIGNAL (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 SIGNAL (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 SIGNAL (programming language)

In research
SIGNAL (programming language) appears in computer 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 SIGNAL (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
SIGNAL (programming language) is common in secondary-school and first-year university syllabi. It links to neighbouring topics 1980s establishments in France, Declarative programming languages, Formal methods, so understanding it makes those chapters shorter.
In everyday life
Look for SIGNAL (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.

Affiliate

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

How to study SIGNAL (programming language) in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what SIGNAL (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 SIGNAL (programming language) out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is SIGNAL (programming language) in simple terms?

SIGNAL is a programming language based on synchronized dataflow (flows + synchronization): a process is a set of equations on elementary flows describing both data and control. The SIGNAL formal model provides the capability to describe systems with several clocks (polychronous systems) as relation…

Why does SIGNAL (programming language) matter?

Because it connects several computer 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 SIGNAL (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 SIGNAL (programming language).

Tags

  • 1980s establishments in France
  • Declarative programming languages
  • Formal methods
  • French inventions
  • Hardware description languages
  • Information technology in France
  • Programming languages created in the 1980s
  • Software modeling language
  • Synchronous programming languages

Keep exploring