2010/1/22 Alan Blackwell <af...@cam.ac.uk>:
> I think Dijkstra said a number of things suggesting he didn't have
> particularly profound insights into either human cognition, or human use of
> language. He was a brilliant computer scientist, and in my experience,
> brilliant computer scientists quite often think about things differently to
> how most people do. When he says things about computation, algorithms, or
> formal proof, we should listen carefully to what he says. When he says
> things about metaphor, we should be a little more careful.
Yes, well put.
> So in answer to your original question, this paper was really a piece of
> pure research, intending to draw people's attention to things they hadn't
> thought about very much, in case this better illuminate the difference
> between the way that computer scientists think, and the way other people
> think. I made some suggestions about ways in which it might be followed by
> more applied research but I no longer believe that 'designing-in' a metaphor
> is likely to be a successful design approach. There's a 2006 paper in
> Transactions on CHI that explains that position in a lot more detail.
Thank you for this background, which clears up some things for me. I
suppose in general natural language reflects and enforces cultural
metaphors. It would seem to follow that by designing `artificial'
programming language we have the power to create and modify metaphors
used by whose who use it. But from your paper, the reality seems to
be that in practice metaphors aren't easily created, and once one pops
up, they're very difficult to manipulate.
I've been learning a fascinating language called Haskell, which
embodies some cutting edge computer science research. As a result it
has some language features that are powerful but difficult to learn,
most famously monads. There is a joke that every beginner Haskell
programmer writes a monad tutorial as a right of passage:
There are some crazy metaphors in that list, including "Functions are
space stations, parameters are astronauts and monads are space suits
that let us safely travel from one function to another", which I don't
find particularly helpful.
This blog entry neatly berates those assuming a metaphor which helps
them think about monads, after going through a difficult process of
learning, is going to help someone else learning them:
This is all further living evidence of the difficulty of designing
metaphors for understanding, I think. But despite doing a bit of
monadic programming, I still have huge problems thinking about them --
I do feel like I'm missing a metaphorical grounding. Perhaps a good
metaphor will pop up soon and people like me will have an easier time
reasoning about them.