Re: [computer-go] speeding up testing of computer go programs

2007-11-26 Thread Don Dailey
Hi Jim,

There is no black and white when it comes to right or wrong
thinking.   Each of us is guilty of it.   You get an idea, try it out,
test it thoroughly and find that it isn't useful.  

There is nothing wrong with this process itself - I view it as a
device that trains your intuition.   The more  paths you go down, good
and bad, the better your judgment the next time around.

However,  I have seen people get stuck on the wrong pathway for far too
long.   They get some idea that they are emotionally attached to, wrap
their teeth around it, and won't let go.   You see this is science
all the time - scientists waiting too long to abandon their pet theory
because of the emotional investment they have in it.

This is a big fat gray area, so there is no standard method to clearly
distinguish right thinking except to do the hard work. 

However, some common sense is required.   Wrong thinking starts to come
into play when you stubbornly refuse to acknowledge defeat in some
pathway you are pursuing.Or when you fail to discern that you are
being lazy in some area.   If you are doing more coding than anything
else you are probably guilty of wrong thinking (or perhaps not thinking
is a better way to put it.)   

Probably every one of us has bad habits that hold us back to a certain
extent.   We also have prejudices that don't serve us well.   I know
that my testing methods are frowned on by some people and I frown on
theirs.I know some people are convinced that self-testing is evil, 
some including myself are not. Writing code in a slow high level
language because you can write it slightly faster is one of those things
that seem like a good idea because you can try things more quickly but
in fact it slows down your development time (as measured by the whole
development cycle, not just the keying in the program part)  and in
addition you get a slower and weaker finished product.   You pay for
that decision forever and ever.Is that really a good trade off? 

This may not apply to other kinds of development  where performance
isn't the prime issue.  Often such a case exists in corporate
environments.I wrote CGOS in a scripting language because it was
easier and performance is a minor issue.

Sometimes you hear that someone stumbled on a great idea and that made
them rich and/or famous.   Some people have a knack for stumbling on the
right ideas - I don't think that is an accident.They are just more
methodical about eliminated bad thinking.

So something that is wrong thinking for you may be a learning experience
for me.It's still wrong thinking technically,  but it's useful as
a learning experience for a short period of time - then it becomes an
Albatross. 

- Don
 


Jim O'Flaherty, Jr. wrote:
 Don,

 I think we have a semantic problem.  Some things don't work as
 expected but provide the genesis for further creativity.  Other things
 work, but not with sufficient additional value for the
 disproportionate effort invested.  Some things don't end up having any
 enduring value except as one of the many infinite possible paths
 eliminated.

 Maybe we are being too abstract here.  If you have the time and
 motivation, would you please tell me in a couple of sentences what
 your standard(s) is upon which you can clearly distinguish right
 thinking from wrong thinking?  And how that standard accommodates
 active random walk experimentation and creativity such that an
 experimenter can know PRIOR to doing the experiment if he is headed
 off in a right or wrong path?


 Jim


 Don Dailey wrote:
 Jim O'Flaherty, Jr. wrote:
   
 Heikki,

 I'm with you.  There is no wrong thinking at the present time.  
 

 Of course there is wrong thinking.  Why do you think they call it the
 trial and error approach?

 - Don




   
 There are too many differing agendas, with building the strongest
 program immediately being only one, to claim any approach is futile,
 inefficient or erred.  Once there are approaches that actually come
 near playing low dan levels against humans, I can see how narrowing
 approaches and thinking will become useful.  Until then, lots of
 chaotic and random path experimentation is desirable, including other
 languages, specialized languages, techniques, etc.


 Jim


 Heikki Levanto wrote:
 
 On Sun, Nov 25, 2007 at 11:52:14AM -0500, Don Dailey wrote:
   
   
 I know that most go programmers don't concern themselves with small
 improvements because of the sense that there is bigger fish to fry.   
 But this is wrong thinking.   If you can get 10 small improvements it
 can be equivalent to one very large improvement.  
 
 
 This is frong thinking *for you*. Wasn't it yourself who said that people
 program go for various reasons, only one of them being making the 
 strongest
 possible program. A person with a more theoretical approach might lament
 that all that speed optimizing indeed improved the play considerably, but 
 has
 not produced any new 

Re: [computer-go] speeding up testing of computer go programs

2007-11-25 Thread Don Dailey
 However, perhaps there are ways to make testing a Go program use less clock 
 time? 

This is the right idea.   

Chess programmers use massive automated testing - playing games.   To
measure a small ELO improvement in your program requires tens of
thousands of games.I think it's something like 100,000 to measure 1
or 2 ELO with high confidence.  

It might make sense to test your scalable go program at levels where a
game can be completed within 2 or 3 seconds.   In this way, if a changes
hurts your program significantly you can measure this within minutes.  
If it's a 5-10 ELO improvement you can measure it in a few hours if you
have a few computers.
 
At the level my program is at,  I would be happy just to measure 20 ELO
improvements so on the 3 CPU's I have I could do this relatively quickly
if I speed up the tests to a couple of seconds per game.

