Erster Schritt: Definieren Sie Ihre Ziele / Gründe
Ich denke, das ist der vorherrschende Faktor. Welches passt am besten zu Ihnen? (Wähle nur eine )
- Sie möchten eine unterhaltsame, herausfordernde Codierungsaufgabe genießen
- Sie möchten eine extrem gute Schachengine erstellen
- Sie möchten wissen, wie Schachengines funktionieren
- Sie möchten Codierfähigkeiten erlernen / üben
- Sie wollen Informatikkonzepte / Theorie erlernen / umsetzen (zB maschinelles Lernen)
- (Andere)
IMO ist es in Ordnung, eine Münze für etwas anderes als 2 zu werfen. Für alle anderen wirst du dein Ziel erreichen, egal ob du ML oder Hardcodierung wählst. Allerdings möchten Sie wahrscheinlich einen Vergleich zwischen den Auswahlmöglichkeiten, um sich zu entscheiden.
Der Fall für die Hardcodierung
Schach spielen (als Mensch) erfordert logisches Denken. Sie erkunden den Raum möglicher Aktionen, die Sie und der Gegner ausführen können. Dies hat ein Feld hervorgebracht, das als Spieltheorie bezeichnet wird und theoretische Rahmenbedingungen für die Analyse von Spielen im Allgemeinen enthält.
Wenn Sie Spaß daran haben, mit Details zu arbeiten, spezifisch zu sein und über Dinge nachzudenken, könnte dies für Sie gut funktionieren. Im Vergleich dazu beinhaltet maschinelles Lernen viel mehr "Black-Box" -Algorithmen, die unscharf und undurchsichtig sind. Sie wissen nicht genau, was los ist.
Ich gehe auch davon aus, dass Sie es leichter haben werden, "es selbst herauszufinden", wenn Sie sich für die Hardcodierung entscheiden, anstatt maschinell zu lernen. Weniger Copy-Paste-Sachen, die Sie nicht vollständig verstehen.
Der Fall für maschinelles Lernen
Es kann aufregend sein, eine Kreation zu gebären und zu beobachten, wie sie ein Eigenleben aufnimmt. Während bei der Hardcodierung Präzision und Detailgenauigkeit im Vordergrund stehen, ist das maschinelle Lernen flexibel. Nehmen Sie einige Neuronen weg und das Ergebnis wird wahrscheinlich ähnlich sein.
Beim Hardcodieren geht es darum, Schach zu lernen. Beim maschinellen Lernen geht es darum, die Kreatur zu studieren, die Sie erstellt haben.
Und maschinelles Lernen ist natürlich ein sehr heißes Thema.
Sprachauswahl für Hardcodierung
Ich bin mir nicht sicher, was Sie mit "anderen C-basierten Sprachen" meinen. C ++ ist die einzige Standardsprache, die C ähnelt. Der Vorteil von C / C ++ ist, dass sie schnell sind . Obwohl andere Sprachen im Laufe der Jahre aufgeholt haben, gibt C ++ ihnen immer noch einen Lauf um ihr Geld.
C ++ ist nicht einfach. Mit moderneren kompilierten Sprachen wie Rust, Golang oder Swift werden Sie großartige Leistungen erzielen. Aber es sollte nicht viel schlimmer sein, wenn Sie sich für eine JIT-Sprache entscheiden. Dh nicht die CPython Interpreter verwenden ; Verwenden Sie IronPython oder Jython oder Node oder C # oder Java.
Die GPU-Programmierung erfordert einen anderen Ansatz und ich würde an dieser Stelle davon abraten.
Sprachwahl für maschinelles Lernen
Das Problem mit TensorFlow ist, dass es sehr niedrig ist. Es geht mehr um das Schreiben von Algorithmen zum Knacken von Zahlen (die auf parallele Hardware übertragen werden können) als um eine Schnittstelle, die dem maschinellen Lernen gewidmet ist.
Natürlich kann es eine großartige Lernerfahrung sein! Und es lohnt sich auf jeden Fall, heute zu lernen. Möglicherweise möchten Sie jedoch mit Keras oder PyTorch beginnen.