ビットボードの話。
個人的にはあまり関わるつもりはなかったが,興味次いでに調べていた。
ネット上には色々と情報があるが,適当にかき集めて自分用にきちんとノートを作るのが必要かな。非常に面白いし,CPU命令と絡んで奥が深い。
将棋は高難易度なので,まずはオセロ,次にチェスとやってから将棋のビットボードを実装すべき。個人的には10年以上前にオセロをやってたので比較的理解は早かったように思う。
で,自作のGo言語プログラムに組み込もうかと思ったんだが,現時点でSIMD関係のは直接コーディングできないらしくPEXTも使えないんじゃ面白くないなってことで,2019年3月時点では保留。(突発で実装しないとは言ってない。)
ついでの話で適当じゃないかもしれないが,高速化の類は本質ではないかもしれないが実際は結構しかも確実に強くなる。特に近いスペックで類似のソフトと戦うようになると明白である。(もちろん将棋に限らない。)
逆に言うと半端なことをしても有意義ではない。うちでは実験用のコードとして幾つか用意しているが意図的に組み入れたり組み入れなかったりしているアルゴリズムがある。小さな差の比較実験用である。小規模実験が早く終わると有り難いが,これも程度問題であるように思う。
デバッグとまでいかないが不自然な動きがあった場合に,その原因を探るところまでやってないことが多いように思う。この原因を探りやすいコードをひとつ持っておくことは非常に重要に思う。