Lambda the Ultimate

inactiveTopic Animism: An Essential Concept in Programming?
started 7/3/2002; 3:39:09 AM - last post 7/5/2002; 1:06:27 AM
Noel Welsh - Animism: An Essential Concept in Programming?  blueArrow
7/3/2002; 3:39:09 AM (reads: 1963, responses: 6)
Animism: An Essential Concept in Programming?
Animism is the attribution of the qualities of living things to inanimate objects. Animism often occurs in primitive religions, where everything (the ground, the sky etc.) is considered to be alive and interacting with these beings is an essential part of religious ceremonies. (That's my take on animism. I'm not an anthropologist or a theologist so standard disclaimers apply.) Intellectually we've out grown animism. Or have we? The author argues:

"Animacy is a powerful conceptual tool with which to analyze programming paradigms (see Table 3.2 for a summary). In particular, it can help explain the specific appeal and utility of object-oriented programming, which has in recent years become an extremely popular model for commercial programming. OOP is fundamentally just a way of organizing a program, and it has not always been clear why or even if it is a superior way to do so. Animism provides a theory about why OOP is powerful: its particular style of modularization divides up a program so that animate thinking can be readily applied to any of its parts. Functional programming, on the other hand, provides a model that systematically excludes animism, which might explain why, despite its undeniable theoretical advantages, it has little popularity outside of a small research community."

It's an interesting concept. I'd like to know what others think. I do have some animistic feelings about my programs including my functional programs.

This appeared on the LL-1 list.
Posted to critiques by Noel Welsh on 7/3/02; 4:29:22 AM

Ed Heil - Re: Animism: An Essential Concept in Programming?  blueArrow
7/3/2002; 5:35:28 AM (reads: 1450, responses: 0)
I think "anthropomorphism" might be a more accurate name for what you're talking about; animism seems to have more supernatural connotations, and also denotes an entire worldview, whereas anthropomorphism denotes a style of thinking.

Or if we can coin phrases, how about "animatism" as a more conservative version of anthropomorphism, which sees things as not necessarily humanlike (anthropomorphic) but merely alive and active (animate)?

"Animism" is related not to our notion of "animate" but to the Latin word "anima" (soul), and refers to the belief that everything has a soul. Though of course that's the ultimate origin of "animate" as well.

andrew cooke - Re: Animism: An Essential Concept in Programming?  blueArrow
7/3/2002; 6:25:40 AM (reads: 1447, responses: 0)
(posting in a hurry, so possibly confused) this sounds a lot like intentionalism - see work by daniel c dennett

Noel Welsh - Re: Animism: An Essential Concept in Programming?  blueArrow
7/3/2002; 9:43:52 AM (reads: 1425, responses: 0)
I'm just using the author's words when I say animism; I'm prepared to accept any terminology. I does sound a lot like the intentional stance. My question is: does it buy us anything? Is there a lesson here for language designers (if so, what is it), or this nonsense?

Ehud Lamm - Re: Animism: An Essential Concept in Programming?  blueArrow
7/4/2002; 12:45:48 AM (reads: 1352, responses: 0)
I know where the author comes from. When thinking about algorithms I and others tend to think (on some abstraction level) about someone running up and down the program doing the actual work (which makes me wonder about the results of teaching programming to autistic people). It's perfectly fine to think this way - when it is appropriate. When things become more complicated this kind of thinking stops being productive.

Active objects are one kind of useful abstraction found in software. Many other kinds are also useful. For example, we also tend to think using rules and generalizations (as in Logic/Declerative programming).

So, as far as it goes, this is a nice idea (not very original I might add). But I think the conclusions you referred to are too extreme, and require much stronger substantiation.

By the way: Active objects are the norm in Erlang, so maybe some Erlang hackers would like to give their point of view.

jon fernquest - Re: Animism: An Essential Concept in Programming?  blueArrow
7/4/2002; 2:42:13 AM (reads: 1344, responses: 0)
Jacque Ferber's (originally French) book:

