🔍 人間がコンピュータになる訓練
🎯 バグの原因を絞り込む手順(再現→範囲を狭める→仮説→1つずつ検証)を身につける
プログラムが思い通りに動かない。これは失敗ではなく、通常運転です。プロでも1日に何度も起こります。違うのは、その後の動き方です。
バグとは何か
バグとは、プログラムが期待と違う動きをすることです。ここで一つ、大事な確認を。
プログラムは、あなたが思った通りには動きません。書いた通りに動きます。
つまりバグがあるとき、機械は正常です。ずれているのは、頭の中の想定と、実際に書いた文字のほうです。これをデバッグ(虫取り)と呼びます。
やってはいけないこと
まず、やりがちな失敗から。
正しい手順は4つ
範囲を狭めるは、二分探索でやる
前のトラックで学んだ「半分に割る」がここで効きます。
プログラムの真ん中あたりで、変数の値を表示させてみます。そこまで正しければ、バグは後半にあります。おかしければ前半です。これを繰り返せば、100行のプログラムでも7回ほどで原因の行にたどり着きます。
トレース表と組み合わせる
狭められたら、その範囲を紙の上でトレースします。そして、実際の実行結果と突き合わせます。
この「最初に食い違った行」を見つけたら、勝ちです。第3トラックでトレース表を練習してきたのは、この瞬間のためだと言ってもいいくらいです。
バグには3つの種類がある
種類が分かると、探し方も決まります。
3つ目には、機械は何も言ってくれません。だからトレース表が要るのです。「動いているのに間違っている」を見つけられる道具は、今のところ人間の目と表しかありません。
記録を残す
試したことと結果は、必ずメモしてください。「これを試した→変わらなかった」の積み重ねが、犯人を追い詰めます。記録がないと、同じことを3回試して、3回とも気づかない、という事態が普通に起こります。
プログラムに含まれる誤りのこと。意図した動きと実際の動きがずれている状態を指し、プログラミングにつきものの現象として扱われる。「虫」を意味する言葉が由来とされ、古くから使われてきたプログラミング用語。
プログラムに潜むバグを見つけて直す作業のこと。「なぜ期待通りに動かないのか」を仮説と検証で突き止めていく、地道だが重要な作業。「バグ(虫)を取り除く」という言葉の成り立ちがそのまま作業内容を表している。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。