A term I’d always found intriguing, mostly because it’s such an unusual word. It’s a concept from mathematics and computer science but can be applied more generally—not that it often is. Basically, it’s an operation that, no matter how many times you do it, you’ll still get the same result, at least without doing other operations in between. A classic example would be view_your_bank_balance being idempotent, and withdraw_1000 not being idempotent.
The computer programmer is a creator of universes for which he alone is the lawgiver. No playwright, no stage director, no emperor, however powerful, has ever exercised such absolute authority to arrange a stage or field of battle and to command such unswervingly dutiful actors or troops.
«The computer emerges out of the history of weaving, the process so often said to be the quintessence of women’s work. The loom is the vanguard site of software development. Indeed, it is from the loom, or rather the process of weaving, that this paper takes another cue. Perhaps this paper is an instance of this process of weaving as well, for tales and texts are woven as surely as threads and fabrics. It is a yarn in both senses. It is about weaving women and cybernetics, and is also weaving women and cybernetics together. It concerns the looms of the past, and also the future which looms over the patriarchal present and threatens the end of human history.»
Sadie Plant, «The Future Looms: Weaving Women and Cybernetics» 1995
The most poetic introduction to computer science I’ve seen
Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.
A computational process is indeed much like a sorcerer’s idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer’s spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.
- From Chapter 1 of The Structure and Interpretation of Computer Programs, by Harold Abelson and Gerald Jay Sussman with Julie Sussman (MIT Press 1996, 2nd edition).
[Refer to Clarke’s Third Law: Any sufficiently advanced technology is indistinguishable from magic.]