Dijkstra has something nice to say about metaphor and programming errors:
This argument made me think of another topic. When does a metaphor stop
being a metaphor?
Let me take another example. The word "battery" (as in an electric
battery) was originally a metaphor. Early chemists were using Leyden
jars to generate electricity for electrolysis, which required the
synchronized discharging of an array of batteries. This was analogous
to the synchronized discharging of arrays of cannons, which were called
batteries (from the French "battre" -- to beat), and this is where the
electric battery got its name from. Today's electric batteries no longer
discharge in the same manners as artillery batteries, and there is no
trace left of the metaphor apart from the name.
Returning to Dijkstra's bug example, is "bug" still an animistic
metaphor, or is it simply a synonym for a defect (or fault)?