将棋のプロがコンピュータに負けたようにエンジニアがコンピュータに負ける時代が来るのか?
100%自動生成ネタから派生したふつーの人っぽい発言を見て考えたこと
将棋のアルゴリズムというかアプローチ
定石を大量に集めて、コンピュータの計算能力で最適と思われる解を作り出す
っていうのが将棋のアルゴリズムの勝ちパターンなハズ。
ここでのポイントは
- オリジナルは大量の定石
- その組み合わせをコンピュータが大量の計算で頑張ること
- 結果がコンピュータに判断できること(これが無いと計算結果の有効具合が判断できない)
そのままプログラミングに適用するとどうなるか?
まずは比較的単純なプログラミングの場合で、大量の定石がなんらかの形で集まってるとする
その状況下でも、組み合わせ結果をコンピュータが正しいことを判断できなければ意味が無い
すなわち、結果の正当性をどうやって確認するのかがポイントになる
そこで思い出すTDD
まずはテストを書く
コンピュータがそのテストに適合する定石を見つけ出し、組み合わせテストを通す
更にテストを追加する
すると、さらにコンピュータがそのテストに適合する定石を見つけ出し、組み合わせテストを通す
くりかえす
うーんなんかうまくいきそうな気がする(誇張)
本当に作れるか?
現時点ででいうと、100%の自動生成は非現実的だとおもう
ただし、ある程度なら自動生成は出来る気がする。最大の課題は定石なんだけどね
ということで、作ってみたいw