開発メモ : 開発が牛歩の歩みである件

高速化のためにごちゃごちゃやっていると、1日、2日があっという間にすぎていく。丸1日かかって10行ほどの関数を書いたり、3日間、チラシの裏にボールペンで書き殴っているだけで1行もプログラムが進まなかったり、1週間かかって、結局いままで書いていたプログラムが無駄だとわかって3000行ぐらいバッサリ削除したり。


こうなると「bitboardは高速化のためではなくプログラムを簡略化するために使っている」という保木さんの言葉が身に染みてわかる。bitboardを使って高速化を考えなければ、コンピュータ将棋のプログラムはすごく楽になる。


しかし、私のようにbitboardを使って高速化しようと思うと話が全然違ってくる。bitboardを使ったプログラムを高速化するには魔法のようなビット演算の技法がいくつも必要になる。3歩進んで2歩下がるの繰り返し。いや、ここのところ私は2歩進んで3歩下がっているかも知れない。


もう本来なら私はとっくにコンピュータ将棋が完成している時期だ。それもフルスクラッチからでも4回ぐらい完成していなければおかしい。4回ぐらい完成して、いまごろ探索の改善とか詰め将棋の実装とか新しい学習メソッドを試すだとか、そこまで行ってないとおかしい。


それが、なんだ?いままだに基本的な設計すら終わらない。これが高速化の底なし沼なのか。


諸悪の元凶は、64bitに将棋盤(81bit)が収まらないことだ。レジスタが128bitなら何も考える必要がないのだが、64bitであるためにかなりトリッキーなコードや本来なら必要のない場合分けを強要される。全くもって無駄な苦労をしているような気がする。