コーディングにおける鏡みたいなものというフレーズが浮かびました。
特に情報の流れのフィードバックとして自分がPerlCGIを作る際に使い始めた初心者なりの“転ばぬ先の杖”です。


...
$a = ' 北海道 ' ;
$b = ' 沖縄県 ' ;
$c = &souryo ( $a , $b ) ;
...
sub souryo {
...
}

こんな時、次のようにします。


open ( OUT , " >cginame.dat " ) || die "open error 'cginame.dat' " ;
...
$a = ' 北海道 ' ;
$b =' 沖縄県 ' ;

print OUT "\$a = $a, \$b = $b\n\n";
print OUT " >> &souryo ( \$a , \$b )\n\n " ;

$c = &souryo ( $a , $b );
...

close OUT;
さらにサブルーチンの中は、

sub souryo {
print OUT " input : \@_ = @_\n\n";
...
print OUT " sub_souryo return $souryo >>\n\n" ;

return $souryo;
}

要は変数の中身をファイル出力するだけなのですが、順を追って詳細に中身を晒すことでデータの流れが一目瞭然です。open関数とclose関数の間でサブルーチン内も含め任意にprint OUT..を増減します。ファイルハンドル名には注意が必要です。


鏡がなくても意外と困らないだろうと考えたりする性質の自分は、複雑に膨れ上がったコードの変数の中身を思い巡らせて時間をつぶしてました。計算機を使って力技はスマートではないとはいいますが、ほかにテスト法も知らない自分としては無駄に過ぎる時間がただごとではありませんでした。


村上春樹の小説で鏡を使わずに生活を送る男が登場しますが、鏡を見ずにヒゲを剃れるようになるには苦労したんだぜなんてなことをいってました。そんなことを言われると、天邪鬼な自分は鏡なしで見事にヒゲを剃ってみたくなります。実際やってみると、無精ヒゲを綺麗に剃る程度のことなら、手触りで剃り残しが文字通り手に取るように分かるので苦労などしません。


ただ、僕には経験がないんですが、眉を手入れしたり化粧をしたりと、微調整が重要なものについては鏡の強力なフィードバックが大いに助けとなります。


実際、コーディングにおけるバグ取りなどというものは、複数の部品がつなぎ合わさった全体があって、その全体の情報の流れを整えるためにいびつな部品をたたき直したり取り替えたり、まさに微調整を要する作業だと、ノービスな僕ですが感じています。