Othelloプログラム再び(RubyからC++へ)

そろそろ年が明けてしまいますが、決して年末で更新をサボっていたわけではありません。ちょっと悪性の風邪を引いてしまいまして、ここ1週間体調が非常に悪い状況が続いています。元気に年を越したいものですが…。

近況はさておき、記事を更新したいと思います。かなり以前にRubyでOthelloのプログラムをつくりましたが、計算速度が遅くて先読みがあまりできなかったこと、また別に今後を見据えた事情がありまして、再度C++で作り直しています。とりあえず以前作ったものと同じ動作をするバージョンをこさえてから、色々戦略を練りなおそうと考えているのですが、RubyをC++に移植するのはかなり大変でした。

とりあえず作業中のコードを散らかしておきます。

特にオブジェクト指向がらみが鬼門でした。Googleの日本語で調べた限りですと、オブジェクト指向なC++で書かれたオセロプログラムは少ないようです。計算量が必要になるので、確かにオブジェクト指向的にするとオーバーヘッドが大きいのが理由かとは思いますが、今回はあえてオブジェクト指向を意識して書いています。それというのも元のプログラムがRubyなので、オブジェクト指向を意識して書き直さないと途中で破綻をきたしそうという事情があったためです。途中でGCがとても欲しくなる病気にかかりましたが、なんとか時間を費やすことでメモリがあふれなくなりました。

なお盤面の評価関数クラスの名前があれですが、何かあったときの言い訳です(笑)

※その後、評価関数の実装が完了しました。

December 30, 2007 23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

GC使うのは反則なんですか?(素朴な疑問)

Posted by: あおき : December 30, 2007 08:10 AM

>あおきさん
GCを使うかどうか、というのは費用対効果の問題かと。パフォーマンスを手に入れるために、どの程度(デバック←笑)時間というコストを払えばいいか事前に予想が付くなら、時と場合によってGCと決別できると思います。逆に言うならプログラムの規模に応じてこのコストが不明確になるので、GCというものがあるんじゃないでしょうか。

Posted by: fenrir : December 30, 2007 09:07 AM

コメントする