第一步:定义您的目标/原因
我认为这是主要因素。以下哪项最适合您?(仅选择一个)
- 您想享受有趣,富有挑战性的编码任务
- 您想创建一个非常好的国际象棋引擎
- 您想了解国际象棋引擎如何工作
- 您想学习/练习编码技能
- 您想学习/实施计算机科学的概念/理论(例如机器学习)
- (其他)
IMO可以“抛硬币”(除了2以外的任何东西)是很好的。对于其他所有东西,无论选择ML还是硬编码,您都可以实现自己的目标。但是,您可能希望在选择之间进行比较以帮助您做出决定。
硬编码的情况
下棋(作为人类)涉及逻辑思维。您探索您和对手可以采取的可能行动的空间。这催生了一个称为博弈论的领域,其中包含用于分析博弈的理论框架。
如果您喜欢处理细节,并且对事物进行具体说明和推理,那么这对您来说可能会很好。相比之下,机器学习涉及更多模糊且不透明的“黑匣子”算法。您不知道到底发生了什么。
另外,我认为如果您采用硬编码而不是机器学习的方法,那么“自行解决”的时间会更轻松。减少您不太了解的复制粘贴内容。
机器学习案例
诞生一个创造并看着它活出自己的生命可能会令人兴奋。尽管硬编码是关于精度和细节的,但机器学习却很灵活。带走一些神经元,结果可能会相似。
硬编码是关于学习国际象棋的。机器学习与研究您创造的生物有关。
机器学习当然是一个非常热门的话题。
硬编码的语言选择
我不确定您所说的“其他基于C的语言”是什么意思。C ++是唯一类似于C的主流语言。C/ C ++的优点是它们速度很快。尽管其他语言已经流行了多年,但是C ++仍然为他们提供了赚钱的机会。
C ++并不容易。借助Rust,Golang或Swift等更现代的编译语言,您将获得出色的性能。但是,如果您选择JIT语言,应该不会更糟。即不要使用CPython解释器 ; 使用IronPython或Jython,或Node,或C#或Java。
GPU编程需要另一种方法,因此我建议您不要这样做。
机器学习的语言选择
TensorFlow的问题在于它是非常低级的。与编写专用于机器学习的接口有关的不仅仅是编写数字运算算法(可以将其植入并行硬件)。
当然,这可能是很棒的学习经历!今天当然非常值得学习。但是,您可能要从Keras或PyTorch开始。