Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Can a Programming Language Cause Engines to be Slow?

Author: Bob Durrett

Date: 08:19:31 11/15/02

Go up one level in this thread


On November 15, 2002 at 07:52:41, Sune Fischer wrote:

>On November 13, 2002 at 20:13:43, Bob Durrett wrote:
>
>>>There are many distinct ways to make a chess engine stronger.  One way is to
>>>improve the evaluation function.  Doing this does not change the algorithms
>>
>>I guess I don't know exactly what the definition of the word "algorithm" is in
>>this context.  I thought that position evaluation was done by a software
>>implementation of a "position evaluation algorithm."
>
>Although you are right, that the evaluation is really more an algoritm than a
>function (the function _is_ an algorithm!), the word is rarely used here.
>
>I guess the reason is that the evaluation "function" is called at the leafs of
>the search tree, thus making it "point-like" in our minds.
>For some reason the function to search the tree has a more algorithmic feel than
>the evaluation function. Where to go, what to think about etc. that feels more
>like an algorithm.
>
>But an algorithm can really be anything:
>
>void day() {
>1) stop your alarm clock
>2) get out of bed
>3) go to the bathroom
>4) take a shower {
>  1) turn on the water
>  2) get wet
>  3) use the soap
>  4) wash soap off
>  5) dry yourself
>  }
>5) eat breakfast...
>...
>}
>So it doesn't say a lot.
>
>-S.

I wish to express my appreciation for your explaination above.  Thanks.

For the professional programmer, and for experienced chess programmers, what you
have explained above must seem very elementary, indeed.  But as I have said here
many times, I am a chess software user and advocate and not an experienced chess
engine programmer/developer nor a professional programmer.  As a retired
engineer [retired in 1994], I recall having to do programming [primarily
Fortran] as part of my engineering training and work.  But things have changed a
lot in the last ten or twenty years.  Software is coming of age, so to speak.  I
had already advanced into technical management, and hence out of programming,
long before the modern languages came into common usage.

Sometimes I browse through software and programming books at the local
bookstore.  There have been books which, according to the title, are about
"algorithms."  They are usually quite technical, giving many examples of coded
algorithms.

It strikes me that the word "algorithm" has a specialized meaning to software
professionals just as many helth-related terms have specialized meanings to
medical physicians.  "I feel depressed," for example, means "I'm unhappy" in
common usage whereas to the medical physician it means something else entirely.
Sometimes medical physicians realize this and refer to "clinical depression" to
distinguish it from "unhappiness."  That's just an example.

Once, I took a graduate course offered by the Math Department at the local
university.  The course title included the word "algorithm."  Unfortunately,
those "math people" are preoccupied with producing proofs, so we spent the
entire semester proving theorems. : )

I have a book, "Algorithms in C, Parts 1-4," 3rd Edition, by Robert Sedgewick.
The book is interesting but does assume proficiency in C programming, which is a
problem for me.  What strikes me most, by scanning through this book, is that
the algorithms discussed seem to be at a level of detail not far from the level
of coding.  In other words, the general "algorithm" you cited, having to do with
one's early morning ritual, does not seem to be at the level of detail given in
that book.

I see sub-programs and functions as being the products of algorithm development
and then of subsequent coding.  Like a program, they may have started out with
an idea, progressed to more detail [with the help of flow charts] until, at some
magic point, the "algorithm level" is reached.  Then the process of adding
detail progresses through the coding phase until a fully debugged source program
[or sub-program or function] is reached.  That is my perception.  Please correct
me if my perceptions in this matter are not correct.

Chess engines, it seems to me, are moderately complex computer programs.  They
include numerous different parts, sometimes interrelated, which should be
considered to be implementations of various algorithms.  Here, I am referring to
"algorithms" as being at the level of the book discussed above.

Here, at CCC, there has been much discussion about "search algorithms."  This
appears to be the most fruitful area for chess engine software development.  It
seems that the near-term advancements in chess engine software will be in
finding better search algorithms.  It's not surprising to see people here at CCC
use the word "algorithm" when they really mean "search algorithm." Everybody
here seems to understand and so there is no confusion.

Let me end this with a question:

What types of algorithms are implemented in modern chess engines, other than
"search algorithms"?

Bob D.



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.