You can count cheng4 as well.
It was a complete (full/total) rewrite, I only kept some of the magic bitboard code, repetition list, bitboard support code
and PRNG (which I don't like anyway and will replace it with something more robust and simpler).
So ~90% was completely rewritten (from scratch) and the rest was kept but refactored.
The motivation was the old code base being buggy and hard to maintain (very ugly).
90% is not what we are talking about. We are talking 100%. And as I said, NOBODY does that, it wastes too much time. If you start with version A, and then rewrite 90% of that to produce version B, you still have 10% of the original. If you rewrite B to produce C, you will still have at least 1% of A (assuming 90%+90% is original). But more likely you will have more because there was a reason you didn't rewrite that 10% the first time around.
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
Well, at least out of your making this fatuous remark my lack of awareness in the re-write Glaurung into that of Glaurung 2-epsilon became known to me. That was a good thing.
But what is sad is this need of yours to be right all the time.
You create a position of fact-based solely upon your own standards!
Not everyone shares your standards.
But, it doesn't stop there. It get nasty!
You have a disdain for those who don't live up to your standards. It comes with insults.
Of course, it is a knee jerk reaction. No doubt.
I don't think its personally direct most of the time. You have no idea who it is you are about to offend. Until after the fact.
But that's the problem with your kind of presumptuousness- it lends itself to a position of pomposity, and didacticism where there is no room for any kind of meaningful dialogue.
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
As usual you project your own line of thinking as the absolute truth on the rest of the world.
Eh? We KNOW rybka 2 was not a complete rewrite. It was examined. So what, exactly, is your point? glaurung2 is not a complete rewrite of glaurung1. I actually looked at the code.
That is not called "projection" it is called "verification/validation."
I wasn't talking about Rybka, just highlighting your condemning and patronizing remarks, the red above.
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
As usual you project your own line of thinking as the absolute truth on the rest of the world.
Eh? We KNOW rybka 2 was not a complete rewrite. It was examined. So what, exactly, is your point? glaurung2 is not a complete rewrite of glaurung1. I actually looked at the code.
That is not called "projection" it is called "verification/validation."
I wasn't talking about Rybka, just highlighting your condemning and patronizing remarks, the red above.
Again, eh? I have seen ZERO cases of a complete rewrite. Throw out the old code and start from scratch with nothing. That is a dumb way of developing software and that is not a "condescending remark" it is a simple statement of fact. If someone DID rewrite something N times from scratch, they are really very poor programmers. Once, perhaps, to change language, data structures, board representation and everything else. But more than once? What a waste...
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
Well, at least out of your making this fatuous remark my lack of awareness in the re-write Glaurung into that of Glaurung 2-epsilon became known to me. That was a good thing.
But what is sad is this need of yours to be right all the time.
You create a position of fact-based solely upon your own standards!
Not everyone shares your standards.
But, it doesn't stop there. It get nasty!
You have a disdain for those who don't live up to your standards. It comes with insults.
Of course, it is a knee jerk reaction. No doubt.
I don't think its personally direct most of the time. You have no idea who it is you are about to offend. Until after the fact.
But that's the problem with your kind of presumptuousness- it lends itself to a position of pomposity, and didacticism where there is no room for any kind of meaningful dialogue.
It was a simple statement of fact. Nobody rewrites something from scratch N times. That would be a huge waste of time. Nothing more, nothing less. The examples given so far show that it has not happened yet. Rewriting once I could see for a major change in language and data structures. Not more than once unless the next one is done 20 years later after new languages or features are availble.
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
Komodo was rewritten from total scratch (when it was already a top 2).
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
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...
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...
Please read what I wrote. Glaurung 2.0 is a total rewrite from the previous version of Glaurung.
Don rewrote Komodo. That was Don told said, and I have no reason to doubt him.
Miguel
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.
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...
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?
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
Komodo was rewritten from total scratch (when it was already a top 2).
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
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...
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...
Please read what I wrote. Glaurung 2.0 is a total rewrite from the previous version of Glaurung.
Don rewrote Komodo. That was Don told said, and I have no reason to doubt him.
Miguel
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.
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...
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?
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..
VR is not Hyatt. How often do you make that mistake.
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.
Reminds me of a Tord quote, something like, you can never rewrite your engine from scratch too many times.
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...
unlikely in the extreme...
Komodo was rewritten from total scratch (when it was already a top 2).
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
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...
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...
Please read what I wrote. Glaurung 2.0 is a total rewrite from the previous version of Glaurung.
Don rewrote Komodo. That was Don told said, and I have no reason to doubt him.
Miguel
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.
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...
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?
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
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.
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...
BTW, this is a typical response from you these days. Drift away from the actual topic and try to make this discussion about ME. I suspect most "get this" by now... What's the point for this shift the subject from (again) fruit-rybka to some other program, then when I point out that I actually LOOKED at those sources and found re-used code, I am a "bad guy".