<< >> Up Title Contents

1.4 Overview of the Thesis


The body of this thesis is in four chapters. The first two are primarily conceptual and analytical, while the last two are more technical and describe implemented software.

1.4.1 Analysis of Metaphors for Programming

Chapter 2 is an analysis of how metaphor systems are used in the understanding and construction of computation and programming languages. The object of the chapter is to find a way of thinking about the informal conceptual underpinnings of a field whose knowledge is more commonly described in mathematical formalisms. It first gives a brief overview of contemporary metaphor theory, then applies the theory to the analysis of a number of different models or paradigms for programming. By means of this analysis we can reveal some of the hidden assumptions that underlie the concept of computation and the languages with which we approach it.

1.4.2 Agents and Animacy

Chapter 3 continues the task of the previous chapter by exploring a particular type of metaphor that employs some form of anthropomorphism or animism. Animacy is seen to be, in itself, a basic category for dealing with the world, with roots deep in innate perceptual processes. Three relevant characteristics of the animate realm are selected for attention, because of their centrality to the concept and because of their relevance to computation: purposefulness, reactivity, and autonomy in the sense of being able to initiate action. Animism is seen to be central to understanding action, and thus also central to understanding computational activity.

The chapter examines the use of animism in programming languages, as well as the more explicitly anthropomorphic constructs found in interface agents and artificial intelligence. We find that most programming languages involve implicit animate metaphors, but an animacy of a particularly limited sort that derives from the original conception of the computer as a device for following instructions.

At this point, it is possible to more precisely define agent-based programming as an attempt to construct a new paradigm for programming that makes computational animism explicit and attempts to extend it beyond the instruction-following metaphor to include the central properties of animism revealed by our analysis, such as autonomy and goal-directedness. Various methods for realizing an animism with these properties in computational forms are explored. Some previous attempts to construct programming systems that operate in this style are examined and critiqued.

1.4.3 The LiveWorld Programming Environment

Chapter 4 describes the LiveWorld system in more detail. LiveWorld is a visual object-oriented programming environment that supports the research into agent-based programming techniques. LiveWorld provides the necessary substrates for this work, including a flexible prototype-based object system, a simple two-dimensional world for computational actors to perform in, and a graphical interface that makes the computational objects tangible and accessible to manipulation. While LiveWorld is primarily a tool to support the main object of research, it is of some interest in its own right and a necessary step on the road to developing an environment for agent-based programming. Some of the more innovative features of LiveWorld are sensors that allow objects to be aware of each other, and the integration of a spreadsheet-like interface with animated graphic objects.

1.4.4 Agent-Based Programming

Chapter 5 presents a series of agent-based programming systems implemented using LiveWorld. The first two, Simple Agents and Goal Agents, are computationally fairly trivial but serve to illustrate some of the key concepts underlying agent-based programming. These include the idea of agents as separate objects that can be independently manipulated and integrated into a computational actor, the need to handle concurrency and conflict, the idea of using goals as a method to organize agent activity, and the use of anthropomorphic icons to convey agent state and activity to the user. The final agent system, Dynamic Agents, illustrates how these ideas can function as part of a more powerful and general programming system. A series of examples shows how the agent systems can implement systems for the selected problem domains.


<< >> Up Title Contents