For my implementation of the Chess Game I selected C# mainly because it is a computer language that:
- I know best and work with every day.
- I would like to improve my skills in.
- Should be around for a while giving the project a longer life.
There are however negative aspects to my choice. C# cannot compete with C or assembly language in terms of performance. This will means that a chess engine created in C# will probably be slightly slower in move searches compared to the same chess engine created in a programming language that compiles into machine code.
I have read sites that claim that the .NET framework is just as efficient and quick as unmanaged C++. However I am skeptical at best. I have seen a managed C# program choke on things that C++ would breeze through. Maybe some of this has to do with implementation or optimization. However I am a firm believer that optimized C++ unmanaged executable will usually be faster then optimized C# managed executable.
As proof I would like to submit the fact that it has been years since the introduction of C# and yet the Windows OS is still entirely written in unmanaged code… even notepad.
However I stated before my goal is not to make the best Chess Engine that ever existed, just a fairly good one. I believe the C# programming language will serve that purpose.
Want to skip to the end, download the full chess engine source code on GitHub