Первый шаг: определите свои цели / причины
Я думаю, что это преобладающий фактор. Какой из них лучше всего подходит вам? (Выберите только один )
- Вы хотите получить удовольствие от увлекательной задачи по программированию
- Вы хотите создать очень хороший шахматный движок
- Вы хотите узнать о том, как работают шахматные движки
- Вы хотите изучать / практиковать навыки кодирования
- Вы хотите изучить / реализовать концепции / теорию информатики (например, машинное обучение)
- (Другой)
ИМО - это «бросить монетку» за все, кроме 2. Для всех остальных вы достигнете своей цели, выберете ли вы ML или жесткое кодирование. Однако вы, вероятно, хотите сравнение между вариантами, чтобы помочь вам принять решение.
Чехол для жесткого кодирования
Игра в шахматы (как человек) предполагает логическое мышление. Вы исследуете пространство возможных действий, которые вы и противник можете предпринять. Это породило область, называемую теорией игр, которая содержит теоретические основы для анализа игр в целом.
Если вам нравится работать с деталями и быть конкретным и рассуждать о вещах, то это может сработать для вас. Для сравнения, машинное обучение включает в себя гораздо больше алгоритмов «черного ящика», которые являются нечеткими и непрозрачными. Вы не знаете точно, что происходит.
Кроме того, я полагаю, вам будет легче "выяснить это самостоятельно", если вы пойдете по пути жесткого программирования, а не по машинному обучению. Меньше копирующего материала, который вы не до конца понимаете.
Кейс для машинного обучения
Может быть захватывающим родить создание и наблюдать, как оно берет свою собственную жизнь. В то время как жесткое программирование - это точность и детализация, машинное обучение является гибким. Уберите несколько нейронов, и результат, вероятно, будет похожим.
Жесткое программирование - это изучение шахмат. Машинное обучение - это изучение созданного вами существа.
И машинное обучение, конечно, очень горячая тема.
Выбор языка для жестко запрограммированных
Я не уверен, что вы подразумеваете под "другими языками на основе Си". C ++ - единственный основной язык, похожий на C. Преимущество C / C ++ в том, что они быстрые . Несмотря на то, что другие языки догнали за эти годы, C ++ по-прежнему дает им возможность заработать деньги.
С ++ не так просто. Вы получите отличную производительность от более современных скомпилированных языков, таких как Rust, Golang или Swift. Но это не должно быть намного хуже, если вы выбираете язык JIT. Т.е. не используйте интерпретатор CPython ; используйте IronPython или Jython, или Node, или C # или Java.
Программирование на GPU требует другого подхода, и я бы посоветовал против этого на данном этапе.
Выбор языка для машинного обучения
Проблема с TensorFlow в том, что он очень низкого уровня. Речь идет больше о написании алгоритмов сжатия чисел (которые можно перенести на параллельное оборудование), чем об интерфейсе, предназначенном для машинного обучения.
Конечно, это может быть отличным опытом обучения! И, безусловно, очень стоит учиться сегодня. Однако вы можете начать с Keras или PyTorch.