Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Clones and moral behavior

Author: rasjid chan

Date: 21:03:45 08/24/05

Go up one level in this thread


On August 24, 2005 at 22:41:14, Uri Blass wrote:

>On August 24, 2005 at 22:15:55, rasjid chan wrote:
>
>>On August 24, 2005 at 16:21:39, José Carlos wrote:
>>
>>>On August 24, 2005 at 12:47:37, Bo Persson wrote:
>>>
>>>>On August 23, 2005 at 16:50:48, José Carlos wrote:
>>>>
>>>>>  I agree with you and Uri about there's no clear definition of what a clone is.
>>>>
>>>>Of course there is, if you have copied the code it's a clone. If you have
>>>>written it yourself, it is original.
>>>>
>>>>
>>>>>"Having source code of other engines" is miles away from clear. Example: I have
>>>>>in my code:
>>>>>
>>>>>int i = 0;
>>>>>
>>>>>  Either it is in some prior program (I'm a cloner) or in some later program (he
>>>>>cloned me -early versions of Averno were open source-).
>>>>
>>>>Yes, but did you think of this line yourself, or did you paste it from another
>>>>program?
>>>
>>>
>>>  For sure I didn't invent that line myself. I've seen it many times in other
>>>programs.
>>>
>>>
>>>>>  Of course copying that line is not cloning.
>>>>
>>>>Of course it is!!
>>>
>>>
>>>  Come on! You can't expect people inventing C language everytime. Of course
>>>I've copied that line. I learnt it in the university, I didn't figure it out
>>>myself. And of course I'm not a cloner for that.
>>>
>>>
>>>>If you copied the code, you know it's a clone. The only problem is to prove that
>>>>when the cloner lies about it.
>>>>
>>>>There is a difference between whether someting is true or false, and if you can
>>>>prove that. The cloner knows. It's much harder for everyone else.
>>>
>>>
>>>  If I take an open source program, make some small changes and release it, I
>>>know I'm a cloner. But if I study crafty and then I implement rotated
>>>bitboards... am I a cloner? I honestly say I don't know.
>>>
>>>
>>>>>But then, what is cloning? Copying
>>>>>5 lines? 10? 100? Only some specific lines? Maybe some "magic" numbers in
>>>>>evaluation?
>>>>
>>>>Copying or retyping other code is cloning. Writing it yourself is not. Very
>>>>simple!
>>>>
>>>>>  So please, if someone has an exact definition, post it here.
>>>>
>>>>"Copying or retyping other code is cloning. Writing it yourself is not." :-)
>>>
>>>
>>>  Read above. People learn programming from others. People use instructions they
>>>have learnt before. Then, everybody are cloners?
>>>
>>>
>>>>>  BTW, I strongly disagree about everyone's tempted to clone. What's the fun of
>>>>>seing other people's creating winning games? What is really fun for me is seeing
>>>>>_my_ creation winning games. I'll never be able to understand what anyone can
>>>>>get from copying other's work.
>>>>
>>>>
>>>>The same reason some athletes use doping. You might win the competition!
>>>                                           ^^^
>>>
>>>  You? Well, it's debatable in the case of athletes, but if you copy a chess
>>>program you have to be very good at lying yourself to really think _you_ are
>>>winning the competition.
>>>  Damn me, I still don't undestand...
>>
>>...You can understand. I think Bo persson is testing your wit.
>>
>>Bo Persson defined:-
>>"Copying or retyping other code is cloning. Writing it yourself is not."
>>
>>This definition is as close as cloning may be defined and I think it is clear
>>if you read it carefully - ...copying and retyping other code ...
>>
>>It says only on what cloning is and nothing else -like whether everyone
>>inevitably had to do some cloning or when some cloning is trivial. Fruit 1.0 has
>>pawn structure evaluation almost like that of TSCP (it is said so ...). Fabien
>>could not have written Fruit 2.1 without reading the ideas from the internet or
>>elsewhere.
>>
>>My Snailchess implementation of pawn structures and pawns shelter for kings
>>use the same factors in TSCP and retains the same function names but it is not
>>cloning as there is no copying and retyping, only implementing the ideas. I use
>>bitfiles and am not sure myself where mine differs from that of TSCP.
>>
>>Uri wrote:-
>>
>>"I think that even if you copied the following function from tscp that is about
>>counting time your program is not a clone"
>>
>>int get_ms()
>>{
>>	struct timeb timebuffer;
>>	ftime(&timebuffer);
>>	if (timebuffer.millitm != 0)
>>		ftime_ok = TRUE;
>>	return (timebuffer.time * 1000) + timebuffer.millitm;
>>}
>>
>>Wrong?
>>
>>By Persson's definition it is downright cloning - only it is trivial.
>>It is cloning if we retype and copy by reading the code at the same time.
>>It is not cloning if you remember how it is done in TSCP and it is done through
>>understanding and even if you happen to do an exact replica.
>>
>>Rasjid Chan
>
>Note that I understood that timebuffer.time means time in seconds since 1.1.1970
>if I remember correctly when timebuffer.millitm means remaining time in
>milliseconds so it is not that I did not understand what the code is doing.
>
>I do not see a difference if you copy and paste that small code with
>understanding or memorize the syntex.
>
>If you read the code again and again until you memorize the syntex there is no
>difference.
>
>You need to remember the syntex of
>struct timeb x(x gives the time in seconds since 1.1.1970 and you can use
>different variable)
>ftime(&x)
>x.time (gives time in seconds since 1.1.1970)
>x.millitm(give time in milliseconds since 1.1.1970)
>
>
>I do not think that a programmer have to spend an hour to learn to remember all
>this struct in order not to be called a cloner because he can program all this
>from scratch or alternatively look at the help file to try to figure out how to
>calculate time.
>
>Things may be different with chess code but this is not a chess code.
>
>Uri

