Bob Hyatt says that....

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

Moderator: Ras

Terry McCracken
Posts: 16465
Joined: Wed Aug 01, 2007 4:16 am
Location: Canada

Re: Bob Hyatt says that....

Post by Terry McCracken »

tiger wrote:
Terry McCracken wrote:
tiger wrote:Copy/pasting from your memory can be illegal if your memory is protected by the GPL and you release the resulting source code under a non-GPL license. Your memory can sue you for this.



// Christophe

:lol: :lol: :lol: :lol: :lol:


And then it turns really ugly because you try to remember where you had already seen this code elsewhere, because your only defense is to point to prior art, and your memory refuses to release the information.



// Christophe
Thanks! I needed a stress relieving laugh! Brilliant! :lol:
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Bob Hyatt says that....

Post by bob »

Uri Blass wrote:
bob wrote:
CThinker wrote:I agree with Bob that the chances of two original work being identical is relly low. Especially low for the resulting binaries to be identical.

However, what I disagree with is with the particular setjmp example.

First, it is argued that setjmp is so rare in usage, that, if it is found in a new code, then it must have been copied from Fruit. The reality is, the use of try/catch/jmp is very common and is a programming 'pattern'. When programmers see that there is process that can be interrupted and that its state is not needed, then one can simply restore from a saved state when interrupted.
Who, exactly, has said that? I only said that when comparing fruit and rybka, and seeing setjmp() in both, just shows that this is an even lower probability for a "by chance" accidental duplication by two independent programmers.
It is clear that Vas learned from the ideas in Fruit and one of the ideas is using setjmp().

Using specific function is an idea and it is not copy and paste.
While it is not my intent to be rude, neither is it my intent to go over and over these absolutely stupid arguments as well. I said, exactly, "if you find a lot of duplicate code (which has happened) and in that supposedly copied code you find a rare and generally considered bad technique, that this only increases the probability that code was copied. I did not say that setjmp() by itself proves anything at all. I did say that setjmp() in conjunction with what else has been found _is_ another small piece of the puzzle.

You keep talking about copying ideas. You do _not_ copy ideas and then write absolutely identical code "by accident". It doesn't happen. And to continually say it looks bad. Nobody believes that happens. Those of us that have been doing this kind of stuff for a long time _know_ that is doesn't happen. So let's get off of that ridiculous platform and move on. Duplicate code does not happen unless it is copied, when you define "duplicate" as " multiple blocks of dozens of lines." And it is time to stop beating that dead horse, because it is _not_ going to get up and run.

How do you learn from existing source programs?
One of the ideas is simply to write the program not by copy and paste big parts but by starting from scratch and adding part of fruit that you can compile and you can understand until you get the full program.

In the beginning you copy and paste only some variables and some structures that you understand what they do and also add empty functions that you understand their job.

Later you understand the content of some function that is not dependent on functions that you did not write.

After understanding it you can give yourself an exercise to
write a function that does the same thing without copy and paste.
And when you finish you don't have multiple blocks of duplicate code. If you do, you _did_ cut and paste.


When you are succesful you get to the next function and continue with this way until you build the all program.

I think that this is the best way to understand a chess program.
At this stage you did not write your own chess program.

It is a lot of work and I did not do it but I imagine that you will have similiar parts if you start from scratch after doing it.
Who cares? We are not talking about "similar" we are talking about "identical" which is a _huge_ difference.

If after all this work you are attacked and people claim that you broke the GPL then it does not encurage programmers to really understand source of other people and I believe that reading is not enough to understand
and you may misunderstand some parts.

Uri
It just encourages programmers to obey the law and not steal code written by others and shared with the world, without sharing the result with the world as well. this isn't that hard to understand. If it discourages some from doing so, then perhaps they had no business in the field anyway.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Bob Hyatt says that....

Post by bob »

CT:

Please, must you try to sidetrack the various discussions by introducing clear and obvious refutations? Of course one can just change the characters in a story and then claim the new version as their own. Shoot, I became wealthy by very slightly re-designing the $1000 US currency bill and then spending them like crazy, and the US government had no problem with that because it was not duplicating the original. My program is an ingenious copy of gnuchessx where I just changed a few variable names. The papers I have written and published were just cut-and-paste creations where I borrowed text from others and changed a few key words to make it look different.

Isn't this the way things are done in the "real world"???

At least if you read the rather twisted logic being argued in these threads, you could conclude that the above is perfectly OK.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Bob Hyatt says that....

Post by bob »

Uri Blass wrote:
tiger wrote:
chrisw wrote:
kranium wrote:
chrisw wrote:
bob wrote:
chrisw wrote:
Alexander Schmidt wrote:
fern wrote: show us specific lines of code that are equal to those from fruit.
http://pagesperso-orange.fr/ct_chess/Fr ... rt_go.html
This is some kind of joke?!

The 'code' contains 200 lines, many of which are blank, ignoring those, there are:

33 lines same
81 lines different

that's a 28% correspondence. Very funny joke.

You have no source of Rybka, so the variable names are guesswork, btw.

