Première étape: définir vos objectifs / raisons
Je pense que c'est le facteur prédominant. Laquelle de ces options vous convient le mieux? (Choisissez un seul )
- Vous voulez profiter d'une tâche de codage amusante et stimulante
- Vous voulez créer un très bon moteur d'échecs
- Vous voulez en savoir plus sur le fonctionnement des moteurs d'échecs
- Vous souhaitez apprendre / pratiquer des compétences de codage
- Vous souhaitez apprendre / mettre en œuvre des concepts / théorie de l'informatique (par exemple, l'apprentissage automatique)
- (Autre)
OMI, c'est bien de "lancer une pièce" pour tout sauf 2. Pour tous les autres, vous atteindrez votre objectif, que vous choisissiez le ML ou le codage en dur. Cependant, vous voulez probablement une comparaison entre les choix pour vous aider à décider.
Le cas du codage en dur
Jouer aux échecs (en tant qu'humain) implique une réflexion logique. Vous explorez l'espace des actions possibles que vous et l'adversaire pouvez entreprendre. Cela a donné naissance à un domaine appelé théorie des jeux qui contient des cadres théoriques pour l'analyse des jeux en général.
Si vous aimez travailler avec les détails et être précis et raisonner sur les choses, cela pourrait bien fonctionner pour vous. En comparaison, l'apprentissage automatique implique beaucoup plus d'algorithmes de "boîte noire" qui sont flous et opaques. Vous ne savez pas exactement ce qui se passe.
Je pense également que vous aurez plus de facilité à "le découvrir par vous-même" si vous choisissez la voie du codage en dur plutôt que l'apprentissage automatique. Moins de copier-coller que vous ne comprenez pas complètement.
Le cas de l'apprentissage automatique
Il peut être passionnant de donner naissance à une création et de la voir prendre sa propre vie. Alors que le codage en dur est une question de précision et de détail, l'apprentissage automatique est flexible. Enlevez quelques neurones et le résultat sera probablement similaire.
Le codage en dur consiste à étudier les échecs. L'apprentissage automatique consiste à étudier la créature que vous avez créée.
Et l'apprentissage automatique est, bien sûr, un sujet très brûlant.
Choix de langue pour codé en dur
Je ne sais pas ce que vous entendez par "autres langages basés sur C". C ++ est le seul langage courant qui ressemble à C. L'avantage de C / C ++ est qu'il est rapide . Bien que d'autres langages aient rattrapé leur retard au fil des ans, le C ++ leur donne toujours une course pour leur argent.
C ++ n'est pas facile. Vous obtiendrez de grandes performances avec des langages compilés plus modernes comme Rust, Golang ou Swift. Mais cela ne devrait pas être bien pire si vous optez pour un langage JIT. Par exemple, n'utilisez pas l'interpréteur CPython ; utilisez IronPython ou Jython, ou Node, ou C # ou Java.
La programmation GPU nécessite une approche différente et je déconseille à ce stade.
Choix de la langue pour l'apprentissage automatique
Le problème avec TensorFlow est qu'il est de très bas niveau. Il s'agit davantage d'écrire des algorithmes de calcul des nombres (qui peuvent être développés sur du matériel parallèle) que d'une interface dédiée à l'apprentissage automatique.
Bien sûr, cela peut être une excellente expérience d'apprentissage! Et vaut certainement la peine d'apprendre aujourd'hui. Cependant, vous voudrez peut-être commencer par Keras ou PyTorch.