The Meaning of Code Peter J. Bentley The computer program has come a long way. Once the domain of obscure mathematicians, the code that drives computers is now as familiar to us as the cars we drive ourselves around in. It seems that everyone knows about the World Wide Web, whether they’ve surfed in its turbulent waves or not. Everyone knows about email, whether they’re spammed to death every morning, or have not even had a single offer of millions from a dead Nigerian president’s cousin. Everyone knows about windows-based oper- ating systems, and can tell at least three horror stories of computer crashes that resulted in traumas to the poor victims. Everyone knows that the worst bugs are not the kind that are susceptible to insect sprays. Software runs our world. It keeps our money safe, makes our car engines run, allows us to talk to each other on the telephone, and helps enter- tain us through television broadcasting and films. Software is changing lives, and we even have movies about how software is changing lives. The words “you’ve got mail” will never mean the same thing again. Computers are everywhere, and so is the language of comput- ers: code. Somehow everything seems possible in code. There are no ambiguities, no hidden mean- ings. Problems are delicately pulled apart by master dissectors, and solutions are formed that magically instruct the computer to perform the necessary tasks. A good program- mer is a virtuoso performer; his masterpieces are works of art as beautiful to compre- hend as any concerto or poetry. But all his work is hidden within the mind of a computer; his audience is forever unaware of his skills. A bad programmer (and there are far more of these) is simply a “jack of all trades” with no more creativity or skill than someone “painting by numbers.” The results are dire and never last long. When you’ve been programming for long enough, when you’ve grown up programming computers, you think in a subtly different way. It’s not a case of seeing ones and zeros in front of your eyes, as one memorable scene in “The Matrix” showed. It’s a little more subtle than that. You become used to breaking down problems into smaller, easier parts. It becomes natural to think in this way, whether working out how to build a robot, or how to climb down from a tree. Good programmers are natural problem-solvers, for this is how we write code. But code can also dehumanise a person. There is no subtlety, no humour, no scope for emotion in code. While a programmer needs to be creative and artistic, he also needs to be very literal. If something is not working, it’s not because the computer is annoyed, or has misinterpreted its instructions, or is bored. It is because the programmer is annoyed, or has misinterpreted his own code, or is bored. Code is so literal, so unambiguous, that it takes a while to train a mind to think in the same way. These limitations of code can produce side-effects in people that write it—a joke is lost, a philosophical point missed, an ambiguity the cause of excessive confusion. I used to be like this (and still am, sometimes), but learned to appreciate art, to love the ambigu- ities of language. In general, the effects of raw, undiluted code on people is not always a helpful thing. Try saying something deliberately ambiguous to a programmer and just watch how long it takes them to work out the meaning. Say the same thing to an artist and they won’t even blink before responding. Most of us are not up to our eyeballs in code every day, however. Instead, an increas- 33 The Meaning of Code