PART V: Integration of Synchrony and Asynchrony - R K Shyamasundar; S Ramesh (Real Time Programming: Languages, Specification And Verification, 2009)
Programming languages that have been used for real-time programming can be broadly categorized into: 1. Asynchronous Languages: Here, a program is treated as a set of loosely coupled independent execution units or processes, each process evolving at its own pace. Interprocess communication is done by mechanisms such as message passing. Communication as a whole is asynchronous in the sense that an arbitrary amount of time can pass between the desire of communication and its actual completion. This class includes languages such as Ada, Occam, CSP etc. 2. Perfectly Synchronous Languages: In this class, programs react instantaneously to its inputs by producing the required outputs. Statements evolve in a tightly coupled input-driven way deterministically and communication is done by instantaneous broadcast where the receiver receives a message exactly at the time it is sent. That is, a perfectly synchronous program produces its outputs from its input with no observable time delay. Languages such as Esterel [12], Lustre, Signal, Statecharts belong to this category. These languages are often referred to as reactive languages. These languages use the multiform notion of time rather than clock time…