Agent-based programming environments

Michael Travers
MIT Media Laboratory

5 February, 1996

[position paper for the Child's Play '96 Workshop]


For some time I have been engaged in a search for new ways to think about programming. My goal has not been so much to make programming more accessible to "end users" or other novices, but to escape from what I feel are conceptual straitjackets that come along with our received ideas about what computing is and how programs should be expressed.

The initial inspiration for this search was Alan Kay's Vivarium project, which sought to use living systems as paradigms for programming languages and to develop software environments in which young programmers could develop models of animal behavior. I was additionally inspired by Marvin Minsky's Society of Mind theory, which drew a picture of the complex machinery of the mind as composed of interacting functional parts, or agents, that functioned together in a decentralized fashion to produce intelligent behavior.

I sought to turn the impressionistic ideas of Society of Mind into an agent-based programming system that would be flexible yet simple enough to be used by novices. Animal minds were the first target domain of these systems. A series of programming systems was developed, using progressively more powerful models of agents and a variety of graphic interface techniques.

The first of these, BrainWorks, was a connectionist visual-programming environment based upon the cybernetic models of Valentino Braitenberg's book Vehicles. The "agents" in this case were neuron-like units that could be used to wire together sensors and effectors of a Logo-turtle-like creature that would then find its way about a world, responding to various objects. My second system, Agar, built upon these ideas and extended them in several dimensions: a more sophisticated concept of an agent based upon ethological theory, and a richer simulated world. Agar was used to make several realistic models of animal behavior.

These initial attempts let to a viewpoint on what agent-based programs should do that was strongly influenced by cybernetic ideas, as well as the more recent version of these ideas known as "situated action". Agent-based systems need to interact strongly with their world, and derive much of the richness of their behavior from the richness of the world.

However, some experience with the Playground system, developed by Alan Kay's group at Apple with some input from Agar, showed that this situated approach had some limitations as the basis for a general purpose programming environment. It turned out thinking cybernetically is not always the most easy or natural model for children, who seem much more attuned towards narrative models of activity. The sequential event structure of narrative is exactly the sort of thing that reactive models like those used in the above systems have the hardest time dealing with.

This observation led to an interest in narrative in general and its possible use in agent-based programming environments. A prototype system developed by Marc Davis and myself known as Nose Goblins explored the use of narrative, in the form of storyboards and video clips of cartoon actors representing agents, as a tool for conveying the action of agents. This form seemed especially suited to the presentation of conflicts between agents, conflict and its resolution being the soul of narrative.

My current effort, called LiveWorld, is an effort to knit these ideas into a full-fledged general purpose programming environment. LiveWorld is a graphical programming environment, with an interface influenced by Boxer. LiveWorld supports the creation of dynamic behavioral simulations and games. It offers novice programmers a world of recursively nested objects, with a simple but powerful interface that makes all parts of the system equally accessible and manipulable. The system provides a large library of objects to build upon, and a prototype-based inheritance system to encourage experimentation and improvisation.

LiveWorld has been used as a base for exploring a variety of agent-based programming systems. The most recent of these, Dynamic Agents, is a goal-based programming language that allows agents to be created dynamically during the course of action. While based on the same sort of cybernetic ideas that influenced the earlier systems, Dynamic Agents supports sequencing of actions as well as explicit goals. It also has sophisticated mechanisms for conflict resolution and can support a variety of different programming paradigms, including a variant of constraint programming in which each constraint is viewed as an agent. Agents serve to combine goals with methods for realizing goals.

Dynamic Agents uses an anthropomorphic metaphor system to describe the behavior of agents and convey them to the user. Agents can have goals, and are portrayed as happy if their goal is satisfied, unhappy if not, and angry if another agent happens to be interfering with their goal. This emotional represetntation allows the system to generate storyboards that provide a narrative of the sometimes complex activity occurring in agent systems.

The systems described above have been essentially prototypes and have received only limited testing in educational or "end-user" situations. They have served as idea generators and testers for me, and helped me to refine my own ideas about the metaphors that underlie computation, and resulted in a surprisingly simple yet powerful new programming paradigm. Whether this paradigm is accessible to novices is still open to question. I believe that it is. Whether it is or not, I will advance the position here that "liveness" or reactivity is an important design principle for programming environments for novices. Programming environments, even for end users, should be powerful enough to support the modeling of living systems. The computer should be seen, not as a tool to compute, but an environment in which things can move, grow, and live.
nothing to see here
Michael Travers / MIT Media Lab / mt@media.mit.edu