Given that the code chucks are doing the same thing, I find 81 different lines to 33 same completely reasonable for programs written by two different people.
Please look again. "33 lines the same". One of us can't count. I stopped at 50. If two lines of C are on the same line they are equivalent.

At least don't try to distort what is being presented. That code is absoilutely _not_ independently written.
50? my goodness me, that's a lot out of 114. Not even half. And many of the equivalances rely on creative naming of variables and functions to, guess what, be the same!

Less than than half of your only disassembled code block so far? Very funny joke, Bob. Hahahaha

This is the famous identical corresponding code blocks is it? The famous 4000 lines of Christophe?

That code could perfectly well be independently written.

Are you going to try and get Vas's source code revealed at icga by this method? Hmmm?

chris-
there's no proof about 'creative' naming either...it just as plausible that it was accurately done.
Doesn't look like you understand the creative disassembly process. The naming of functions and variables (symbols), in the absence of the symbol table (thrown away at complie time and not part of the executable) is entirely the creative work of the engineer (creative artist) doing the disassembly.

The artist invents the symbol names. Unsurprisingly, since he is out to prove correspondence with a target program, he invents the symbol names to match the target.

Hence, perfectly possible he recreates some source which only resembles the target source (especially in case of a mere 28% match) in the fantasies of the reverse engineer artist.

Just because it is computer "science", don't imagine it is science.


So if you publish the story of Matrix and replace the character names Neo, Trinity and Morpheus by John, Sarah and Peter, then you believe will never be caught?

Because as soon as I put back the real name in place in order to demonstrate your plagiarism you will call me a creative reverse engineer artist and will say that I have made up the whole thing to make it look like an existing story?

Substituting what is believed to be the real original names is the correct thing to do. If no plagiarism has ever taken place, this subsitution will never work. In the above example, if I try with Luke Sywalker, Dark Vador and Yoda, it simply does not work.

Your refutation of the method is simply obstruction. Your only goal is to prevent any sensible discussion to happen.

The most disgusting is that you are using your expertise in programming to deceive the people who do not have this expertise.



// Christophe
In case that rybka was the same as fruit except names of variables I could agree with you but it is not the case.

difference is not only in names of variables(and even if you take only one page of the "book" then you find that part of it is not the same not only because of names).

I am also against the example of book because programs unlike books have in some parts one way that can be considered objectively as best
so it is logical that different programmers will have the same code for some parts.

Sorry to be blunt, but bullshit. bullshit! BULLSHIT!

I really wish you would stop with that nonsense. You will not have the same code for some parts. let me repeat, for the nth time. I have been giving an othello program project in the AI class for many years. Students individually write an othello program and at the end of the term, we run an automated tournament to see which one is best. I have saved over 100 of them, and there are _no_ duplicate code blocks to be found. There are an _infinite_ numbere of ways to express an algorithm in a programming language. You (and others) talk like it is an everyday occurrence to write duplicate code. If this is the case, should you not be able to find several duplicate blocks between Crafty and Gnuchess 5 (which is also bitboard based)??? If you find them, report back, because crafty greatly pre-dates gnuchess 5.0 so we will know where they came from.

But either give some real examples of sources where you find this kind of duplication or else stop saying it. I do not believe it happens. Neither do other academicians around the world that have to deal with plagiarism issues every day.



Edit:
You can say that uci is not one part that the program has to be the same and you are right here but
I think that learning from code of other people can clearly lead to similiar code and the code did not convince me that copy and paste has been done.

Uri
If you would stop saying "similar" and replace with "identical" you would be talking about what _we_ have been discussing. As it is, you are way over yonder, but trying to carry on a conversation about a topic way over here. And it makes no sense when you look at the discussion.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Bob Hyatt says that....

Post by bob »

Uri Blass wrote:
Uri Blass wrote:
tiger wrote:
chrisw wrote:
kranium wrote:
chrisw wrote:
bob wrote:
chrisw wrote:
Alexander Schmidt wrote:
fern wrote: show us specific lines of code that are equal to those from fruit.
http://pagesperso-orange.fr/ct_chess/Fr ... rt_go.html
This is some kind of joke?!

The 'code' contains 200 lines, many of which are blank, ignoring those, there are:

33 lines same
81 lines different

that's a 28% correspondence. Very funny joke.

You have no source of Rybka, so the variable names are guesswork, btw.

Given that the code chucks are doing the same thing, I find 81 different lines to 33 same completely reasonable for programs written by two different people.
Please look again. "33 lines the same". One of us can't count. I stopped at 50. If two lines of C are on the same line they are equivalent.

At least don't try to distort what is being presented. That code is absoilutely _not_ independently written.
50? my goodness me, that's a lot out of 114. Not even half. And many of the equivalances rely on creative naming of variables and functions to, guess what, be the same!

Less than than half of your only disassembled code block so far? Very funny joke, Bob. Hahahaha

This is the famous identical corresponding code blocks is it? The famous 4000 lines of Christophe?

That code could perfectly well be independently written.

Are you going to try and get Vas's source code revealed at icga by this method? Hmmm?

