A number of powerful ideas have informed this research and the designs that grew out of it. This section sketches out this background of ideas and situates the present work in relation to them.
The concept of agent used here derives from Marvin Minsky's Society of Mind (SOM) theory (Minsky 1987). SOM pictures a mind as a collection of interacting agents, which are defined operationally as "any part or process of the mind that by itself is simple enough to understand". The mind is thus seen as a collection of simple entities, each with their own goals but somehow connected so that their actions are coordinated. The word "agent" has obvious animate connotations. While agents are seen as mechanisms, they are mechanisms that are seen in loosely anthropomorphic terms, having a purpose and (perhaps) a degree of autonomy.
Agents serve many different purposes: some have representational or perceptual functions (such as apple or red), others are procedural (build, find-place). Still others are based on a wide variety of AI methodologies including neural nets, frame-based representations, and GPS-style goal followers. Because agent is defined so loosely, and there are many different kinds, it is probably unwise to say much about agents in general. For our purposes, procedural agents are of the greatest interest. These, more so than others, are described in highly animate terms: "Your grasping agents want to keep hold"; "add must call for other agents' help" (SOM, p20-21). The idea of procedural agents clearly derives from the computational notion of a procedure, and like procedure invocations can be seen as hierarchical bureaucracies that perform complex tasks by parceling them out from top to bottom. But unlike procedures, they also can have desires and are otherwise anthropomorphized.
In Minsky's terminology, "agent" has a dual term: "agency". If "agent" is any understandable part of the mind, then "agency" is "any assembly of parts considered in terms of what it can accomplish as a unit, without regard to what each of its parts does by itself." With these definitions, "agent" and "agency" are to be seen as dual terms for the same thing, "agent" meaning a mechanism simple enough to be understood in mechanical terms, while "agency" indicates the same mechanism but viewed in functional or intentional terms.
I recycled the old words "agent" and "agency" because English lacks any standardized way to distinguish between viewing the activity of an "agent" or piece of machinery as a single process as seen from outside, and analyzing how that behavior functions inside the structure or "agency" that produces it (Minsky 1991).The distinction between these two views or levels of analysis is crucial to Minsky's attempt to build a new metaphor system for describing minds. However, the metaphoric mapping is somewhat unclear. In other domains of research, "agent" has come to mean the very opposite of what Minsky intends: that is, "agent" (rather than "agency") now usually means a semi-intelligent program as seen from the outside. This terminological confusion is unfortunate. Here, we will use "agent" to mean any process or component that is intended to be understood from an animistic perspective. What it means to understand something in this way is discussed in Chapter 3.
The animate systems that LiveWorld can build are much simpler than human minds, and incorporate only the most basic parts of SOM. For instance, none of the representational ideas are implemented, other than a weak version of K-lines (see section 4.6.6). Nonetheless SOM has functioned as a key stylistic inspiration for agent-based programming. I view LiveWorld as a step towards building implementations of SOM, if only in that the availability of agent-based programming environments for children might encourage the development of appropriate styles of thinking and programming.
The task of simulating animal behavior was the goal of my first efforts in agent-based programming. Modeling animals led to a new set of perspectives about the nature of intelligence. The intelligence of animals necessarily manifests itself in the form of behavior and interaction with their environments, rather than the ability to solve symbolic problems. At the time this project began, the main stream of artificial intelligence research had rather little to say about these issues. Instead I was inspired by works from cyberneticists, especially Valentino Braitenberg's book Vehicles (Braitenberg 1984), which illustrated a series of ideas about control by encapsulating them in simple creatures made up of sensors, motors, and neuron-like components. My first effort at an environment for animate systems, BrainWorks (Travers 1988), was based on this book.
Another source of inspiration was the work of ethologists, scientists who studied animal behavior in the world. Niko Tinbergen, one of the founders of this field, developed a general theory of behavioral control (Tinbergen 1951) that formed the basis of my second system, Agar (Travers 1988), which was based upon an idea of agent derived from Tinbergen's drive centers and was more oriented towards producing simulations of actual behavior.
At this time, several groups within the AI community were becoming dissatisfied with the standard approaches to controlling action and developing alternatives very much along these lines. In particular, Rod Brooks' work with robots (Brooks 1986) (Brooks 1991) and the work of Phil Agre and David Chapman (Agre and Chapman 1987) (Chapman 1991) were influences on my own work. This school of thought, which has been labeled the "situated action" movement, is still controversial within AI. This movement has generated a good deal of critical reflection within AI, which can only be to the good. From a constructive standpoint, however, the techniques of situated action have had demonstrated successes only in limited domains. It is not clear how to extend these approaches, which rely on highly specialized control mechanisms, to the kinds of general capabilities that AI has striven for. However, for the purposes of this thesis, that is enabling the construction of autonomous and reactive creatures in interactive environments, they have a clear utility.
Uniting these three strands of research is the idea that understanding intelligence requires taking into account the relationship between an intelligent creature and its environment. Intelligence, then, is located not so much in the head, but in the relationship between the mind and the world. I've found this simple idea intriguing if not absolutely convincing. It has value as an alternative perspective on thinking about mental processes (some of the epistemological implications are discussed further in section 2.1.4). However, this approach to thinking about intelligence is quite appropriate for the task at hand, that is, designing animate environments and programming systems for them. This task requires that the environment and the minds and agents be co-designed and work together. The lesson for programming environments is that what you want your programming language to do depends on the environment in which it will operate.
The constructionist approach to learning (Papert 1991) underlies the design of LiveWorld and the general framework of my research. Constructionism derives its name as a variant of the kindred psychological school of constructivism. The constructivist view of learning and development (Piaget 1970) presents an image of these processes as both active and creative. It is active in that it is primarily a process of spontaneous development, in which the learner must discover knowledge rather than having it delivered from the outside by a teacher. It is creative in that the process of learning involves building structures of knowledge within the mind, structures which are original creations, at least relative to the learner. Constructionism shares the spirit of constructivism, but extends it by emphasizing that learning can be aided by building actual material objects in the world. The process of construction then takes place in both the mind and the external shared world. Both approaches to learning encourage the learner to assume an active and creative role rather than be a passive recipient of information, and both are opposed to the more prevalent educational philosophy which they label instructionism, in which learning is seen as a process in which students passively receive information from teachers.[1]
Constructionism applied to the use of computers in education results in the idea that students should be able to use the computer as a construction medium. The implications are that the computational medium should be flexible: like a piece of paper, it ought to support a number of different modes of use, levels of skill, and target domains. It also implies that the locus of control should be the student rather than the computer, as opposed to the more instructionist versions of educational computer use, in which the model is for the computer to present the student with a structured series of lessons and quizzes.
The constructionist philosophy underlies the development of Logo, Smalltalk, Boxer and related programming environments for learning. The LiveWorld environment too is constructionist in orientation--it provides a computational medium that makes a variety of computational objects available to novice programmers, and encourages experimentation and improvisation. One important aspect of the design is to make all aspects of LiveWorld's operation and all relevant computational objects accessible to the user through a direct-manipulation interface. This also allows some elements of the construction process to take place through spatial manipulation of parts. Beginning programmers in LiveWorld can build systems simply by copying, dragging, and combining parts via direct manipulation.
Constructionism has sometimes been overinterpreted to mean that the computational environment should initially be a completely blank slate, empty so that it eventually be populated solely by the creations of the user. LiveWorld takes a looser approach to constructionism, providing kits of parts and examples that can be copied and modified. Indeed its prototype-based object system emphasizes this mode of use (see section 4.2.10). This form of constructionism more realistically reflects how real-world learning takes place, and makes it possible for students to tinker with complex systems that they could not easily build from scratch.
A constructivist philosophy also underlies the study of metaphors for computation presented in Chapters 2 and 3. This method of thinking about how people think about computation is based upon the view that the knowledge of both experts and novices is individually constructed, with metaphor being a fundamental construction technique. The fact that our models of computation are constructed leads to the possibility that there could be different ways of understanding computing that would provide powerful alternative points of view. This premise underlies the attempt to construct an approach to programming centered around the idea of agents. By explicitly designing a language around a powerful metaphor, the activity of programs can be viewed from a new and useful perspective.
Constructivism and constructionism are radical ideas. Constructivism forces us to acknowledge that learning is a creative process and that knowledge is constructed rather than received. Constructionism suggests that this process takes place not only inside the heads of individuals, but involves interaction with the material and social worlds. Both imply a great deal of freedom and the possibility of alternative epistemologies. This thesis is an attempt to explore some of these possibilities for the domain of programming.
If constructionism is a philosophy of learning, interactive computer environments provide both the worlds and raw material where construction can take place. A few programming environments that were designed to support construction have already been mentioned. But there are other examples of interactive software that, while not providing as powerful general-purpose programming tools as Logo (Papert 1980) or Smalltalk (Goldberg and Robson 1983), succeed in creating highly interactive virtual worlds which are constructionist in their own fashion. These include interactive constraint systems such as Sketchpad (Sutherland 1963) and ThingLab (Borning 1979), spreadsheet programs (in terms of widespread adoption, the most successful variety of constructivist computational media), and some visual construction kits such as Hookup (see section 2.2.3.2).
What distinguishes these systems is their ability to create a virtual world of reactive objects that operate autonomously according to rules that the user can construct and control. An important goal of LiveWorld was to enable this sort of construction. The "liveness" of LiveWorld extends not only to being able to build simulations of living animals, but to having the computational medium itself be lively and reactive.
There is now a large body of software, mostly aimed at children, that presents worlds in which limited forms of construction take place. Examples are mostly in the form of games such as SimCity, Pinball Construction Kit, and The Incredible Machine. These systems generally present a fixed set of objects that operate according to fixed rules, with the user given the ability to arrange the objects into new configurations. As such, they are not as general or flexible as the other environments mentioned, but provide inspiration due to their high degree of liveliness and their ability to provide rich and habitable worlds.