Synchronous programming languages

Synchronous programming language

A synchronous programming language is a computer programming language optimized for programming reactive systems. Computer systems 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 systems, and are found often in embedded systems. Synchronous programming (also synchronous reactive programming or 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 built based on the Communicating sequential processes (CSP) model, which also allows nondeterministic choice. (Wikipedia).

Video thumbnail

the C language (part 2 of 5)

Introduction to the C programming language. Part of a larger series teaching programming. See http://codeschool.org

From playlist The C language

Video thumbnail

Clojure - creating macros

Part of a series teaching the Clojure language. For other programming topics, visit http://codeschool.org

From playlist the Clojure language

Video thumbnail

the C language (part 5 of 5)

Introduction to the C programming language. Part of a larger series teaching programming. See http://codeschool.org

From playlist The C language

Video thumbnail

Clojure - the Reader and Evaluator (4/4)

Part of a series teaching the Clojure language. For other programming topics, visit http://codeschool.org

From playlist the Clojure language

Video thumbnail

Programming Languages - (part 6 of 7)

How source code becomes a running program, how languages are categorized, and a survey of important languages. Part of a larger series teaching programming. Visit http://codeschool.org

From playlist Programming Languages

Video thumbnail

Clojure - the Reader and Evaluator (2/4)

Part of a series teaching the Clojure language. For other programming topics, visit http://codeschool.org

From playlist the Clojure language

Video thumbnail

Clojure - collections (4/6)

Part of a series teaching the Clojure language. For other programming topics, visit http://codeschool.org

From playlist the Clojure language

Video thumbnail

Scripting vs Programming :Major Difference Between Scripting And Programming | #Shorts | Simplilearn

🔥Explore Our Free Courses With Completion Certificate by SkillUp: https://www.simplilearn.com/skillup-free-online-courses?utm_campaign=ScriptingvsProgramming&utm_medium=ShortsDescription&utm_source=youtube A scripting language is a computer language that does not require compilation and i

From playlist #Shorts | #Simplilearn

Video thumbnail

Q&A With Wolfram Coding Experts

Join Wolfram programming experts Chris Carlson, Harry Calkins, and Paritosh Mokhasi for Q&A related to Wolfram Language built-in functions such as NSolve, NDSolve, UpValues, Reap, and Sow. For more training resources, please visit: http://www.wolfram.com/Training/

From playlist Write Faster Code with Wolfram Language Virtual Workshop 2014

Video thumbnail

Threads and Concurrency in Java | What is a Thread in Java?

Concurrency fundamentals within the Java programming language using threads. When you work with the computer you can do several things at once you can hear music while you edit a document in a word processor and read your email at the same time this can be done because you're operating sys

From playlist Advanced Java Programming Tutorials [2022 Updated]

Video thumbnail

Async Await in C# | C# Async Await Explained With Example | C# Tutorial For Beginners | Simplilearn

🔥Post Graduate Program In Full Stack Web Development: https://www.simplilearn.com/pgp-full-stack-web-development-certification-training-course?utm_campaign=AsyncAwaitinCSharp-B8n-a2qS4Gg&utm_medium=DescriptionFF&utm_source=youtube 🔥Caltech Coding Bootcamp (US Only): https://www.simplilearn

From playlist C# Training 🔥[2022 Updated]

Video thumbnail

Ruby Conference 2008 - What All Rubyists Should Know About Threads

By: Jim Weirich Help us caption & translate this video! http://amara.org/v/GH3R/

From playlist Ruby Conference 2008

Video thumbnail

Deep dive: Facebook’s programming language, Hack - Julien Verlaguet keynote

From Fluent 2015: Julien Verlaguet will take a deep dive into Facebook’s new programming language, Hack, and discuss its bridge between statically- and dynamically-typed languages – providing code correctness while maintaining a fast feedback loop. With over a billion people using Faceboo

From playlist Fluent Conference 2015: The Web Platform

Video thumbnail

ChucK: A Computer Music Programming Language

November 16, 2007 lecture by Ge Wang for the Stanford University Human-Computer Interaction Seminar (CS 547). In the first part of this talk, Ge presents the design, philosophy, and development of ChucK, a computer music programming language intending to provide a different approach, expre

From playlist Course | Human-Computer Interaction Seminar (2007-2008)

Video thumbnail

What is the alternate in sign sequence

👉 Learn about sequences. A sequence is a list of numbers/values exhibiting a defined pattern. A number/value in a sequence is called a term of the sequence. There are many types of sequence, among which are: arithmetic and geometric sequence. An arithmetic sequence is a sequence in which

From playlist Sequences

Related pages

Lustre (programming language) | Formal specification | Atom (programming language) | Averest | Formal verification | Secure Operations Language | ChucK | SIGNAL (programming language) | Esterel | Communicating sequential processes | LabVIEW