I think there is a knockout punch - at least for me.hgm wrote:Sure, they are just minor details. The only point I w\ant to make is that they most certainly cannot be used to argue that UCI is superior. To speak in boxing terms: there is no knockout, and WB protocol merely beats UCI on points. But it does so in every round...
The knockout punch for me is that with UCI you can focus on the chess playing aspects of the engine and not have to deal with the user interface with all it's gory details. I am happy to let user interface authors handle that part.
I did start to implement winboard as I believe it's always good to let users have options - but I quickly learned why the 2 protocols are different. winboard would have required me to build a user interface into komodo first because winboard assumes that your engine is tracking all state and control flow.
An older program of mine did that and it was conceptually a lot like komodo, it had a separate user interface (which was compiled into the program) and a separate engine that did not know or care about state. The only real difference between komodo and that older program is that now I dont' need to have a user interface compiled into the program - I just have a very simple stateless program. I think this is the HUGE point that nobody ever talks about and for some reason is never stated in arguments for or against one protocol over the other. To me that IS the knockout punch. With UCI the chess engine programmers job is very simple and the code is very clean - if you are willing to let the user interface make the unimportant decisions.
The argument always comes up that with UCI the engine cannot resign on it's own. I do not understand why this is considered so important. Does anyone honestly believe this is something worth losing any sleep over? You can set most any user interface to resign when the score is below some value for some specified number of moves consecutively and I can assure you that I'm not going to spend any time trying to improve on this - you can do this if you want to, but while you do I'll spend my time on the search or the evaluation - things that are more important that this by orders of magnitude. Or I'll just set the program not to resign which is actually a surprisingly good heuristic.
To me these unimportant and trivial details are ones that I am not very interested in - I would rather be actually improving the program. Even my king and pawn database (which is compiled into the program) contributes less than 1 or 2 ELO and I would put that at least 2 orders of magnitude more important than when to resign or offer a draw.
So all this nonsense about having a complete chess playing program is very "anal retentive" from my point of view. If you worry about things like this, then stuff like GHI (Graph History Interaction) is far more worthy of obsessing over and must give people nightmares. Computer chess is a very messy business and I doubt anyone can demonstrate any real advantage of one over the other other than ease of programming (which for me is the knockout punch and why I believe authors will continue to migrate towards UCI.)
I know you are heavily vested in winboard as you have done much good work with winboard and xboard. I don't have any issues against it and it has indeed over the years been a very valuable contribution to computer chess and I consider xboard a good tool that I use myself.
When I hear comments that are too slanted in one direction or the other I will probably say something. I think it's equally unfair to be overly critical of winboard (which is a perfectly usable protocol) and get real religious over either one.