On Jan 24, 2010, at 3:59 AM, Bjorn Reese wrote:
Dijkstra has something nice to say about metaphor and programming
This argument made me think of another topic. When does a metaphor
being a metaphor?
When native speakers are no longer aware that it is a metaphor.
I suppose few native speakers of English are aware that "naked"
used to be the past tense of "to nake" and meant "peeled", thus
comparing an unclothed person to a peeled fruit. More to the
point, I think Blackwell's "violent events" metaphor is bogus,
on the grounds that (a) "impact" isn't necessarily _violent_
(the impact between two children's balloons is hardly violent)
and (b) I suspect that for most people these days, "impact" is
a very colourless word signifying little if anything more than
"affect". I certainly see people using "impact" (verb/noun)
where "affect" (verb)/"effect" (noun) could replace it with no
effect/impact on the meaning. When we talk about musical scales,
who among us thinks of ladders?
Of course, as well as metaphors (including possibly dead ones)
in the text used by people writing about a class library, there
are metaphors (including possibly dead ones) in class and method
names as well. HashMap includes two metaphors, one of them
probably dead for most Java programmers (to cut up, slash, hack
about, mangle, as in chopping meat into small pieces for cooking)
and probably live (a device for finding places of interest).
I think these metaphors may be more interesting. A Java programmer
may well use a class without ever having read the Javadoc for it,
but cannot avoid using its name.
Returning to Dijkstra's bug example, is "bug" still an animistic
metaphor, or is it simply a synonym for a defect (or fault)?
The OED bug, n.¹ sense 1 entry begins "an object of terror",
which seems apt enough (:-) (:-).
I personally never think of insects when mentioning bugs in programs.
OED bug, n.² sense 1b "A defect or fault in a machine, plan, or the
is as far as it goes for me. Influenced by Dijkstra, I spent _years_
trying to say "mistake" or "error" or "defect" or "fault" instead of
bug, and I honestly don't think it ever made any difference to my
thinking or programming behaviour.