Agent-based programming environments
MIT Media Laboratory
5 February, 1996
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
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
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 / firstname.lastname@example.org