terry mcintyre wrote: > A bird's-eye view of computer-Go programming: a large part of what a > Go program does will probably be some sort of analysis of a deep tree > of possible moves, involving the exploration of millions of possible > positions. The guts of this should be as optimal as possible. A slower > language such as Ruby or Perl is not a good fit for such efforts - but > that's a strawman argument, of little practical relevance. > > Higher-level optimizations can provide far more remarkable speed gains > than the choice of implementation language. This is obviously true and a well known principle, but when you compare languages for speed, the assumption is that you are using the same algorithms - anything else is just unfair.
When you talk about Lukasz Lew and his very fast implementation, you will notice also that he chose C to write his library. I don't think this is a wild coincidence. It's a mentality and Lukasz has the right mentality. The kind of person who writes such a library is concerned about each single percent of execution speed because he knows they add up. He is not going to immediately start the project with a stupid decision. If he were willing to do that, chances are good that he would be willing to take other non-optimal choices. Of course I'm not saying that you can't do what Lukasz did using a different language. You could start with any constraints you want and then be disciplined from that point on - but you wouldn't end up with the same amazing results Lukasz did. He could have chosen Ruby, a far more expressive language. Perhaps it it would be a better choice for him because Ruby's amazing freedom of expression would unlock his mind and let him soar to new heights, but somehow Lukasz suffered along in C. - Don > When Lukasz Lew wrote libego, I believe he recast the algorithms a few > times in order to extract maximum performance, as he discovered more > about how his chosen language ( C++ ) is compiled into assembler, and > how that affects performance. Improvements to move ordering algorithms > can enable reductions in the breadth of trees, which greatly reduce > the size of the tree. Improvements in the quality of playouts result > in vast improvements to the quality of the evaluations, which can lead > to reductions in evaluation times. Several have noted that fast > mersenne twister algorithms improve the speed and quality of "random" > playouts. Ways to refactor, to incorporate higher-level knowledge, and > otherwise increase the performance of our programs will be discovered > as we learn more about the demands of computer Go. Better algorithms > can improve program performance by factors of tens, hundreds, even > thousands. Some future improvements will surely lead to increases of > hundreds of elo points in ratings, given the same hardware and > implementation language. Some of us will find ways to wring lots of > elo points from multiple processors. Some of these improvements may be > much more easily expressed in higher-level languages than in C. > > I cut my teeth on FORTRAN and C and assembler, having written hundreds > of thousand lines in such languages, as well as piles of scripts in > Perl, Ruby, Python, R, and other languages. I've chosen to study Lisp > again ( which I last tinkered with in the 70s ) because I think I see > interesting ways to take advantage of the unique properties of Lisp. I > could write C equivalents to these capabilities - but I'd rather use a > language where where my ideas are a more natural fit. There's a saying > that any sufficiently sophisticated program will eventually include a > buggy implementation of the Lisp eval loop. My efforts may use C > libraries for some speed-intensive task; it may be all Lisp; too early > to make that judgment. > > When humans explain how they play Go, their algorithms rarely require > the investigation of millions of potential positions. A good program > need not follow the same methods as a good human player, but it just > might be that human play still offers a few very high-level > optimizations. Fuel for thought. > > > ------------------------------------------------------------------------ > Be a better sports nut! Let your teams follow you with Yahoo Mobile. > Try it now. > <http://us.rd.yahoo.com/evt=51731/*http://mobile.yahoo.com/sports;_ylt=At9_qDKvtAbMuh1G1SQtBI7ntAcJ> > > ------------------------------------------------------------------------ > > _______________________________________________ > computer-go mailing list > computer-go@computer-go.org > http://www.computer-go.org/mailman/listinfo/computer-go/ _______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/