Siri : a constrained-object language for reactive program implementation

Siri is a small language intended to simplify the design and implementation of programs with graphical user interfaces such as those available for the Apple Macintosh. The interfaces for such programs are usually based on three concepts: accurate and appealing visual metaphors, interaction by direct manipulation, and immediate reflection of changes in the data. Programs based on these concepts are called reactive, after Alan Kay's Reactive Engine [Kay69]. A well-designed reactive program maintains an internal model that is kept consistent with an end user model. The end user's model is created and modified by direct manipulation, using an input device such as a mouse to alter a visual representation. This puts the user in control, rather than the computer. Implementing reactive programs is difficult, due to computational mechanisms that are rarely supported in existing programming languages. Siri addresses these needs in a simple and uniform way. The declarative nature of Siri bypasses many issues of control flow; dependency networks and constraint satisfaction will transparently sequence updates. Siri's single abstraction mechanism, the constraint pattern, supports multiple object views simultaneously; separate hierarchies for visual layout, encapsulation, and class/subclass; and multiple concurrent objects. In addition, Siri will provide a straightforward framework for creation and composition of Siri programs using direct manipulation. This research was sponsored by the Avionics Laboratory, Wright Research and Development Center, Aeronautical Systems Division (AFSC), U.S. Air Force, Wright-Patterson AFB, Ohio 45433-6543 under Contract F33615-90-C1465, ARPA Order No. 7597. The views and conclusions contained in this document are those of the author and should not be interpreted as representing the official policies, either expressed or implied, of the Defense Advanced Research Projects Agency or the U.S. Government.

[1]  Brad A. Myers,et al.  Creating user interfaces by demonstration , 1988 .

[2]  Ivan E. Sutherland,et al.  Sketch pad a man-machine graphical communication system , 1964, DAC.

[3]  Brad A. Myers,et al.  A user interface toolkit based on graphical objects and constraints , 1988, OOPSLA 1988.

[4]  William Leler,et al.  Constraint programming languages: their specification and generation , 1988 .

[5]  Douglas C. Engelbart,et al.  Augmenting human intellect: a conceptual framework , 1962 .

[6]  Brad A. Myers,et al.  Automatic, look-and-feel independent dialog creation for graphical user interfaces , 1990, CHI '90.

[7]  Andrew J. Schulert,et al.  ADM — a dialog manager , 1985, CHI '85.

[8]  Greg Nelson,et al.  Juno, a constraint-based graphics system , 1985, SIGGRAPH.

[9]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[10]  Bjørn N. Freeman-Benson,et al.  Kaleidoscope: mixing objects, constraints, and imperative programming , 1990, OOPSLA/ECOOP '90.

[11]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[12]  Wilfred J. Hansen,et al.  The Andrew Toolkit - An Overview , 1988, USENIX Winter.

[13]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[14]  Alan Kay,et al.  The reactive engine , 1969 .

[15]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[16]  Roger B. Dannenberg,et al.  Creating graphical interactive application objects by demonstration , 1989, UIST '89.

[17]  Mark A. Linton,et al.  Unidraw: a framework for building domain-specific graphical editors , 1990, TOIS.

[18]  A. H. Borning CONSTRAINTS AND FUNCTIONAL PROGRAMMING. , 1987 .

[19]  Bradley T. Vander Zanden Incremental Constraint Satisfaction and its Application to Graphical Interfaces , 1988 .

[20]  Mahadev Satyanarayanan,et al.  Andrew: a distributed personal computing environment , 1986, CACM.

[21]  Paul S. Barth An object-oriented approach to graphical interfaces , 1986, TOGS.

[22]  C Rose,et al.  Inside Macintosh , 1985 .

[23]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[24]  Jr. William Worthington Pugh Incremental Computation and the Incremental Evaluation of Functional Programs , 1988 .

[25]  Christopher J. Van Wyk A language for typesetting graphics , 1980 .

[26]  Luca Cardelli,et al.  Building user interfaces by direct manipulation , 1988, UIST '88.

[27]  Luca Cardelli,et al.  Squeak: a language for communicating with mice , 1985, SIGGRAPH.

[28]  Brad A. Myers,et al.  The Garnet toolkit reference manuals : support for highly-interactive, graphical user interfaces in Lisp , 1989 .

[29]  Ralph D. Hill,et al.  Supporting concurrency, communication, and synchronization in human-computer interaction—the Sassafras UIMS , 1986, TOGS.

[30]  Gerald Jay Sussman,et al.  CONSTRAINTS - A Language for Expressing Almost-Hierarchical Descriptions , 1980, Artif. Intell..

[31]  Alan Borning,et al.  ThingLab: a constraint-oriented simulation laboratory , 1979 .

[32]  Ivan E. Sutherland,et al.  Sketchpad: a man-machine graphical communication system , 1899, AFIPS '63 (Spring).

[33]  Paul R. Calder,et al.  Composing user interfaces with InterViews , 1989, Computer.

[34]  Erich Gamma,et al.  ET++ - An Object-Oriented Application Framework in C++ , 1988, OOPSLA.

[35]  J. Doug Tygar,et al.  Miró: Visual Specification of Security , 1990, IEEE Trans. Software Eng..

[36]  David Canfield Smith,et al.  The star user interface: an overview , 1899, AFIPS '82.