This dissertation was motivated by a desire to find new ways of thinking about action, programming, and the control of animate systems. To this end, it has explored a particular approach to programming based on the central idea of animate agents. There are three main contributions:
The analysis of metaphor and animacy (chapters 2 and 3) is an attempt to grapple with the informal conceptual underpinnings of a domain usually presented in formal terms. The notion of metaphorical models was chosen as the vehicle for this exploration because of its success in revealing the structure of everyday domains. While metaphor has been studied in the realm of computer interfaces, there has been very little prior study of the metaphors underlying programming languages. This section of the dissertation thus took a broad approach to the subject. Some effort was necessary to recover the ability to detect the presence of metaphors that have become transparent. A number of established programming paradigms were subjected to an analysis based on their underlying metaphors.
Particular attention was paid to the role of animate metaphors in these paradigms, and in computation generally. It was found that animate metaphors are part of the foundation of computation, and play a role in most (but not all) programming paradigms. However, the form of animacy used to construct computation is of a peculiarly limited sort that relies on images of humans behaving in a rote or mechanical fashion. Some of the key properties that otherwise define the animate realm, such as autonomy and purposefulness, are missing from this standard form of computational animism.
Agent-based programming is then introduced as an organizing metaphor for computation that includes these properties. A variety of computational techniques for realizing agents were examined. Different aspects of agent-like functionality can be found in the computational world in the form of processes, rules, objects, goals, procedures, and behavior modules. The task of designing an agent-based programming system is to use these elements to generate a programming system that is both powerful and can be seen in animate terms.
Chapter 5 presented a number of such systems. Simple Agents is a minimalist version of an agent, offering only concurrency and a form of conflict detection and resolution. Goal Agents extends this model by introducing a more structured version of an agent that includes a goal. It was shown that this can provide the necessary foundation for anthropomorphic interfaces and for organizing systems of agents. Dynamic Agents is a more powerful system that introduces dynamic creation of new agents, hierarchical control, sequencing, and a variety of control constructs. This system approaches the generality of a full-powered programming language using the agent metaphor. The utility of the system for behavioral simulation, constraint problems, and a variety of other uses is explored.
The LiveWorld environment (chapter 4) was conceived originally as a platform or tool for the exploration into agent-based programming languages, but contains some original contributions in its own right. In particular, it combines Boxer's style of hierarchical concrete presentation in the interface with an underlying object system based on recursive annotation and inheritance through prototypes. LiveWorld extends the underlying object system, Framer, in order to make it operate in a dynamic interactive environment. LiveWorld contains many features to support agent-based programming, including sensors that allow objects to react to one another, and animas that allow autonomous processes to be easily introduced into a constructed world.