Who would have thought that a superb programmer like Fulvio is a fan of
Steve Jobs, of Wozniak maybe, but not Steve Jobs... :)
sorry about that :p
On 11/27/2014 10:43 AM, Fulvio wrote:
H.G. Muller wrote:
There is a problem with that: if the format would be go to changes it
would be for the
reason to provide more information some GUIs need, and it would have to
appear
in the list. To be able to ignore extentions of the specs it should be
possible to let the
library allready filter the data, and only present you those items you want.
Let's go back to the interface i suggested as an example.
You can rewrite your AutoInstall function like this:
std::string AutoInstall (const std::string& lastTimeStamp)
{
//TimeStamp may be a string composed by
numberofengines_timeofthelastengineinstalled
std::string timeStamp = AutomagicalEngine::getTimeStamp();
if (lastTimeStamp != timeStamp) {
auto available_engines = AutomagicalEngine::getEngines();
//I think that all the engines available should be returned
//InstallNewEngine should check if the engine is already
registered (maybe the user did it manually)
for (auto& e : available_engines) { // for each
InstallNewEngine(e.getExecutable(), e.getDir(),
e.getVariants(), e.getProtocol());
}
}
return timeStamp;
}
c++ provide automatic memory management and encapsulation, but the same
thing can be written in c too (like gtk_widget for example).
Now suppose that you change the .eng file format and add some other
information, like the engine version.
You will add a new function to the interface:
std::string getVersion();
but all the implementation details, like parsing the .eng file for the
new format (still need to support the old one, the new getVersion
function will return an empty string for old eng files) will be
encapsulated inside the library. If the GUI is not interested in the new
information there is nothing to change: copy & paste the updated library
and you have automatic support for the new format.
About Stockfish: i agree with their point of view.
They support a wide range of platform, compilers, linux distro:
implementing your protocol in the makefile will be a nightmare (just
think about how many linux distro on how many platform need to be tested
every time you'll change something in the protocol).
On the contrary the debian maintainer (for example) need to worry only
about testing the changes on debian for the platform he is building the
package for.
When Steve Jobs returned to Apple it famously reduced the product number
to 4: you need to focus if you want to create the best.
Stockfish became the strongest chess engine by trimming all the
unnecessary fat: the time a developer spend on working and testing this
protocol is time that he could have spent improving the engine.
Bye,
Fulvio
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Scid-users mailing list
Scid-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scid-users
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Scid-users mailing list
Scid-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scid-users