chrisw wrote:I read many times now that Rybka is a bitboard program and Fruit not, presumably Fruit uses 0x88
For non-chess-programmers this means that the internal representation of the chess board and pieces in program memory (the data structure) could not be more different.
To sustain the postion that Rybka is a derivative of Fruit the accusers are going to have to find unexplainable code similarities between the two engines. We're talking of chess engines, so we're not interested in the UCI part of the program, solely the engine part, where the AI exists.
Now, a chess engine can conceptually be divided up into various parts.
Generate moves
Move and unmove
Evaluate a position
Search
Genmove, move and unmove all have to obey the rules of chess, and they all operate on and are dependent on the data structure of the program. Since Fruit and Rybka have wildly different data structures, the accusers are not going to find any code similarities in any of those component parts. So they won't even bother looking there.
Evaluate has much scope for programmer creativity, but again, the routine spends much of its time interrogating the data structure, and again, Fruit and Rybka with wildly different data structures are unlikely to be providing evidence of similarity in Evaluate either.
If Rybka came from Fruit, and uses bitboards when Fruit doesn't, then a developer from one to the other would need to completely rewrite move, unmove, genmove and evaluate. Actually these parts comprise the bulk of any chess program.
That leaves Search. Search is broadly independent of data structure and it could be one place where similarities could be found, if there are any. It's therefore no surprise that Zach's disassembly chunk is of part of Search. The question is begged - why, assuming its the case, since the main bulk of Fruit would have to be rewritten anyway, why not rewrite Search also? It's relatively not a difficult task in comparison. We also know Rybka is pretty damn strong - that won't have been done by a quick copy of somebody else's Search routine, but by some serious and special development.
Now the problem of using Search to prove similarities is that Search across a wide range of engines uses known similar techniques. It does things in a certain order that's been established as most efficient. Move ordering for example is a case where most programmers do the same thing (discussed elsewhere). If similarities are found they are likely to be down to use of ideas rather than code copying.
Personally, I think the accusers are flogging a dead horse. They have no case.
Right...
http://www.talkchess.com/forum/viewtopic.php?t=23275
And be sure to follow Zack and Christophe when they compare Rybka to Fruit!
Something is Wrong on Saturn 3...

