Arctic: A Functional Language for Real-Time Systems
Roger B. Dannenberg, Paul McAvinney, Dean Rubine · Computer Music Journal · 1986
In the past, real-time control via digital computer has been achieved more through ad hoc techniques than through a formal theory. Languages for realtime control have emphasized concurrency, access to hardware input/output (I/O) devices, interrupts, and mechanisms for scheduling tasks, rather than taking a high-level problem-oriented approach in which implementation details are hidden. In this paper, we present an alternative approach to realtime control that enables the programmer to express the real-time response of a system in a declarative fashion rather than an imperative or procedural one. Examples of traditional, sequential languages for real-time control include Modula (Wirth 1977a; 1977b; 1982), Ada (DOD 1980), CSP (Hoare 1978), and OCCAM (May 1983). These languages all provide support for concurrency through multiple sequential threads of control. Programmers must work hard to make, sure their processes execute the right instructions at the appropriate times, and realtime control is regarded as the most difficult form of programming (Glass 1980). In contrast, our approach (Dannenberg 1984; 1986) is based on a nonsequential model in which behavior in the time domain is specified explicitly. This model describes possible system responses to real-time conditions and provides a means for manipulating and composing responses. The programming language Arctic is based on the nonsequential model and was designed for use in real-time computer music programs. It should be emphasized that our efforts have concentrated on the development of a notation for specifying desired real-time behavior. Any implementation only approximates the desired behavior, just as Arctic: A Functional Language for Real-Time Systems