Author: Uri Blass
Date: 19:41:14 08/24/05
Go up one level in this thread
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
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.