Primer paso: define tus objetivos / razones
Creo que este es el factor predominante. ¿Cuál de estos te queda mejor? (Elija solo uno )
- Desea disfrutar de una tarea de codificación divertida y desafiante
- Quieres crear un motor de ajedrez extremadamente bueno
- Quieres aprender sobre cómo funcionan los motores de ajedrez
- Desea aprender / practicar habilidades de codificación
- Desea aprender / implementar conceptos / teoría de la informática (por ejemplo, aprendizaje automático)
- (Otro)
En mi opinión, está bien "tirar una moneda" para cualquier cosa, excepto 2. Para todos los demás, cumplirá su objetivo, ya sea que elija ML o codificación. Sin embargo, es probable que desee una comparación entre las opciones para ayudarlo a decidir.
El caso de la codificación rígida
Jugar al ajedrez (como humano) implica un pensamiento lógico. Exploras el espacio de posibles acciones que tú y el oponente pueden tomar. Esto ha generado un campo llamado teoría de juegos que contiene marcos teóricos para analizar juegos en general.
Si le gusta trabajar con detalles y ser específico y razonar sobre las cosas, esto podría funcionar bien para usted. En comparación, el aprendizaje automático implica muchos más algoritmos de "recuadro negro" que son difusos y opacos. No sabes exactamente lo que está pasando.
Además, creo que será más fácil "resolverlo por su cuenta" si sigue la ruta de codificación en lugar del aprendizaje automático. Menos cosas de copiar y pegar que no entiendes completamente.
El caso del aprendizaje automático
Puede ser emocionante dar a luz una creación y verla cobrar vida propia. Si bien la codificación rígida se trata de precisión y detalle, el aprendizaje automático es flexible. Quite algunas neuronas y el resultado probablemente será similar.
La codificación dura se trata de estudiar ajedrez. El aprendizaje automático se trata de estudiar la criatura que has creado.
Y el aprendizaje automático es, por supuesto, un tema muy candente.
Elección de idioma para codificados
No estoy seguro de lo que quiere decir con "otros lenguajes basados en C". C ++ es el único lenguaje principal que se parece a C. La ventaja de C / C ++ es que son rápidos . Aunque otros lenguajes se han puesto al día a lo largo de los años, C ++ todavía les da una oportunidad por su dinero.
C ++ no es fácil. Obtendrá un excelente rendimiento de los lenguajes compilados más modernos como Rust, Golang o Swift. Pero no debería ser mucho peor si optas por un lenguaje JIT. Es decir , no utilizo el intérprete CPython ; use IronPython o Jython, o Node, o C # o Java.
La programación de GPU requiere un enfoque diferente y recomendaría no hacerlo en este momento.
Elección de idioma para el aprendizaje automático
El problema con TensorFlow es que es de muy bajo nivel. Se trata más de escribir algoritmos de cálculo numérico (que se pueden utilizar en hardware paralelo) que de una interfaz dedicada al aprendizaje automático.
¡Por supuesto, puede ser una gran experiencia de aprendizaje! Y ciertamente vale la pena aprender hoy. Sin embargo, es posible que desee comenzar con Keras o PyTorch.