I think I am correct - ie if you agree to accept Persson's definition, othewise
the discussion of clones continues.

The reason why trying to come to an agreement in any discussion in general
fails is because there is no agreement in the first place. Ironically,
any agreemment as to what cloning is DICTATES AN INITIAL AGREEMENT AS TO WHAT
CLONING IS!

Well, it is'nt scieticfic? but I think it may be correct.

I remember years ago reading about abstract algebra, set theory, number theory.
They have to start by ageeing on something, like you don't question what numbers
mean, or why 2+2 = 4... or what true and false means. There are defined terms
and undefined terms. Like we accept what C++, program codes, algorithm, DLL
mean. But in this huge thread about clones, we read posts questioning
alpha-beta, algoritm,etc.. and then there is no way we agree on what cloning
means.

Fabien replied that he had no problem even if you intent to imitate Fruit's
evaluation (even 100% I think). But the problem is NOT ABOUT CLONING, it is
about what if when you enter Movei in a tournament with a 90-100% emulation
of Fruit's evaluation. By Persson's definition, Movei is not a clone at all.
It is only "cloning of ideas" - which requires another huge thread.

A chess program mainly has:-
1) general program structure - data strutures, hashing, move generation.
2) search
3) evaluation.

If you entered Movei in a tournament with a 90-100% evaluation from fruit and in
the very unlikely event that the line of play at certain points closely
resembled the line by Fruit and you are LEADING THE PACK and you are asked to
show your source, you're in trouble.Depending on the whims of the TDA, Movei
may be disqualified ... because of an originality problem, not about cloning.

If I am not wrong, I read Fruit 1.0 has very little evaluation. I have just
briefly seen the eval.cpp of fruit 2.1 and I think it has very little evaluation
- and this is where the trouble lies. I intent to rewrite snailchess and "clone"
Fruit's evaluation, but not rigorously as I don't have the skill or motivation
to understand everything. The secret may be to use just the important elements
and don't waste CPU time. So I think many have the skills to emulate 100% the
evaluation of Fruit without much difficulty.Although not much, TDA of
tournaments still may just have to follow some guidelines. If you implemented
100% of everything of Fruit's evaluation and added five times as many lines of
codes to your evaluation to bring Movei to the BOTTOM OF THE PACK, you're NOT in
trouble.

Rasjid Chan






































This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.