posted on 2004-06-01, 00:00authored byBruce L. Horn
Abstract: "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; seperate 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."