chris-
there's no proof about 'creative' naming either...it just as plausible that it was accurately done.
Doesn't look like you understand the creative disassembly process. The naming of functions and variables (symbols), in the absence of the symbol table (thrown away at complie time and not part of the executable) is entirely the creative work of the engineer (creative artist) doing the disassembly.

The artist invents the symbol names. Unsurprisingly, since he is out to prove correspondence with a target program, he invents the symbol names to match the target.

Hence, perfectly possible he recreates some source which only resembles the target source (especially in case of a mere 28% match) in the fantasies of the reverse engineer artist.

Just because it is computer "science", don't imagine it is science.


So if you publish the story of Matrix and replace the character names Neo, Trinity and Morpheus by John, Sarah and Peter, then you believe will never be caught?

Because as soon as I put back the real name in place in order to demonstrate your plagiarism you will call me a creative reverse engineer artist and will say that I have made up the whole thing to make it look like an existing story?

Substituting what is believed to be the real original names is the correct thing to do. If no plagiarism has ever taken place, this subsitution will never work. In the above example, if I try with Luke Sywalker, Dark Vador and Yoda, it simply does not work.

Your refutation of the method is simply obstruction. Your only goal is to prevent any sensible discussion to happen.

The most disgusting is that you are using your expertise in programming to deceive the people who do not have this expertise.



// Christophe
In case that rybka was the same as fruit except names of variables I could agree with you but it is not the case.

difference is not only in names of variables(and even if you take only one page of the "book" then you find that part of it is not the same not only because of names).

I am also against the example of book because programs unlike books have in some parts one way that can be considered objectively as best
so it is logical that different programmers will have the same code for some parts.

Edit:
You can say that uci is not one part that the program has to be the same and you are right here but
I think that learning from code of other people can clearly lead to similiar code and the code did not convince me that copy and paste has been done.

Uri
I thought about it more and I think that even if you write program without copy and paste people may claim that you copy and paste and maybe they are right because you copy and paste from your memory.

Suppose that I write something like

Code: Select all

printf("sum of divisors of %d is %d\n",i,div(i));
How do I know to use printf correctly?
I copy and paste from similiar examples in my memory so it is impossible to program without copy and paste from some source and even if the source is my memory not about chess programs I copy and paste for my chess program.

If you need to do similiar job you are going to use similiar or same code.
If you ask 2 programmers to write a program that prints the number 5 you are going to get the same code by many programmers without copy and paste.

They simply copy and paste from memory and if they are used to code with printf and not with some other way to print numbers in the screen then you can expect both of them to use printf.

Chess programming is not printing the number 5 but it can consist small tasks that are programmed in the same way espacially when speed is important and there are not many ways to be the fastest.

Uri
If we were talking about a single line of code, this might be an issue. But we are not. This is the same explanation one might use when discussing how life started. And then saying that the first earth-type environment we can identify should obviously have life similar to what we have here on Earth. Given an infinite number of earth-type planets in the universe, I believe life exists elsewhere. But only because there are an infinite number of chances for the same things that led to life here to happen elsewhere. If you tell me there are only 1,000,000 habitable planets in the entire universe, then the chance for life elsewhere would drop to below .00000000000000000000000000000001.

And we are talking about the same level of probability to create duplicate code given the infinite number of ways a specific algorithm can be expressed.
Uri Blass
Posts: 10844
Joined: Thu Mar 09, 2006 12:37 am
Location: Tel-Aviv Israel

Re: Bob Hyatt says that....

Post by Uri Blass »

<snipped>
bob wrote:
Uri Blass wrote:
When you are succesful you get to the next function and continue with this way until you build the all program.

I think that this is the best way to understand a chess program.
At this stage you did not write your own chess program.

It is a lot of work and I did not do it but I imagine that you will have similiar parts if you start from scratch after doing it.
Who cares? We are not talking about "similar" we are talking about "identical" which is a _huge_ difference.
I am not convinced that rybka and fruit have big blocks of identical code.
The code that people posted is not identical but similiar.

There are identical lines here and there but I did not see big blocks that are identical.

Uri
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Bob Hyatt says that....

Post by bob »

Uri Blass wrote:<snipped>
bob wrote:
Uri Blass wrote:
When you are succesful you get to the next function and continue with this way until you build the all program.

I think that this is the best way to understand a chess program.
At this stage you did not write your own chess program.

It is a lot of work and I did not do it but I imagine that you will have similiar parts if you start from scratch after doing it.
Who cares? We are not talking about "similar" we are talking about "identical" which is a _huge_ difference.
I am not convinced that rybka and fruit have big blocks of identical code.
The code that people posted is not identical but similiar.

There are identical lines here and there but I did not see big blocks that are identical.

Uri
If even 10% matches in blocks that are examined, that is an incredibly unlikely occurrence. First you find blocks, then inside the blocks you look for semantical identical lines of code. An occasional line here and there is no cause for alarm. Dozens of lines here and there is great cause for suspicion. And when those dozens of lines include obscure and unusual things, the level rises farther.