H.G.Muller wrote:Well, a lot of programs are the best program for their size. In fact, probably every program is, as no two sizes are exactly the same. (Clones exempted. )
So no doubt you are right. But without a theoretical framework for size dependence, that would allow us to compare programs of different sizes, this does not mean a thing.
I don't think that the fact that some large programs are weak means there is no relation between size and strength. There are also programs that are weak even in the face of being allowed to think very long, and yet there is a very general relation between thinking time and strength for the same engine. To discover a relation between size and strength, one should also first look to different versions of the same engine, during their development.
A strong program is not necessarily best.
Sometimes I want to play against a weaker program, and sometimes I want to hurl myself against the rotating knives that calls itself "Rybka".
I think that there is a certain elegance and beauty in writing compact chess programs. There is also an arcane 'wizard' element when it gets compacted enough (I do, for instance, admire your program).
As far as strength goes, I think that writing clear, bug-free code is important. The most important thing of all is to use efficient O(f(n)) algorithms.
Since Thinker is not open source, we cannot say exactly what it looks like inside. But Lance has shown us fragments of his code. I considered the fragments I saw to be very beautiful. When I see code like that, I know that the program is going to do well.
I think that there is room for every sort of chess program. I don't particularly enjoy FRC, but I understand that many people get great enjoyment out of it. Some of my favorite programs are probably at the bottom of other people's lists. I just love Golem. Something about the way it plays is very human (If you put it behind a closed door I don't think I could tell you if I was playing Golem or my sister Julie). It's not a terribly strong program but I enjoy playing against it. There are other weaker programs that I don't really like playing. I will have to give the winner of the "Mr. Irrelevant" tournament a shot to see if it is suitable for young children to play against.
I guess that {in the near term, at least} we could learn more from looking at Thinker's code than Rybka's. The reason I say that is because it is so compact and yet (from what I have seen) clearly written that we would grasp the concepts instantly. When you get a giant N-Reactor machine like Crafty {or any other program with over a megabyte of code} it takes a long time to absorb things because of the detail.
Another author with really beautiful code was Bas Hamstra. I am sorry that he stopped development on his engine, because I think it was definitely headed in the right direction.
I admire the coding style of Fabien too, because of his masterful use of asserts.
Quite frankly, I think I have enjoyed going over every open source program that I have ever examined, except one {which shall forever remain nameless}.