Multi-Agent System: An Introduction to Distributed Artificial Intelligence
Jacques Ferber Harlow: Addison Wesley Longman 1999

has a lot of anthropomorphic programming paradigms in it not only on the level of one being but at the level of a society of cooperating beings. Petri nets play an important role. The book would be more interesting if it included code. (Note: Ferber's uses Java as well as Jython (Projet WarBot))

> does it buy us anything?
> Is there a lesson here for language designers
>(if so, what is it), or this nonsense?

Familiarity with poetic metaphor would be useful for programmers reviewing each other's code and trying to express ideas or criticisms. A lot of software description in the design patterns movement already uses a lot of metaphor. Non-rigorous but *intuitive* software design methodologies must surely have a place, if only for the cognitive economy that they entail, but there are also rigorous mechanisms for describing metaphor in natural language. The linguist Lakoff's research group at Berkeley is at the forefront of this research. For more all-embracing metaphors that could be applied to your software system see:

George Lakoff and Mark Turner, More than Cool Reason: A Field Guide to Poetic Metaphor. Chicago: University of Chicago Press, 1989. 230 pp. Book Review

A "poetic conceit " is the term used in the theory of poetry, tropes, and figurative use of language to refer to an *all embracing metaphor* like relating all the parts and actions of a human being to a software system or computer program. (see especially the poetry of John Donne).

rev - Re: Animism: An Essential Concept in Programming?  blueArrow
7/5/2002; 1:06:27 AM (reads: 1302, responses: 0)
The usage of the word animism is correct here. Anthropomorphism would not suggest that every object is alive with some sort of driving soul, but that it had human characteristics, like human motives.

Ojibwe is a very interesting (natural) language. Whereas the Germanic and Romantic languages classify (and have different syntaxes) on the basis of sex, in Ojibwe, it matters if an object is animate or inanimate, rather than its sex.

In some ways, Ojibwe reminds me of Smalltalk. I'm way to tired now to talk about it, I think I wrote something up about it. Which reminds me of the connection between animism and Smalltalk; that a Smalltalk image is just a world full of living, active objects interacting. A biosphere. I never thought about the word animism in my programming, but now that it's mentioned, I really do think that what I do when coding is just interacting in a subworld, an animist subworld. I am an object in the system just like the Transcript or the Tree or the OrderedCollection is. Having a visual environment I think also adds to this sensation.

I don't get the same feeling so much from other OO languages. Lisp to an extent, NewtonScript as well. But so many OO languages feel so static that it's almost like a vital part of the whole OO idea is lost.

If you're easily offended by any non-literal Christian religion discussion, please don't bother reading the below thoughts. I have no desire to start a religion flame war. :)

I wouldn't say that animism isn't only part of primitive religions. But then again, to most people in the Western world, anything that isn't Judeo-Christian is primitive. I wouldn't say that "intellectually" we've outgrown animism. In our culture, it's laughed at, yes, but that's because it's not the dominant religion. In other societies, they find that monotheistic religions are what they've intellectually and spiritually outgrown, to "discover" the advanced and incredible truth that everything is alive, connected and all part of one grand system. A lot of people come to that very conclusion even if they're not part of a culture which embraces animism.

In many ways, I think that the Judeo-Christian religions are quite a bit more primitive than animism. I'd also say that Judeo-Christian religions may be less primitive than animism in some areas. Above all, they're just different ways of thinking, it's not like there's this path of religions that illustrates the growth of our culture's intelligence. Some people seem to think it goes like this:

"Godless savages" -> Animism -> Polytheistic Ritual Religion -> Monotheistic Ritual -> Scientific (ha!) Atheism -> Transhumanism?

Of course, no one knows the absolute truth. Hell, no one even knows if there are any absolutes or even if they're possible. In this case, I think that the truth is that there are different ways of thinking. They most definately influence our wider culture and intellectual life, but the same amount of advancement is possible under animism as it is under Christianity. Animism would probably bring about more advancement than Christianity if the so-called Christians of today practicied the religion as it was written.