Primo passo: definire i tuoi obiettivi / motivi
Penso che questo sia il fattore predominante. Quale di questi si adatta meglio a te? (Scegli solo uno )
- Vuoi goderti un'attività di codifica divertente e stimolante
- Vuoi creare un motore di scacchi estremamente buono
- Vuoi sapere come funzionano i motori di scacchi
- Vuoi imparare / esercitarti nelle abilità di programmazione
- Volete imparare / implementare concetti / teoria dell'informatica (ad es. Apprendimento automatico)
- (Altro)
IMO va bene "lanciare una moneta" per qualsiasi cosa tranne 2. Per tutti gli altri, raggiungerai il tuo obiettivo sia che tu scelga ML o hard-coding. Tuttavia, probabilmente vorrai un confronto tra le scelte che ti aiuteranno a decidere.
Il caso della codifica rigida
Giocare a scacchi (come un essere umano) implica un pensiero logico. Esplora lo spazio di possibili azioni che tu e l'avversario potete compiere. Ciò ha generato un campo chiamato teoria dei giochi che contiene quadri teorici per l'analisi dei giochi in generale.
Se ti piace lavorare con i dettagli, essere specifico e ragionare sulle cose, questo potrebbe funzionare bene per te. In confronto, l'apprendimento automatico implica molti più algoritmi "black box" che sono sfocati e opachi. Non sai esattamente cosa sta succedendo.
Inoltre, credo che avrai un tempo più facile "capendolo da solo" se segui il percorso di codifica hard piuttosto che l'apprendimento automatico. Meno cose da incollare che non capisci completamente.
Il caso dell'apprendimento automatico
Può essere eccitante dare alla luce una creazione e vederla assumere una vita propria. Mentre l'hard-coding è sinonimo di precisione e dettaglio, l'apprendimento automatico è flessibile. Porta via alcuni neuroni e il risultato sarà probabilmente simile.
La codifica dura riguarda lo studio degli scacchi. L'apprendimento automatico riguarda lo studio della creatura che hai creato.
E l'apprendimento automatico è, ovviamente, un argomento molto caldo.
Scelta della lingua per hard-coded
Non sono sicuro di cosa intendi per "altri linguaggi basati su C". C ++ è l'unico linguaggio tradizionale che assomiglia a C. Il vantaggio di C / C ++ è che sono veloci . Anche se nel corso degli anni altre lingue hanno recuperato terreno, il C ++ offre comunque una possibilità per i loro soldi.
C ++ non è facile. Otterrai grandi prestazioni da linguaggi compilati più moderni come Rust, Golang o Swift. Ma non dovrebbe essere molto peggio se scegli una lingua JIT. Cioè non usare l'interprete CPython ; usa IronPython o Jython, o Node, o C # o Java.
La programmazione della GPU richiede un approccio diverso e, a questo punto, mi sconsiglio.
Scelta della lingua per l'apprendimento automatico
Il problema con TensorFlow è che è di livello molto basso. Si tratta più di scrivere algoritmi di analisi dei numeri (che possono essere trasferiti su hardware parallelo) che di un'interfaccia dedicata all'apprendimento automatico.
Certo, può essere un'ottima esperienza di apprendimento! Ed è sicuramente molto utile imparare oggi. Tuttavia, potresti voler iniziare con Keras o PyTorch.