ACCA stance on Ippo, Robbo and such

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

Moderator: Ras

User avatar
Eelco de Groot
Posts: 4661
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: ACCA stance on Ippo, Robbo and such

Post by Eelco de Groot »

kingliveson wrote:
Peter Skinner wrote:
kingliveson wrote:
Peter Skinner wrote: Can someone give me 100% proof that the current version of Rybka has any code left from Fruit?

Do I believe previous versions of Rybka contained Fruit? Yes.

Peter
This makes me laugh out loud, seriously.
Why?

Many programs have started with a code base from TCP then went on to re-write the code to make it their own.

While Rybka in my mind contained Fruit code in the earlier versions, I am 100% confident that there wouldn't be any today.

Peter
Strelka was claimed to be a clone of Rybka (rightly so to a certain extent), and I have analyzed both the sources of Strelka 2.0 and Fruit 2.1; I have my own belief of what happened. As for the reason that comment is funny, many programmers will read that statement and find it funny because it is rare for a developer to re-write an application from scratch.

Taken from Wikipedia:

Code: Select all

Motivation

   1. When the source code to be able to extend an existing program is not available.
   2. When the source code is available under an incompatible license.
   3. When the code cannot be adapted to a new target platform.
   4. When the existing code has become too difficult to handle and extend.
   5. When the task of debugging the existing code seems too complicated.
   6. When the programmer finds it difficult to understand the source code.
That is not so rare for chess programs. To name a few programmers who have done so that I know, but there must be many more:

Tord Romstad has written several programs, I know of Gothmog, Scatha for hexagonal chess, Viper, Glaurung.

Harm-Geert Muller has written Usurpator, Micro-Max, Joker, HaKiQi for Chinese Chess.

Peter Fendrich wrote Terra and Alaric.

From Robert Hyatt I know Cray Blitz for Cray supercomputers in Fortran and Crafty in C.

As far as I know all these programs were rewritten from scratch, of course incorporating experiences of previous programs or there would not be much point. Chessprograms are not so large that developing something from the ground up is much more time than trying an evolutionary approach, for programmers who have done so before.

I do not see why it would be impossible to do the same with Rybka 1.0.

That being said I don't think that Vas ever stated that his new versions were totally rewritten. Parts of eval and search yes, but not complete rewrites. I also have not heard much about similarities between Ippolit/Robbolito viz. datastructures etc. compared with other programs but I believe that has to do with deliberate obfuscation.
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: ACCA stance on Ippo, Robbo and such

Post by michiguel »

kingliveson wrote:
Peter Skinner wrote:
kingliveson wrote:
Peter Skinner wrote: Can someone give me 100% proof that the current version of Rybka has any code left from Fruit?

Do I believe previous versions of Rybka contained Fruit? Yes.

Peter
This makes me laugh out loud, seriously.
Why?

Many programs have started with a code base from TCP then went on to re-write the code to make it their own.

While Rybka in my mind contained Fruit code in the earlier versions, I am 100% confident that there wouldn't be any today.

Peter
Strelka was claimed to be a clone of Rybka (rightly so to a certain extent), and I have analyzed both the sources of Strelka 2.0 and Fruit 2.1; I have my own belief of what happened. As for the reason that comment is funny, many programmers will read that statement and find it funny because it is rare for a developer to re-write an application from scratch.
:shock:
Not rare at all for engine developers. In fact it is quite common! Several come to mind. Many explore different structures etc. In fact, many have more than one engine developed, Harm, Tord, Charles, Oliver, Allard, Allessandro, Pradu...

Miguel

Taken from Wikipedia:

Code: Select all

Motivation

   1. When the source code to be able to extend an existing program is not available.
   2. When the source code is available under an incompatible license.
   3. When the code cannot be adapted to a new target platform.
   4. When the existing code has become too difficult to handle and extend.
   5. When the task of debugging the existing code seems too complicated.
   6. When the programmer finds it difficult to understand the source code.
kingliveson

Re: ACCA stance on Ippo, Robbo and such

Post by kingliveson »

There is a difference between writing other programs than taking a mature program and rewriting it from scratch. And I would guarantee you that if you analyze the sources, you will find similarities and even find lines copied word for word. This is the nature of software development.
BubbaTough
Posts: 1154
Joined: Fri Jun 23, 2006 5:18 am

Re: ACCA stance on Ippo, Robbo and such

Post by BubbaTough »

kingliveson wrote:There is a difference between writing other programs than taking a mature program and rewriting it from scratch.
I don't really think there is....other than whether you want to change the name or the version number.

-Sam
kingliveson

Re: ACCA stance on Ippo, Robbo and such

Post by kingliveson »

kingliveson wrote:There is a difference between writing other programs than taking a mature program and rewriting it from scratch. And I would guarantee you that if you analyze the sources, you will find similarities and even find lines copied word for word. This is the nature of software development.
I stand by the above statement.

