Primeiro passo: defina seus objetivos / razões
Eu acho que esse é o fator predominante. Qual destes se encaixa melhor em você? (Escolha apenas um )
- Você deseja desfrutar de uma tarefa de codificação divertida e desafiadora
- Você deseja criar um excelente mecanismo de xadrez
- Você quer aprender sobre como os motores de xadrez funcionam
- Você quer aprender / praticar habilidades de codificação
- Você deseja aprender / implementar conceitos / teoria de ciência da computação (por exemplo, aprendizado de máquina)
- (De outros)
Na IMO, é bom "jogar uma moeda" para qualquer coisa, exceto 2. Para todas as outras, você alcançará seu objetivo, escolhendo ML ou codificação. No entanto, você provavelmente deseja uma comparação entre as opções para ajudá-lo a decidir.
O caso da codificação embutida
Jogar xadrez (como humano) envolve pensamento lógico. Você explora o espaço de possíveis ações que você e o oponente podem executar. Isso gerou um campo chamado teoria dos jogos, que contém marcos teóricos para a análise de jogos em geral.
Se você gosta de trabalhar com detalhes, de ser específico e de raciocinar sobre as coisas, isso pode funcionar bem para você. Em comparação, o aprendizado de máquina envolve muito mais algoritmos de "caixa preta" que são confusos e opacos. Você não sabe exatamente o que está acontecendo.
Além disso, acho que você terá mais facilidade em "descobrir por conta própria" se seguir a rota de codificação embutida, em vez de aprender a máquina. Menos material de copiar e colar que você não entende completamente.
O caso do aprendizado de máquina
Pode ser emocionante dar à luz uma criação e vê-la ganhar vida própria. Embora a codificação rígida se refira à precisão e aos detalhes, o aprendizado de máquina é flexível. Tire alguns neurônios e o resultado provavelmente será semelhante.
Codificação é sobre estudar xadrez. O aprendizado de máquina é sobre o estudo da criatura que você criou.
E o aprendizado de máquina é, obviamente, um tópico muito quente.
Escolha de idioma para codificados
Não sei o que você quer dizer com "outras linguagens baseadas em C". C ++ é a única linguagem convencional que se parece com C. A vantagem do C / C ++ é que eles são rápidos . Embora outras línguas tenham se recuperado ao longo dos anos, o C ++ ainda lhes oferece uma corrida pelo seu dinheiro.
C ++ não é fácil. Você obterá um ótimo desempenho em idiomas compilados mais modernos, como Rust, Golang ou Swift. Mas não deve ser muito pior se você optar por uma linguagem JIT. Ou seja , não use o intérprete CPython ; use IronPython ou Jython, ou Node, ou C # ou Java.
A programação da GPU requer uma abordagem diferente e eu desaconselharia neste momento.
Escolha de idioma para aprendizado de máquina
O problema com o TensorFlow é que ele é de nível muito baixo. É mais sobre a escrita de algoritmos de processamento de números (que podem ser desenvolvidos em hardware paralelo) do que sobre uma interface dedicada ao aprendizado de máquina.
Obviamente, pode ser uma ótima experiência de aprendizado! E certamente vale muito a pena aprender hoje. No entanto, você pode querer começar com Keras ou PyTorch.