
The open-source chess program
Stockfish recently
climbed to the top of the
TCEC rating lists.
Even though it does not seem likely to win the actual TCEC tournament
(it is 15.5 11.5 down in the 48-game superfinal against Komodo,
a closed-source commercial program, after winning 4, losing 8 and
drawing 15), this is a tremendeous achievement.
This is not only because it is highly unusual that the strongest chess
program is open-source (it's naturally hard to keep a competitive edge
when everybody can see your secrets!), but also because it is a mere 9000
lines of C++ code. (This is without a GUI; it interfaces through a standardized
protocol known as UCI.) In comparison, Crafty, a
far weaker open-source
program, is about four times that, GNU Chess is above 40000, and I seem to
recall that the Deep Blue program was something like 65000 lines (in addition
to, of course, all the code for the ASIC chess chips it contained, and
stood for the majority of its chess strength!). So, the development team is
really to be commended.
It should also be said that TCEC is testing the latest beta versions of most
of these engines and while Stockfish is developed in the open, on
GitHub, the latest versions of e.g. Komodo and Houdini are private.
(This is probably one of the reasons why Stockfish is slightly lower on
e.g. the
CCRL list,
which also computes chess program rating lists by playing games between them.)
Now, why does anyone care? Only a very small handful of players would be
able to score even a draw against any of these programs in a 10-game match,
so does it really matter which one we choose? Or is this some obscure pissing
contest?
The answer, of course, is that these engines are not primarily useful for
competitive play; they are useful for
analysis. Almost any player,
right down from beginners to the very top players, can benefit from having
someone stronger than them look at their games (or others' games!) and say
where things went wrong. (Somehow analyzing losses always seem more
instructive than analyzing wins. Nobody ever got better by winning, as the
saying goes.) And the better a program is at playing chess, the more likely
is its analysis to be correct.
Of course, for the weaker players, a chess
coach is likely to produce much more
understandable guidance ( this creates
a weak square on c7 is much more palatable than after these 18 moves here,
white is 0.48 pawns stronger than you, so this was a bad move , and engines
produce the latter sort of output), but they are always available, incredibly
strong, and cost much less than a coach. :-) They also add a lot to the
otherwise quite hard-to-comprehend activity of watching high-level human
players; while the computers do not understand every kind of position
equally well, they at least provide some sort of objective verdict on which
player has the upper hand, something which can be really hard to discern
unless you have very strong players around for commentary.
So, in trying to improve my skills a bit, I've been analyzing my games with
engines for a while, and recently I've switched from Rybka to Stockfish.
(Rybka, a closed-source program, used to be the clear leader of the pack,
but after a huge amount of drama involving accusations of who has copied
code from who, it seems no longer to be actively developed, and Stockfish
is now somewhat stronger.)
This, unfortunately, brings me to the things I
don't like too much about
Stockfish; it seems to behave more erratically than Rybka did in interactive
analysis mode. Its score jumps a lot more around when I move something (worse
at remember the analysis from the previous position?), and sometimes, it
changes its mind a lot when I move back and forth between moves maybe
the huge selectivity that makes chess engines so strong these days also make
them behave less usefully when only looking at a move for a few seconds.
So, even though Stockfish is a fantastic chess engine, and will only get
better in the future, maybe I'll go back to Rybka at some point. But then
again, maybe I should then check out Komodo or any of the other engines
out there or maybe talk to someone who actually
knows chess,
that would help a lot, too =)