It is very easy to misunderstand software and it’s capabilities. Although people and software often perform the same tasks, they often do so in very different ways and achieve very different results. The results software can achieve are sometimes surprising, even amazing. But what computers can do is still quite limited. Making software development decisions based on an incomplete understanding on how software works, or drawing unwarranted equivalence between humans and computers, can lead to comical or even disastrous consequences.
It is with this in mind that I wanted to revisit one of my favorite topics: chess engines — the computer programs that play a game of chess. Chess and computers were back in the news with a mainstream article by the mother of Kris Littlejohn entitled The Role of Computers in Planning Chess Strategy. Her son, Kris, helps current US Chess Champion Hikaru Nakamura prepare his openings for torunaments and matches and he makes use of various software (chess databases and engines) for this purpose. It’s a well written article and well worth a read.
I’ve been an avid chess player for many decades and have also written a number of chess playing programs over the years. So it really tickles me how when then world champion Gary Kasparov lost to Deep Blue in a match back in 1997, many folks predicted that chess as a human past time would die. over a decade later, the situation is even worse for the humans: the best GM’s can not hope to defeat the best programs, even at material odds. Yet the game is more popular than before. Part of the reason is online play thanks to the Internet. Another reason is that these strong chess engines make for primitive coaches. So the future of chess is safe for now.
But there is a bit of a misunderstanding on how chess engines beat strong human players. Early on, chess computers were considered curiosities, able to play a legal game, but not able to beat any but the most basic of beginners. That’s because computers were slow, and the problem solving method they used — tree search, a sort of “I move, you move, I move, you move,…” tree for all possible moves — was inefficient. Also, the computers weren’t very smart at figuring out whether a particular position they had reached was good for them or not.
Over time computers got faster, the programs first got better at searching less of the tree, then more of the really important parts, and they got smarter and figuring out whether a particular position was good. Eventually they started looking further ahead than most people do and got so that they played a pretty reasonable game of chess.
But when we say that a computer can beat the world champion, that’s not quite the same thing as saying the computer is better. By way of illustration, let’s imagine we are playing a game with your word processor. We take turns Stringing sentences together. First I write a sentence, then the computer writes a sentence. The sentences make sense, they talk about the same thing, they argue, explain and so on. Our sentences are better, more elegant, than those of the computer, since we have a more sophisticated understanding of language.
Let’s suppose that we have one more rule. If either player makes a spelling mistake or a grammatical error, they lose. First of all, the computer will never do that. When’s the last time your word processor misspelled a word? We, however, misspell words a great deal of the time. Also, we find our selves constructing sentences that end in a propositions. Crap! We lose!
That’s how computers win a great deal of the time: they capitalize on a few human oversights and wins. Since I play against some of the best engines on my own computers from time to time for training purposes, I can verify that this is true. When I play Rybka 3, the currently strongest chess engine on the market, at reasonably slow time controls, I need to take back about 5 errors on average to win against it. I’m not cheating, I just get to correct some of my mistakes.
If you had made the mistake of thinking you could win against any human, any time using a chess engine, you might have entered a correspondence chess tournament (these days played on a web server instead of by mail or email), where people can take days or weeks to ponder over their moves, and placed a large wager on you computer doing well. And you’d be out a lot of money. The best human correspondence players don’t make that many mistakes to begin with and also use chess engines to check the “spelling” on their moves. They would eat your poor computer alive.
So, lessons from this post? When evaluating the capabilities of software versus people, see how each arrives at their performance. You may be avoiding a big mistake.

