Not only that, the fact is that there was an earlier version of Rybka, not based on Fruit, that achieved a rating more than 500 elo below Fruit-based Rybka.bob wrote:Would you PLEASE grow up. There is no "believe" or "not believe" here. There is simple "looking and analyzing". There is glaurung1 code in glaurung2 and stockfish. I don't care whether you believe that or not. But it is a demonstrable fact. You just have to look. Perhaps Tord uses a sloppy definition of rewrite from scratch, if he actually said that. "rewrite" is vague and subjective or else can be taken literally. If I rebuild an engine for our drag racer, that means many old parts were kept and some new ones possibly added. If I build from scratch, there will be zero old parts in the new motor.michiguel wrote:If Fabien said it was written from scratch, I have no reason to doubt it.bob wrote:michiguel wrote:I gave two examples, but of course, i should trust you rather than their own authors.bob wrote:2 things. Glaurung 1 -> glaurung 2 would be perfectly believable as a rewrite. However comparing 1 to 2 does not suggest g1 was thrown out. It shows g2 was simply g1 refactored and cleaned up and reorganized as much as anything. For example, glaurung22 has a procedure "think" in search.cpp, where it is a separate file think.cpp in glaurung11. That's not what I would call a "complete rewrite". I don't believe anybody does that.michiguel wrote:Please read what I wrote. Glaurung 2.0 is a total rewrite from the previous version of Glaurung.bob wrote:Did you compare first stockfish source to Glaurung? I am not just talking bare search and evaluation when talking about total rewrite. I am talking about EVERYTHING. I'm not going to debate Komodo with no source code to speak of. But we can certainly compare early stockfish to later Glaurungs. I still have 2.2 in my old backups for cluster testing...michiguel wrote:Komodo was rewritten from total scratch (when it was already a top 2).bob wrote:Define "your engine". Only a complete dunderhead would rewrite everything in the engine from scratch. That would imply you did NOTHING right in any of the previous versions...Rebel wrote:Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.mvk wrote:VR is not Hyatt. How often do you make that mistake.bob wrote:One more note. This "you guys searched the wrong version" is a red-herring. Every new version of my chess program, dating ALL the way back to 1968, including major versions, minor versions, or rewrites, had MAJOR parts of the earlier version included. You do not rewrite 30-40-50K lines of code for each version..
My major versions (five times: v0, v1, v2, v3 and mscp) were always 100% rewrites from scratch, no code reuse between them. I'm not the only one.
unlikely in the extreme...
Glaurung 2.0 was a total rewrite (which lead to Stockfish).
So, the top two engines today, were rewritten from scratch at one point.
And those are not the only two examples.
Miguel
You might be surprised what you find when you look. Certainly stockfish 1.8 was nowhere near a complete rewrite. First file I looked at (move.cpp) is almost a perfect match between the two for the first few dozen lines of code, all I felt like looking at...
Don rewrote Komodo. That was Don told said, and I have no reason to doubt him.
Miguel
Second, "rewrite" and "write from scratch" are not the same thing. Don posted that he spent a lot of time rewriting Komodo. He did NOT say that he threw everything out and started over. I did 6 completely different versions of Cray Blitz. Starting selective and ending up with something similar to what is done today. And some of those were hugely different. Version 4 was 120K lines of fortran. Version 5, a chess 4.x-like redesign was about 10K lines. But it carried over a lot of code from version 4, including most of the evaluation, just a different search approach. Starting over is a genuine waste of time, and very few do it more than once. Nobody does it a bunch of times unless they just know absolutely nothing about programming and also do not learn from each mistake.
In any case, there are certainly chunks of code from glaurung1 still there in stockfish. No surprise, there are still chunks of code from Crafty version 1 that can be found in version 25.0...
Mark Watkins found eval pieces that matched between R1.0beta and R2.3.2a... Which is not surprising. So please stop with this "not everybody does it that way." So far you haven't given one example of a _complete_ rewrite where nothing is carried from version to version N+1. It just doesn't make good sense to do such, considering all the time that would be lost.
Note: I'll bet that a bit of poking could find some glaurung1 code that is still in stockfish today...
http://www.talkchess.com/forum/viewtopic.php?t=13597
Miguel
PS: An another example would be Senpai.
You don't have to trust me at all. Just open your eyes and look, in the case of g1/g2/stockfish. How hard is that? I did it. I found no complete rewrite was done. You can do the same.
As far as Senpai is concerned, have you looked? Or just assumed?
http://www.chessprogramming.net/senpai/#
Yes, I looked a while ago and Glaurung 1 looked totally different from Glaurung 2. So, no reason to doubt Tord.
The pattern here is that a bunch of authors claim they have rewritten their engines, and you do not believe them.
Miguel
My point here is that we KNOW there is rybka 1.0 beta code in Rybka 2.3.2a. It is not a matter of believing. It is a matter of looking. It is time to stop this "believing" stuff since "rewrite" is vague. "rewrite from scratch" is very precise however. In this case, it does not matter one scintilla since we know 1.0b code is in 2.3.2a by code inspection. Sure some was modified. That was not the point. Some was kept. It almost ALWAYS is...
How many programmers are able to develop their engines by leaps and bounds, making whopping 500-elo improvements in just couple of months?
Looking around me on this forum, I see everyone is developing by tiny steps forward, I did not record a single elo increase bigger than 200 elo from version to version, and that takes quite a few months, even for weaker engines.
So in the case of Mr. Railich, we have also this collateral evidence.
Mr. Railich used his IM chess knowledge to develop the strongest engine, but based on programming ideas of other.
Now, I do not claim that the appearance of Rybka was bad, on the contrary, this was a step forward for computer chess, and I would prefer to have a stronger cloned engine to analyse my games with, rather than a non-cloned fully original one. And the main purpose of an engine is of course to serve the chess community at large, 90% of which are chess players wanting the provision of better analysis.
So Rybka was a contribution for its time.
The point is however, that many people here claim Vas was a demigod, incomparable genius, fatherly and friendly, when the truth is he:
1. acted unethically by not divulging the entire truth about Rybka
2. earned a lot with the so-called Rybka cluster, much more than the supposed added value of the cluster would warrant for; and this is usually referred to as greed
3. acted unethically also towards some co-workers and partners, using their knowledge and then dismissing them
4. claimed so many official titles, without saying even once: Well, part of this is due to Fabien, for example, which would have been the morally right approach
So basically he was a manager, and his heart was not so much in computer chess, but more in the fame and purse.
Looking around me, neither Houdini, nor Komodo quite repeated that, although both engines might have had good chances at succeeding with a similar policy.
So again, Rybka was a contribution for its time, but its author acted unethically on more than one occasion.