Author: Miguel A. Ballicora
Date: 09:33:39 03/06/01
Go up one level in this thread
On March 06, 2001 at 10:45:51, Robert Hyatt wrote: >On March 06, 2001 at 09:51:42, Pham Minh Tri wrote: > >>On March 06, 2001 at 08:03:21, Severi Salminen wrote: >> >>>Are you just modifying source codes made by others? I don't like at all the idea >>>of free source codes. Even though it might be easier to make a complete working >>>chess programm by watching what others have done, it leads to everyone making >>>very similar programs. We would see _a lot_ of variety among engines if >>>everybody started from scratch. You also would understand things a lot better by >>>_not_ watching what others do but by trying things yourself and by making those >>>errors. Errors lead to understanding. Of course it is good idea to ask >>>information here about different techniques but having complete code available >>>is not a good thing in my opinion. >>> >> >>Note that I am still *new* to computer chess. Nobody could re-discover all >>knowledge of over 100 years of that field. Therefore, I should learn first and >>there is not any course better than updating source codes like Crafty and this >>club (and new idea source of computer chess seems be very few, only from them, >>doesnt it?). And if I build a new engine from nothing, how many years will it be >>as good as present engines? It may take me 10-20 years. I hope I could save many >>years by that learning ;-) > > >This is a key point in a common argument. The argument goes something like >this: "If you look at other programs, your thought processes become tainted >and you will likely make similar design decisions. If you start off on your >own, you will have no such preconceived ideas, and as a result, you might >find something totally new and different." > >The argument has merit, but moreso in a very new/virgin field. In computer >chess, there are _plenty_ of bad things to try, along with a smattering of >good things. If you start off by yourself, yes, you might find something new >and novel that hasn't been tried before. But computer chess is relatively >well-known and has a large body of existing information about it. If you start >off blindly, you are far more likely to waste years on a flawed approach when >a quick literature/source code review would show that your approach is doomed >to failure before you start it. As the field gets better and better defined >over the years, failure to do research will become more and more critical. How >long would it take someone to _rediscover_ null-move, for example? Or >fractional ply extensions? Or hashing? or all the current crop of evaluation >tricks? > >IE this is why we have universities.. to teach people about what has already >been done in a particular field (like chemistry, physics or computer science) >so that the mistakes can be avoided and real progress actually happens. > What you say is true, but Severi was not referring (I think) to reinvent the wheel but more to "cut and paste" code and then modify it. In science you repeat many times a recipe, but you do not use the same reagents that the original author. I partially agree with him. That is why all the code in my program has been written by me. However, I did not reinvent the wheel, I listened to this group (when I started was r.g.c.c.), I read the little things that are available on the net and then I implemented them with _my_ code. Was this the most efficient way? I have no idea... maybe not, but it fulfilled my goals. 1- I learned C (not finished my process of learning the language though!!) 2- I know 100% what my program is doing or not doing. 3- Because of 2, debugging is not the nightmare that it could be (still not a piece of cake) 4- Because of 2 and 3, I can modify anything without a problem, which speeds up experimentation A LOT. 5- Data structure is tailor made for the things I want to test in eval However, the drawback is that I ended up with a slow searcher... But, because of 4, I can modify it again! Main drawback, it took me a lot of spare time. I enjoyed it a lot though. Advantage: in the long run it will be more fun to test things rather than hunting bugs caused by others or just because misundertanding of a little detail. The only time I really read another code was TSCP to quickly implement in my program the Xboard/Winboard protocol. It saved me many hours and I learned a C idiom I did not know => if (!strcmp(s,t)). Now, there is only the framework because it has been overwritten. So, it is good to copy few things... One little point that I disagree with Severi is that "cutting and paste" does not hurt creativity in this field, because most people that do that do not have the time to do it in any other way. So, they wouldn't be doing any chess programming at all. Regards, Miguel
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.