One must seek a compromise.   Ideally, you would prefer to test at
levels similar to what you will actually be playing.   But this is not
practical if you want high confidence in small improvements.

I know that most go programmers don't concern themselves with small
improvements because of the sense that there is bigger fish to fry.   
But this is wrong thinking.   If you can get 10 small improvements it
can be equivalent to one very large improvement.  

- Don




Brian Slesinsky wrote:
 Thought I'd emphasize this point:

 Don Dailey:
   
 I spend a great deal of time waiting on the computer,  because I have no 
 clue what will work and I must test it.
 

 This makes Go programming somewhat unusual; for a lot of programs, you
 can arrange so that compiling and running your tests only takes a few
 seconds.  But if waiting for test results takes hours or days, the
 highest-performance language is also the the most productive one to
 develop in, because you can do more iterations in any given amount of
 time.

 However, perhaps there are ways to make testing a Go program use less
 clock time?  Could testing on smaller problems give results similar to
 testing on larger ones?  Or suppose tests could be run in parallel on
 something like Amazon EC2?

 - Brian
 ___
 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/


Re: [computer-go] speeding up testing of computer go programs

2007-11-25 Thread Heikki Levanto
On Sun, Nov 25, 2007 at 11:52:14AM -0500, Don Dailey wrote:
 I know that most go programmers don't concern themselves with small
 improvements because of the sense that there is bigger fish to fry.   
 But this is wrong thinking.   If you can get 10 small improvements it
 can be equivalent to one very large improvement.  


This is frong thinking *for you*. Wasn't it yourself who said that people
program go for various reasons, only one of them being making the strongest
possible program. A person with a more theoretical approach might lament
that all that speed optimizing indeed improved the play considerably, but has
not produced any new insight or theory on how best to approach the problem. A
mere amateur like me could complain about the time invested in those small
improvements, that I did not gain any new knowlege for myself, it was just
routine programming.  I humbly suggest that none of us (including you :-) is
guilty of wrong thinking.

Regards

   Heikki

-- 
Heikki Levanto   In Murphy We Turst heikki (at) lsd (dot) dk

___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] speeding up testing of computer go programs

2007-11-25 Thread Jim O'Flaherty, Jr.

Heikki,

I'm with you.  There is no wrong thinking at the present time.  There 
are too many differing agendas, with building the strongest program 
immediately being only one, to claim any approach is futile, inefficient 
or erred.  Once there are approaches that actually come near playing low 
dan levels against humans, I can see how narrowing approaches and 
thinking will become useful.  Until then, lots of chaotic and random 
path experimentation is desirable, including other languages, 
specialized languages, techniques, etc.



Jim


Heikki Levanto wrote:

On Sun, Nov 25, 2007 at 11:52:14AM -0500, Don Dailey wrote:
  

I know that most go programmers don't concern themselves with small
improvements because of the sense that there is bigger fish to fry.   
But this is wrong thinking.   If you can get 10 small improvements it
can be equivalent to one very large improvement.  




This is frong thinking *for you*. Wasn't it yourself who said that people
program go for various reasons, only one of them being making the strongest
possible program. A person with a more theoretical approach might lament
that all that speed optimizing indeed improved the play considerably, but has
not produced any new insight or theory on how best to approach the problem. A
mere amateur like me could complain about the time invested in those small
improvements, that I did not gain any new knowlege for myself, it was just
routine programming.  I humbly suggest that none of us (including you :-) is
guilty of wrong thinking.

Regards

   Heikki

  
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] speeding up testing of computer go programs

2007-11-25 Thread Don Dailey


Heikki Levanto wrote:
 On Sun, Nov 25, 2007 at 11:52:14AM -0500, Don Dailey wrote:
   
 I know that most go programmers don't concern themselves with small
 improvements because of the sense that there is bigger fish to fry.   
 But this is wrong thinking.   If you can get 10 small improvements it
 can be equivalent to one very large improvement.  
 


 This is frong thinking *for you*. Wasn't it yourself who said that people
 program go for various reasons, only one of them being making the strongest
 possible program. 
I'm not addressing the people that do this just for fun and don't care
how strong their program is.I'm addressing (see my quote above) the
people that are looking for breakthrough's.   These people are doing
this to advance the state of the art - they want to see strong programs
and a few are trying to do it with hand tools when they should be using
power tools.


 A person with a more theoretical approach might lament
 that all that speed optimizing indeed improved the play considerably, but has
 not produced any new insight or theory on how best to approach the problem. 
I personally believe this is a fallacy.   Having an efficient language
doesn't inhibit breakthrough's.But high level language enthusiasts
want you to believe that.   

At any rate, Java certainly isn' t much of a choice if a great deal of
expressiveness is your criteria.   You should probably be reaching for a
high level language if that is you primary consideration.Java is a
low level language in comparison to quite a few really cool expressive
languages now available.


 A
 mere amateur like me could complain about the time invested in those small
 improvements, that I did not gain any new knowlege for myself, it was just
 routine programming.  I humbly suggest that none of us (including you :-) is
 guilty of wrong thinking.
   
