... doing exactly as they were programmed to do, and only if such code is part of the program. Chess programs do not need to be written such that they learn anything. The entire thing can be just a board position search with a fixed evaluation algorithm.
I'm sorry, but I know this to be false. Or at least, to the extent it's true, it's true because the wheel doesn't need to be reinvented - what programs have learnt can be reapplied. Human players also "do exactly as they were programmed to do," by the laws of nature. Our intellect isn't special, in any way that a computer can't be. It really isn't.
You don't understand computer learning. Computers could be taught to figure out how to play chess using neural network techniques. Sure. But the training time would be measured in years. Before that they would just suck. When IBM made Deep Blue, they didn't do that. They made special CPUs designed to evaluate a chess board position, rank it, and file it away for later comparison against other chess board positions. The only heuristics they employed was in tuning the board evaluation algorithms toward Kasparov's play style. And heuristics aren't "learning" they are statistics gathering and processing.
Humans do not play chess like computers are programmed to. Humans set intermediate goals and play to achieve them. Computers don't plan. Writing a chess engine that could plan would take a long time. Writing any program that could plan would take a long time.
Seriously, a half-way decent programmer can probably knock out the core of a Chess playing program and hand tune it to play well against "average to good" Chess players in about two to three weeks. Most of that time will be spent on pruning the decision tree and memory leaks and little of the time would involve "playing" Chess. Chess is not complex. It just has a large number of possible board positions. If I were board, I'd attempt this "challenge".
Go right ahead. I expect you'll find on your hands a novice, on the level of someone who's just read a book on chess sitting down to his first game; I'm quite confident anyone who's actually worked on a chessbot would tell you the same.
There are hundreds of public chessbot programs. They have extensive code for tree maintenance, tree pruning, and board manipulation and pruning. That is exactly as I would expect.
Here are some links. Plan my next few moves is not an algorithm found in these links. They all have trees of board positions that they sift through to some depth limited by time and/or space:
http://www.tckerrigan.com/Chess/TSCP 2000 lines of code
http://en.wikipedia.org/wiki/Fruit_%28software%29 read the technical details. It only talks about tree traversal
http://verhelst.home.xs4all.nl/chess/programming.html Notice that the three "programming techniques" listed, one is how to evaluate a board, one is how store a tree, and the third is example source code: notice that none of them involve "learning", "planning", or "thinking".
Chess programs are very dumb. They do one thing, tree searches for a good chess move, and that's it. Really, I know what I talking about. I left out only a few details (opening "book" libraries and end-game libraries) to make it easier to discuss.
While you're at it, try your hand at writing a go simulator. After all, simple as chess is, go is far simpler - should be easy!
Go is simpler only in terms of rules. In terms of its decision tree it is one of the most complex games man has ever created and makes Chess look like tic tac toe in comparison.