The very reason different programs have different styles is because the underlying ideas are different , the assumptions made and the problems being solved are different - all attempting to play chess , but in different ways.
Just 'cos one specific impl does well does not imply that all others are thrash and should start from scratch.
Tommorrow if SMK is to opensource shredder , you will say the same thing about any other program (including fruit) I guess ?
And , please dont forget that lot of us (ok , atleast some of us like me
) do chess programming to relax after a days/weeks tough work : to chat , think and unwind - you dont want to take that away do you ?
The original comment would be relevent to professionals I guess ... not to me for sure !
If something I work on at office requires improvement and I have to work for weeks for 1 - 5 % improvement , I would - I get paid for that work : not for a chess program I do for fun and am not very serious about (yet).
For a professional - chess is their bread , so they work for 1 - 5 % improvements for weeks on end.
Now , if we are to talk technical merits , let us analyse fruit:
From what I have last seen , the important points will be (I am not doing an exhaustive analysis here) :
1) Data organisation and use - to maximise cache coherence.
2) Simple and tight loops - reduce branch mispredictions.
3) Nothing agressive - no dubious ideas that I can find offhand.
4) Essentially bugfree to a large extent (dont underestimate this fact).
5) Well tuned params (just from a cursory look) - nothing which were conflicting each other (this can be a major problem).
6) I did not see anything speculative in eval , but then I did not find it sufficiently sophisticated.
Does not need to be - the search takes it deep enough to play positionally sound chess : so lot of things I always toy around with are essentially absent.
7) this space for rent.
So you see , just that your code has bugs - get a decent search going , simple and yet essentially bugfree eval and qsearch and you will be strong engine.
Only difference is that I dont want a super strong engine - I want to write something which entertains me while writing it : I like to see my engine's eval rise because of its qsearch 4 moves before crafty sees danger.
I want to be able to play with ideas in kingsafety , make the static eval "understand" the position , etc.
All these are buggy if not done well (including tuning bugs).
Different people get different kicks
Crafty and fruit from what I have seen rarely understand the static nature of a position well enough - but their search depth is their strength.
Please note , my whole point is that , you can make movei superstrong by just making it bugfree , implementing a good eval and removing dubious things from search/eval (definition of dubious is upto you to define !).
You do not have to rewrite it to use ideas from fruit - what works for fruit maynot work for you and viceversa.
- Mridul