Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by sje »

bob wrote:
sje wrote:
bob wrote:Obviously not. Structure is one thing. The rather simple names and constants are a dead giveaway. For example, who dimensions arrays using hex subscripts? Who does this:

Code: Select all

UINT32 otsMAT[16] = {
  0, (&#40;0 & 0xff&#41; | &#40;0x1440 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x240 << 8&#41;), 0, (&#40;1 & 0xff&#41; | &#40;0x24 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x48 << 8&#41;), (&#40;3 & 0xff&#41; | &#40;0x04 << 8&#41;), (&#40;6 & 0xff&#41; | &#40;0x1 << 8&#41;),
  0, (&#40;0 & 0xff&#41; | &#40;0xb640 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x6c0 << 8&#41;), 0, (&#40;1 & 0xff&#41; | &#40;0x90 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x120 << 8&#41;), (&#40;3 & 0xff&#41; | &#40;0xc << 8&#41;), (&#40;6 & 0xff&#41; | &#40;0x2 << 8&#41;)
&#125;;
That is one big constant. why 0x1440<<8 and not 0x144000??
That looks like someone ran some C/C++ source through the preprocessor and then placed the output into a new source file. There is no reason to do this other than to obfuscate the code. But why?
It also looks like one compiled the preprocessor output, took the resulting assembly code, and decompiled it to produce C again. Most likely many of those "constants" were #defined in the source, but replaced by the resulting values during the preprocessing stage.

Nobody writes source like that, as I said.
I don't think that the code went through a compilation stage as otherwise all those constants would have been folded before any decompilation. Even with the -O0 gcc/g++ option in play, I'd guess.

Of course, you're right in that no one codes like this. Again, why the obscuration? I just can't think of a legitimate reason.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by bob »

kranium wrote:
kranium wrote: BTW-
where did the 'sort' routines in Crafty come from?
did you invent them? just curious...
bob wrote: No, I didn't invent the bubble sort. No, I didn't invent bitboards.
Some time ago, (and over and over...ad nauseum):
bob wrote: Again, find _any_ CODE copied into crafty. Alpha/beta is not simple. The idea is there. Code is 100% original.
Jeez...
:shock:

"Born a saint, die a sinner – born a sinner, die a saint."
?
Again, what is your point? I didn't "copy a bubblesort". I didn't copy any code other than that I have previously mentioned (magic bitboards, permission from Pradu, Steven Edward's EPD code which he ported into Crafty and sent to me.

What is wrong with you?
kranium
Posts: 2129
Joined: Thu May 29, 2008 10:43 am

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by kranium »

bob wrote: Time to grow up a bit. It is not about "not understanding the code." It is about understanding that it was _not_ written by a human, in that form. You might have trouble understanding C or asm. I don't... Never have, in fact...
bob wrote: And what a crock that web site is. :)
Tanks Bob for the professional 'academic' refutation...
I'm sure the ICGA appreciates such insight.

Also-
I realize that when posting without any real substance, for most there's a real temptation (often necessity) to fall back on 'mudslinging', (however unethical it may seem...and I know you're big on ethics)
...but I am disappointed to see you resort to such tactics.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by sje »

Why is it so difficult for some to acknowledge work by others in their code?

In the new CIL Toolkit, here's an example:

Code: Select all

;;; ---------- The simpleton positional evaluator; inspired by the report on Chess 4.x by Slate and Atkin

&#40;defun simpleton-evaluate &#40;my-scs&#41;
  "Return a evaluation score for the current position."
And the toolkit is written in Common Lisp, something that's as far as you can get from Compass (CDC 6000 series assembly language) used for Chess 4.x.
kranium
Posts: 2129
Joined: Thu May 29, 2008 10:43 am

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by kranium »

bob wrote:
kranium wrote:
kranium wrote: BTW-
where did the 'sort' routines in Crafty come from?
did you invent them? just curious...
bob wrote: No, I didn't invent the bubble sort. No, I didn't invent bitboards.
Some time ago, (and over and over...ad nauseum):
bob wrote: Again, find _any_ CODE copied into crafty. Alpha/beta is not simple. The idea is there. Code is 100% original.
Jeez...
:shock:

"Born a saint, die a sinner – born a sinner, die a saint."
?
Again, what is your point? I didn't "copy a bubblesort". I didn't copy any code other than that I have previously mentioned (magic bitboards, permission from Pradu, Steven Edward's EPD code which he ported into Crafty and sent to me.

What is wrong with you?
You admit you did copy code, but at the same time maintain over and over (ad nauseum for years) that Crafty is 100% original?

PS-
There's nothing wrong with me...other than the fact that I disagree with you, and you don't like it...
(and that's apparently a big issue for you, and you can't refrain from insults)

After all this is your home 'turf'..
and any dubious, unsubstantiated, or uniformed statement from you is almost never questioned.

please see plot summary - "The Wizard of Oz".
Milos
Posts: 4190
Joined: Wed Nov 25, 2009 1:47 am

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by Milos »

Dann Corbit wrote:It was a strange mix of Russian and Italian, as I recall.
No it wasn't and your memory doesn't serve you well there. Robbolito was a mixture of Italian and Albanian, but the original Ippolit was always in pure Russian.
It has nothing to do with the variable names (which, for the most part, are fairly obvious anyway) and everything to do with the format of the constructs.
Well, Bob mentioned specifically "unusual variable names" which I directly quoted. One of the assumed qualities of someone coming from academia with a scientific background should be precise and concise expression which for Bob is obviously not the case.
If you do not think that reverse engineering was somehow involved in early IPPO* programs, then I do not know what anyone can possibly say to you. Did you even look at the code?
First I never said that Ippo has nothing to do with any reverse engineering. Second there is a long way from "some form of reverse engineering" and "direct decompilation of some strong program most probably Rybka" (to paraphrase Bob's words).
What Bob here claims is that Ippo is a product of direct decompilation without much understanding of the underlying (decompiled) code. Having Ippo being 50 elo stronger than Rybka 3, makes this claim totally nonsensical.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by bob »

sje wrote:
bob wrote:
sje wrote:
bob wrote:Obviously not. Structure is one thing. The rather simple names and constants are a dead giveaway. For example, who dimensions arrays using hex subscripts? Who does this:

Code: Select all

UINT32 otsMAT&#91;16&#93; = &#123;
  0, (&#40;0 & 0xff&#41; | &#40;0x1440 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x240 << 8&#41;), 0, (&#40;1 & 0xff&#41; | &#40;0x24 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x48 << 8&#41;), (&#40;3 & 0xff&#41; | &#40;0x04 << 8&#41;), (&#40;6 & 0xff&#41; | &#40;0x1 << 8&#41;),
  0, (&#40;0 & 0xff&#41; | &#40;0xb640 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x6c0 << 8&#41;), 0, (&#40;1 & 0xff&#41; | &#40;0x90 << 8&#41;), (&#40;1 & 0xff&#41; | &#40;0x120 << 8&#41;), (&#40;3 & 0xff&#41; | &#40;0xc << 8&#41;), (&#40;6 & 0xff&#41; | &#40;0x2 << 8&#41;)
&#125;;
That is one big constant. why 0x1440<<8 and not 0x144000??
That looks like someone ran some C/C++ source through the preprocessor and then placed the output into a new source file. There is no reason to do this other than to obfuscate the code. But why?
It also looks like one compiled the preprocessor output, took the resulting assembly code, and decompiled it to produce C again. Most likely many of those "constants" were #defined in the source, but replaced by the resulting values during the preprocessing stage.

Nobody writes source like that, as I said.
I don't think that the code went through a compilation stage as otherwise all those constants would have been folded before any decompilation. Even with the -O0 gcc/g++ option in play, I'd guess.

Of course, you're right in that no one codes like this. Again, why the obscuration? I just can't think of a legitimate reason.
I actually tried it. With no -O at all, you get some UGLY code. As far as a reason, the only thing I can think of is decompiling.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by bob »

Milos wrote:
Dann Corbit wrote:It was a strange mix of Russian and Italian, as I recall.
No it wasn't and your memory doesn't serve you well there. Robbolito was a mixture of Italian and Albanian, but the original Ippolit was always in pure Russian.
It has nothing to do with the variable names (which, for the most part, are fairly obvious anyway) and everything to do with the format of the constructs.
Well, Bob mentioned specifically "unusual variable names" which I directly quoted. One of the assumed qualities of someone coming from academia with a scientific background should be precise and concise expression which for Bob is obviously not the case.
Since you keep jumping in, you can't use ignorance as an excuse for making these kinds of mistakes. You do know the difference between "variable names" and "language". In any language, the variable name "pawn_score_1" would be considered odd because it is a long name with no implied semantic as to what it represents. This has been discussed at length. Vas commented on this very issue a couple of years back. There are lots of examples in the code.
If you do not think that reverse engineering was somehow involved in early IPPO* programs, then I do not know what anyone can possibly say to you. Did you even look at the code?
First I never said that Ippo has nothing to do with any reverse engineering. Second there is a long way from "some form of reverse engineering" and "direct decompilation of some strong program most probably Rybka" (to paraphrase Bob's words).
What Bob here claims is that Ippo is a product of direct decompilation without much understanding of the underlying (decompiled) code. Having Ippo being 50 elo stronger than Rybka 3, makes this claim totally nonsensical.
IP* was _not_ 50 elo stronger than Rybka. In fact, it crashed often enough that it was weaker. As the bugs were fixed, it gained. But it had more bugs than Carter has little pills. I quickly gave up trying to use it on the cluster because it was crashing and losing enough games on time that it skewed the results... and left hundreds of core files lying around on top of that...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by bob »

kranium wrote:
bob wrote:
kranium wrote:
kranium wrote: BTW-
where did the 'sort' routines in Crafty come from?
did you invent them? just curious...
bob wrote: No, I didn't invent the bubble sort. No, I didn't invent bitboards.
Some time ago, (and over and over...ad nauseum):
bob wrote: Again, find _any_ CODE copied into crafty. Alpha/beta is not simple. The idea is there. Code is 100% original.
Jeez...
:shock:

"Born a saint, die a sinner – born a sinner, die a saint."
?
Again, what is your point? I didn't "copy a bubblesort". I didn't copy any code other than that I have previously mentioned (magic bitboards, permission from Pradu, Steven Edward's EPD code which he ported into Crafty and sent to me.

What is wrong with you?
You admit you did copy code, but at the same time maintain over and over (ad nauseum for years) that Crafty is 100% original?

Please check your quotes. I have said _many_ times that Crafty is 100% my code EXCEPT for ..., and I provide a short list including Pradu's magic move generator code, and the EPD stuff, and I even mention Nalimov's code even though it was developed inside Crafty first.

PS-
There's nothing wrong with me...other than the fact that I disagree with you, and you don't like it...
(and that's apparently a big issue for you, and you can't refrain from insults)

After all this is your home 'turf'..
and any dubious, unsubstantiated, or uniformed statement from you is almost never questioned.

please see plot summary - "The Wizard of Oz".
Please seek medical/psychiatric help. your support of cloning/copying/etc is _really_ unbecoming...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Houdini, Fire, IvanHoe, (and Rybka?) are 'clones'...?

Post by bob »

kranium wrote:
bob wrote: Time to grow up a bit. It is not about "not understanding the code." It is about understanding that it was _not_ written by a human, in that form. You might have trouble understanding C or asm. I don't... Never have, in fact...
bob wrote: And what a crock that web site is. :)
Tanks Bob for the professional 'academic' refutation...
I'm sure the ICGA appreciates such insight.

Also-
I realize that when posting without any real substance, for most there's a real temptation (often necessity) to fall back on 'mudslinging', (however unethical it may seem...and I know you're big on ethics)
...but I am disappointed to see you resort to such tactics.
I guess we are then "even". I've been disappointed in your lack of ethics for a long while, even though I defended your participation in the early fruit/rybka discussions when others were demanding you be ostracised due to past transgressions. I won't be fooled again...