Programming with Agents - Contents
Abstract
Doctoral dissertation committee
Acknowledgments
Chapter 1: Introduction
1.1 LiveWorld: an Animate Programming Environment
1.2 Examples of Animate Systems
1.2.1 Video Games and Animation
1.2.2 Animal Behavior Models
1.2.3 Graphic Layout and Interactive Constraints
1.2.4 Blocks World
1.2.5 Putting it All Together
1.3 Influences and Inspirations
1.3.1 Society of Mind
1.3.2 Cybernetics, Ethology, Situated Action
1.3.3 Constructivism and Constructionism
1.3.4 Interactive Construction Environments
1.4 Overview of the Thesis
1.4.1 Analysis of Metaphors for Programming
1.4.2 Agents and Animacy
1.4.3 The LiveWorld Programming Environment
1.4.4 Agent-Based Programming
Chapter 2: Metaphors and Models for Computation
2.1 Theories of Metaphor
2.1.1 The Contemporary Theory of Metaphor
2.1.1.1 The Conduit Metaphor
2.1.2 Dead Metaphors
2.1.3 The Metaphorical Nature of Scientific Understanding
2.1.4 Formalization and Metaphor
2.2 Metaphors in Programming
2.2.1 The Idea of Computation
2.2.2 Metaphors Make Computation Tangible
2.2.3 Metaphoric Models for Computation
2.2.3.1 The Imperative Model
2.2.3.2 The Functional Model
2.2.3.3 The Procedural Model
2.2.3.4 The Object Model
2.2.3.5 The Constraint Model
2.2.4 Interface Metaphors
2.3 Conclusion
Chapter 3: Animacy and Agents
3.1 Introduction
3.2 The Realm of Animacy
3.2.1 The Perception of Causality
3.2.2 The Development of Animism as a Category
3.2.3 Frameworks of Understanding
3.2.4 Animacy and the Representation of Action
3.2.5 Conclusion: the Nature of Animacy
3.3 Animacy and Computation
3.3.1 Animism at the Origins of Computation
3.3.2 Animacy in Programming
3.3.2.1 The Little-Person Metaphor
3.3.3 Body- and Ego-Syntonic Metaphors
3.3.4 Anthropomorphism in the Interface
3.3.5 Animate Metaphors in Artificial Intelligence
3.3.6 Conclusion: Computation Relies on Animate Metaphors
3.4 Agent-Based Programming Paradigms
3.4.1 Principles of Agent-Based Programming
3.4.1.1 Purpose, Goals, and Conflict
3.4.1.2 Autonomy
3.4.1.3 Reactivity
3.4.2 Computational Realizations of Agents
3.4.2.1 Agent as Process
3.4.2.2 Agent as Rule
3.4.2.3 Agent as Enhanced Object
3.4.2.4 Agent as Slot and Value-Producer
3.4.2.5 Agent as Behavioral Controller
3.4.3 Agents and Narrative
3.5 Conclusion
Chapter 4: LiveWorld
4.1 Overview of LiveWorld
4.2 Design
4.2.1 General Goals
4.2.2 A World of Lively Objects
4.2.3 Spatial Metaphor and Direct Manipulation
4.2.4 Prototype-based Object-oriented Programming
4.2.5 Improvisational Programming
4.2.6 Parsimony
4.2.7 Metacircularity
4.2.8 Graphic Realism and Liveness
4.2.9 Learning Path
4.2.10 Rich Starting Environment; Libraries
4.3 Box Basics
4.3.1 Boxes Form a Hierarchical Namespace
4.3.2 Inheritance, Prototypes and Cloning
4.3.3 The Basic Box Display
4.3.4 Theatrical Metaphor
4.4 Interface Details
4.4.1 Selection
4.4.2 Menus
4.4.3 Mouse Operations
4.4.4 Cloning
4.4.5 Inheritance
4.4.6 Interestingness
4.4.7 Box Sizes and Positions
4.5 Language Extensions
4.5.1 Accessors for Boxes
4.5.2 Message-Passing with ask
4.5.3 Methods
4.5.4 Relative Box Reference
4.5.4.1 Self
4.5.4.2 Boxpaths
4.5.5 Demons
4.5.6 Global Object
4.6 Specialized Objects
4.6.1 Animas and Agents
4.6.2 Specialized Slots
4.6.3 Computed Slots
4.6.4 Sensors
4.6.5 Multimedia Objects
4.6.6 K-lines
4.7 Miscellaneous Issues
4.7.1 Shallow vs. Deep Cloning
4.7.2 Internal Frames
4.7.3 Deleting Boxes
4.7.4 Install and Deinstall Protocol
4.7.5 Error Handling
4.8 Some Unresolved Issues
4.8.1 Multiple Views of Actors
4.8.2 Uniform Interfaces Have a Downside
4.8.3 Cloning and Dependent Objects
4.9 Relations to Other Work
4.9.1 Boxer and Logo
4.9.2 Self
4.9.3 Alternate Reality Kit
4.9.4 Rehearsal World
4.9.5 ágora
4.9.6 IntelligentPad
4.10 Conclusion
Chapter 5: Programming with Agents
5.1 Simple Agent Architectures
5.1.1 Simple Agents
5.1.1.1 Simulating Concurrency
5.1.1.2 Handling Conflict
5.1.1.3 Presenting Conflict Situations to the User
5.1.1.4 Behavior Libraries
5.1.2 Goal Agents
5.1.3 A Comparison: Teleo-Reactive Programming
5.2 Dynamic Agents
5.2.1 Overview
5.2.2 Structures
5.2.2.1 Tasks
5.2.2.2 Agents
5.2.2.3 Templates
5.2.3 Control
5.2.3.1 Activation and Expansion
5.2.3.2 Cycles
5.2.3.3 Success and Failure
5.2.4 Special Tasks
5.2.4.1 Combining Tasks
5.2.4.2 Control Tasks
5.2.4.3 Primitive Tasks
5.2.4.4 Internal Special Tasks
5.2.5 Domain Tasks and Templates: Examples
5.2.5.1 Numerical Constraints; Equality
5.2.5.2 Geometry
5.2.5.3 Behavior
5.2.6 Conflict
5.2.6.1 Slot Conflict
5.2.6.2 Goal Conflict
5.2.7 Determination
5.3 Interface
5.3.1 Top-Level Tasks
5.3.2 Auto-tasks and Locks
5.3.3 The Agent Display
5.3.4 Controlling When and How Agents Run
5.3.5 Agent Displays and Storyboards
5.4 Additional Examples of Agent Systems
5.4.1 A Video Game
5.4.2 A Physical Simulation
5.4.3 A More Complex Graphic Constraint Problem
5.4.4 A Creature in Conflict
5.4.5 An Ant
5.4.6 A Recursive Function
5.4.7 A Scripted Animation
5.4.8 BUILDER in the Blocks World
5.5 Discussion
5.5.1 DA as a Procedural Language
5.5.2 DA as a Behavioral Control System
5.5.3 DA as a Constraint System
5.5.3.1 Related Work
5.5.4 DA and Anthropomorphism
5.5.4.1 Creation of Agents
5.5.4.2 Agents, Tasks, and Templates
5.5.4.3 Are Agents Too Low-level?
5.5.4.4 Variants of Anthropomorphic Mapping
5.6 Summary
Chapter 6: Conclusions
6.1 Summary and Contributions
6.2 Related Work
6.2.1. KidSim
6.2.2. Agentsheets
6.2.3. ToonTalk
6.3 Directions for further research
6.3.1 What Can Novices Do with Agents?
6.3.2 Can Agent Activity Be Made More Understandable to the User?
6.3.3 Can Agent Systems Be Made More Powerful?
6.3.4 Can Agents be Organized in Different Ways?
6.3.5 Can the Environment Be Agents All the Way Down?
6.3.6 Agents in Shared Worlds
6.4 Last Word
Bibliography