デバッグはかっこ悪い,テストはクールだというけれど

最近,プログラミングにおいては,テストを書いて,そのテストを通るコードを書いていくことで開発を進めていく”てすとどりぶんでべろっぷめんと”というのが流行っているらしい.

僕も流行りに乗ってTDDしたいのだが,どうやったら良いかわからない.というのも,機械学習のプログラムとか書いていて,どうやってテストしたら良いのだという関数が結構多い.WEB+DBプレスで初心者向けの特集があったが,この関数はこの入力の時はこういう値が返って欲しいとかそういうのは簡単だけど,そうでも無いときが結構多くて大変だと思う.人間が良くわからないから機械に勝手に計算してもらうのが機械学習なわけだし.

まあ,こういうこと言ってる時点で的外れなんだろうなあ.

最近,自分で作っているプログラムのリファクタリングをしたときに結構大変だったので,TDDいいなあと思った次第.

しかし,既存のツールがあるようなアルゴリズムの場合は比較すれば正しいかどうかはわかるが,自分で考えたような新しいアルゴリズムの場合,その正しさはどうやって示せば良いのだろう.

なんかうまく動いてるからできた!というのでは心許ない.機械学習系の場合は経験上すこしでも間違ってると全然うまくいかないので,それでもそれなりに良いのかもしれないが.