There appears to be a fundamental dichotomy in human thought that separates the living from the inanimate, the purposive from the mechanical, the social from the natural, and the mental from the physical. The tendency to divide the world along such lines is strong, possibly innate, crucial to social functioning, and a key part of folk psychology (Dennett 1987). This grand divide is no doubt an example of what Minsky calls a "dumbbell theory", or false dualism (Minsky 1987, p117). I should make it clear that the dualism explored in this chapter is an epistemic dualism that exists in our theories of the world, not in the world itself, and thus should be distinguished from ontologically dual theories such as Cartesianism or vitalism.
Science has, at least on the surface, outgrown both sorts of dualism. But because the distinction between animate and inanimate is such a universal and basic part of human thinking, it haunts even the most sophisticated efforts to grapple with the nature of the mind. We all begin as dumbbells, and we do not easily rid ourselves of our dumbbell theories. Computational theories of the mind and computation itself are in some ways attempts to bridge this gap--to make lifelike behavior and intelligence from inanimate parts, and to explain the behavior of living things in terms drawn from the physical world. But the partial successes of AI, cybernetics, and cognitive science in devising theories that partially unite these realms has not yet remade our everyday minds accordingly. Nor are the scientific theories themselves immune to the effects of this persistent divide.
It is a common practice to describe the activity of machines or other non-living objects in animate terms. I will refer to these sorts of mappings as animate metaphors. The term anthropomorphism is more common, but is not quite as accurate, since other animals besides humans can serve as the source domain. Another suitable term is ethopoeia, the classical Greek word for attributions of human qualities to non-human objects (Nass, Steuer et al. 1993). This chapter explores the use of animism and animistic metaphors in the construction of the computational realm. In particular, it examines the ways in which animacy is used to make the operations of complex systems such as computers comprehensible.
Animate metaphors are powerful because they are capable of exploiting our knowledge about humans and human action. When dealing with systems that are too complicated to be understood in physical and mechanical terms, the leverage that animate metaphors can give is crucial. It allows us to think in terms of purpose and function, and thus to understand without having to know the "implementation details" of the system. At the same time, the use of animate metaphors to describe machines can be dangerous, because of the risk of overattribution errors. For instance, we can talk of a simple robot vehicle using negative feedback control as "wanting" to propel itself towards some stimulus (as in (Braitenberg 1984)) but the nature of this wanting is not the same as that of a person--the vehicle does not know that it wants, does not necessarily feel anything like disappointment if it does not get its goal, and so forth. The metaphor is compelling, but can also be misleading.
The first section of this chapter explores how the concepts of animate and inanimate arise, how they develop, and how they are used. It traces a few key properties of the animate realm through various attempts to analyze the two domains. Three key concepts emerge as the defining properties of the animate realm: autonomy, purposefulness, and reactivity.
The second section looks at how animate metaphors have been used in computation and what roles they play in the description of various programming languages. We will find that while animism plays a central role in the foundation and continuing development of computation, it tends to be a rather peculiar and limited form of animism, one that omits some of the most important qualities of the domain.
The last section explores a new kind of programming paradigm based on agents, that is, on collections of explicitly anthropomorphic units. Agent-based programming seeks to combine the power of computation with the aspects of animism that previous forms of computational animism have left out. It will also explore the use of narrative as a natural way to express the action and interaction of animate beings.