I haven't found the language choice to be very much of an issue even
when it comes to coding time.The biggest investment is the initial
learning curve of learning a new language and once that goes away the
amazing extra productivity over all other languages that every language
claims is just hype. So you might as well use one that makes you
productive in other ways.   You can try new ideas much more quickly in C.  

- Don



 Regards

Heikki

   
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] speeding up testing of computer go programs

2007-11-25 Thread Don Dailey


Jim O'Flaherty, Jr. wrote:
 Heikki,

 I'm with you.  There is no wrong thinking at the present time.  

Of course there is wrong thinking.  Why do you think they call it the
trial and error approach?

- Don




 There are too many differing agendas, with building the strongest
 program immediately being only one, to claim any approach is futile,
 inefficient or erred.  Once there are approaches that actually come
 near playing low dan levels against humans, I can see how narrowing
 approaches and thinking will become useful.  Until then, lots of
 chaotic and random path experimentation is desirable, including other
 languages, specialized languages, techniques, etc.


 Jim


 Heikki Levanto wrote:
 On Sun, Nov 25, 2007 at 11:52:14AM -0500, Don Dailey wrote:
   
 I know that most go programmers don't concern themselves with small
 improvements because of the sense that there is bigger fish to fry.   
 But this is wrong thinking.   If you can get 10 small improvements it
 can be equivalent to one very large improvement.  
 


 This is frong thinking *for you*. Wasn't it yourself who said that people
 program go for various reasons, only one of them being making the strongest
 possible program. A person with a more theoretical approach might lament
 that all that speed optimizing indeed improved the play considerably, but has
 not produced any new insight or theory on how best to approach the problem. A
 mere amateur like me could complain about the time invested in those small
 improvements, that I did not gain any new knowlege for myself, it was just
 routine programming.  I humbly suggest that none of us (including you :-) is
 guilty of wrong thinking.

 Regards

Heikki

   
 

 ___
 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/


Re: [computer-go] speeding up testing of computer go programs

2007-11-25 Thread Jim O'Flaherty, Jr.

Don,

I think we have a semantic problem.  Some things don't work as expected 
but provide the genesis for further creativity.  Other things work, but 
not with sufficient additional value for the disproportionate effort 
invested.  Some things don't end up having any enduring value except as 
one of the many infinite possible paths eliminated.


Maybe we are being too abstract here.  If you have the time and 
motivation, would you please tell me in a couple of sentences what your 
standard(s) is upon which you can clearly distinguish right thinking 
from wrong thinking?  And how that standard accommodates active random 
walk experimentation and creativity such that an experimenter can know 
PRIOR to doing the experiment if he is headed off in a right or wrong path?



Jim


Don Dailey wrote:

Jim O'Flaherty, Jr. wrote:
  

Heikki,

I'm with you.  There is no wrong thinking at the present time.  



Of course there is wrong thinking.  Why do you think they call it the
trial and error approach?

- Don




  

There are too many differing agendas, with building the strongest
program immediately being only one, to claim any approach is futile,
inefficient or erred.  Once there are approaches that actually come
near playing low dan levels against humans, I can see how narrowing
approaches and thinking will become useful.  Until then, lots of
chaotic and random path experimentation is desirable, including other
languages, specialized languages, techniques, etc.


Jim


Heikki Levanto wrote:


On Sun, Nov 25, 2007 at 11:52:14AM -0500, Don Dailey wrote:
  
  

I know that most go programmers don't concern themselves with small
improvements because of the sense that there is bigger fish to fry.   
But this is wrong thinking.   If you can get 10 small improvements it
can be equivalent to one very large improvement.  



This is frong thinking *for you*. Wasn't it yourself who said that people
program go for various reasons, only one of them being making the strongest
possible program. A person with a more theoretical approach might lament
that all that speed optimizing indeed improved the play considerably, but has
not produced any new insight or theory on how best to approach the problem. A
mere amateur like me could complain about the time invested in those small
improvements, that I did not gain any new knowlege for myself, it was just
routine programming.  I humbly suggest that none of us (including you :-) is
guilty of wrong thinking.

Regards

   Heikki

  
  



___
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/

  
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

[computer-go] speeding up testing of computer go programs

2007-11-24 Thread Brian Slesinsky
Thought I'd emphasize this point:

Don Dailey:
 I spend a great deal of time waiting on the computer,  because I have no clue 
 what will work and I must test it.

This makes Go programming somewhat unusual; for a lot of programs, you
can arrange so that compiling and running your tests only takes a few
seconds.  But if waiting for test results takes hours or days, the
highest-performance language is also the the most productive one to
develop in, because you can do more iterations in any given amount of
time.

However, perhaps there are ways to make testing a Go program use less
clock time?  Could testing on smaller problems give results similar to
testing on larger ones?  Or suppose tests could be run in parallel on
something like Amazon EC2?

- Brian
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/