まず、私はプロのプログラマではありませんが、プログラミングの趣味を持つ学生なので、質問がおかしいと申し訳ありません。
Webで使用するチェスエンジンを記述したいのですが、JavaScriptでの記述を開始していました。しかし周りを検索したところ、JavaScriptはこのタスクには理想的ではないことがわかりました。私はすでにJavaScriptでユーザーインターフェースを作成しており、Pythonでゲームロジックを書き換えている間はそれを維持できればよいと思います。これは可能ですか?
コメントでわかるように、pythonはすべての問題を解決するわけではありませんが、サードパーティのライブラリを使用できます。
また、いくつかのWebフレームワークを使用して、JavaスクリプトUIでWebサイトを作成できますが、Pythonロジックです。
Flask はあなたにとって良い定型文になります。
アプリには3つの個別の懸念事項があります。
ユーザーインターフェース。 Webベースの場合は、HTML + JavaScript、またはJavaScriptに効率的にコンパイルされる言語(いくつかあります)です。 UIはそれほど洗練されていない可能性が高いため(たとえば、Gmailよりもはるかに単純)、使いやすい任意のフレームワークを選択できます。
Webサーバーパーツ。この部分は、UIからHTTPリクエストを受け取り、エンジンに送信します。これもそれほど複雑ではない可能性が高く、使いやすい任意の言語で実装できます。 JavaScript(ノード)は問題ないかもしれません。無限のオプションがあります。
チェスエンジン。この部分は、動きを受け取り(あなたが便利だと考えるあらゆる形式で)、動きを生成し、ボード上の位置と時間などを維持します。そのために何が必要かは、要件、野心、手元のリソースなどに大きく依存します。そのためには、高性能で静的にコンパイルされた言語を使用してください。幅広い選択肢があります。私は頭の中で、OCaml、Go、Java、C#、Rust、D、さらにはC++の専門家であれば検討します。それらのすべては、あなたが言及したいくつかのビットレベルまでの計算を含む、効率的な計算のための良い、または少なくともまともなデータ構造を提供します。このようなタイプの並列化を可能にする計算の一部にOpenCLまたはCUDAを使用することを検討できます。
あなたが探しているすべてが概念の証明および/または研究である場合は、Pythonまたは他の簡単に検査できる動的言語がより適している可能性があります。多くのパフォーマンスは失われますが(numpy、numba、およびcythonは特定の場所で役立つ場合があります)、エンジンの内部がどのように機能するかを監視するのがはるかに簡単になります。それは間違いなくより良い次のバージョンを書くのに役立ちます。
ご覧のとおり、3つの部分はすべて比較的独立しています。私があなたがエンジンから始めて、最も粗雑なインターフェース(テキスト文字列の読み取り/書き込み)で、それを最終的にWebサーバーに配線します(これもまた、最も粗くて可能な最も単純な静的HTMLフォームです)。その後、 Nice UIで作業します。
おそらくオープンソースのチェスプログラム用の素晴らしいUIがすでにあるでしょう。多分それらの一部は、部分的または全体的に再利用できます。しかし、エンジンがなければUIは無意味です。私はそれから始めません。