Test First

すこしだけ考え方がわかった気がします。

  1. あるアルゴリズムを考える
  2. そのアルゴリズムにとって「境界」となるデータを考える。
  3. その境界をピンポイントで攻める入力と、想定される出力を用意する。
  4. 空のアルゴリズムを呼び出し、入力を与え、出力を想定値と比較するプログラムを作る。

で、プログラムができたら空にしていたアルゴリズムを埋め、すべての結果が正しくなるまで開発を続けるわけですね。
で、テスト・プログラムを残しておけば、アルゴリズムを改良したときにもそのまま正しさを検証できるわけです。
改良を「リファクタリング」と呼ぶ現代っ子に拒否反応を起こしていましたが、これは「最適化」と考えればいいわけです。まず動くコードを書く。次に最適化する。私の流儀じゃん!
ポイントはアルゴリズムごとにプログラムを残しておく事ですね。FIRとかデシメーターとかFFTを開発するたびにテストアプリをまず書けというのですね。全部TOPPERS/JSPアプリにしちゃえ!コンソールもあるし楽しそうじゃん。