Conceptual metaphor theory holds that our understanding of the world is largely structured by metaphor. This presumably includes our understanding of computer programs, which is the basis of Metaphors we Program By: Space, Action and Society in Java, a paper by Alan Blackwell. The paper shows analyses of documentation for some standard Java libraries, looking for the metaphors that structure human understanding of the library components and their interactions. I’ve taken the liberty of extracting the metaphors related in the paper but if you’re interested you should go and read the whole thing, it’s a good one. I feel I could meditate on this list for some time, and I’d love to see comparisons with the metaphors used in the documentation of other languages.
- Components are agents of action in a causal universe.
- Programs operate in historical time.
- Program state can be measured in quantitative terms.
- Components are members of a society.
- Components own and trade data.
- Components are subject to legal constraints.
- Method calls are speech acts.
- Components have communicative intent.
- A component has beliefs and intentions.
- Components observe and seek information in the execution environment.
- Components are subject to moral and aesthetic judgment.
- Programs operate in a spatial world with containment and extent.
- Execution is a journey in some landscape.
- Program logic is a physical structure, with material properties and subject to decay.
- Data is a substance that flows and is stored.
- Technical relationships are violent encounters.
- Programs can author texts.
- Programs can construct displays.
- Data is a genetic, metabolizing lifeform with body parts.
- Software tasks and behaviour are delegated by automaticity.
- Software exists in a cultural/historical context.
- Software components are social proxies for their authors.
I’ve written about Alan Blackwell’s research before.
Then this morning I saw this tweet:
<laputean> “hello world” programm is the ‘perfect’ starting point of fastidious and wrong epistemological assumptions that one carries for all life
A neat reminder that the ways in which we perceive the workings of computer `agents’ and source code is very much within a particular social context.