Again, it is rare for a developer to rewrite a program from scratch. From the list of programs you guys mentioned, writing a gui for a chess program is not the same as rewriting a matured program from scratch. And here is an example from the list of chess programs that you said were rewritten from scratch where lines were copied line for line. Let us look at code from viper and glaurung search.c

Viper 01

Code: Select all

void init_node(const position_t *pos, search_stack_t *sstack, int ply,
	       int thread_id) {
  search_stack_t *ss = sstack+ply;
  RSI->nodes++; RSI->nodes_since_poll++;
  Threads[thread_id].nodes++;
  if(RSI->nodes_since_poll >= RSI->nodes_between_polls && thread_id == 0) {
    check_for_input();
    check_for_timeout();
    RSI->nodes_since_poll = 0;
  }

  ss->pv[ply] = ss->move = NOMOVE;
  (ss+1)->pv[ply+1] = NOMOVE;
  (ss+2)->killer = (ss+2)->killer2 = NOMOVE;
  ss->check = pos->check;
}
Glaurung 1.2.1

Code: Select all

void init_node(const position_t *pos, search_stack_t *sstack, int ply,
               int thread_id) {
  search_stack_t *ss = sstack+ply;
  RSI->nodes++; RSI->nodes_since_poll++;
  Threads[thread_id].nodes++;
  if(Threads[thread_id].print_currline) print_currline(sstack, ply, thread_id);
  if(RSI->nodes_since_poll >= RSI->nodes_between_polls && thread_id == 0) {
    check_for_input();
    check_for_timeout();
    RSI->nodes_since_poll = 0;
  }

  ss->last_moved_piece_hanging = 0;
  ss->pv[ply] = ss->move = NOMOVE;
  if(!ss->evaluated) {
    ss->eval_vector.king_safety[0] = ss->eval_vector.king_safety[1] = 0;
    ss->eval_vector.passed_pawns[0] = ss->eval_vector.passed_pawns[1] = 0;
  }
  ss->reduction = 0;
  (ss+1)->pv[ply+1] = NOMOVE;
  (ss+2)->killer = (ss+2)->killer2 = (ss+2)->mate_killer = NOMOVE;
  ss->check = pos->check;
}
I try not to make statements I am not willing to own.

Franklin
Gerd Isenberg
Posts: 2251
Joined: Wed Mar 08, 2006 8:47 pm
Location: Hattingen, Germany

Re: ACCA stance on Ippo, Robbo and such

Post by Gerd Isenberg »

kingliveson wrote:
kingliveson wrote:There is a difference between writing other programs than taking a mature program and rewriting it from scratch. And I would guarantee you that if you analyze the sources, you will find similarities and even find lines copied word for word. This is the nature of software development.
I stand by the above statement.

Again, it is rare for a developer to rewrite a program from scratch. From the list of programs you guys mentioned, writing a gui for a chess program is not the same as rewriting a matured program from scratch. And here is an example from the list of chess programs that you said were rewritten from scratch where lines were copied line for line. Let us look at code from viper and glaurung search.c
Viper was subset from Glaurung as didactic sample for a multi threaded search. For general software with a life cycle of a few years you are right, but as far as I can tell, most chess programmers who develop 10++ years made several approaches from scratch, taking some old ideas at best.
Gian-Carlo Pascutto
Posts: 1260
Joined: Sat Dec 13, 2008 7:00 pm

Re: ACCA stance on Ippo, Robbo and such

Post by Gian-Carlo Pascutto »

hgm wrote:
Gian-Carlo Pascutto wrote:But of course, sane tournament organizers are free to make up their own limitations on what is allowable to enter.
This is questionable. Unreasonable decisions that can only be explained by arguments that violate applicable law could make you target of a lawsuit. As is happening to the Italian Computer Chess Association.
Got any more details of such?
CRoberson
Posts: 2091
Joined: Mon Mar 13, 2006 2:31 am
Location: North Carolina, USA

Re: ACCA stance on Ippo, Robbo and such

Post by CRoberson »

kingliveson wrote:There is a difference between writing other programs than taking a mature program and rewriting it from scratch. And I would guarantee you that if you analyze the sources, you will find similarities and even find lines copied word for word. This is the nature of software development.
I most certainly started over from scratch. Telepath has a completely different design than NoonianChess: different data structures, different search,
different evaluation, different transposition table structures and code, ....

It even uses a different programming language!

Seems you are used to some weak programmers in completely different areas of programming.

Complete rewrites happen more often than you might think. When it comes to contract software development, some contractors will try
to get the ok to do a complete rewrite even when not needed. They make more money that way. Others will do a complete rewrite because
they lack the skills to read and understand other people's code.
User avatar
mariaclara
Posts: 4186
Joined: Wed Mar 08, 2006 9:31 pm
Location: Sulu Sea

Re: ACCA stance on Ippo, Robbo and such

Post by mariaclara »

:?: I remember long ago, when rybka was new, it was not allowed to enter world chess computer tournaments.

Only selected commercial chess engines were the only ones allowed by the tournament organizers.


:arrow: deja vu.... :roll: :?:
.
.

................. Mu Shin ..........................