くいちがいを見つけてなおす、デバッグ
けいしょうまで来て、かなり大きなプログラムを作りました(13話)。 でも作ったプログラムは、きっと どこかで くいちがいます。 うち間ちがい一つ、はずれた思いこみ一つで じゅうぶんです。 くいちがいは失敗ではなく、いつも あることです。 それを 落ち着いて 見つけてなおすのが、デバッグです。
止まった場所を教えてくれる
プログラムが くいちがうと、
しずかに 死ぬのではなく、一つの場所で 止まります。
そして 指でさします。「ここ、この行。」
その さし示しが、いちばん 値うちのある 最初の手がかりです。
エラーは、まず「どこで」止まったかを 教えてくれます。
実行を押してみて。だんかいが じゅんに ついて、くいちがった場所で ぴたっと 止まります。
どこで止まったか、ひと目で見えますね。
つぎに、その場所に 赤い文字が 出ます。
多くの人は その文字を見ると、つい こわがります。
でも それは じつは みかたです。なぜなら…
赤い文字は、しかりではなくヒント
その赤い文字は、わたしたちを しかっているのでは ありません。
「何が わからなかったか」を 書いた メモです。
たいてい 二つ 入っています。場所(どこ)と 種るい(何)。
「これは 数字では ありません」「そんな名前は ありません」のように。
落ち着いて読む やり方さえ おぼえれば、半分は とけたのです。
メッセージの かけらを押してみて。「どこ」と「何」が べつべつに 光って ほどけます。
メッセージを「どこ」と「何」に 分けて読むと、
こわかった文字が、きゅうに 親切に 見えますね。
でも メッセージが さす場所が、いつも 本当の原因とは かぎりません。
長いプログラムなら、原因を どう はやく せばめましょう?
はんいを半分ずつ せばめる
バグが どこに あるか わからないときは、
はじめから ぜんぶ 読まず、まん中を 見ます。
ここまでは だいじょうぶ? なら バグは うしろ半分に。
ちがうなら 前半分に あります。また 半分に。
この「半分ずつ せばめ」なら、長い行でも すぐ はんにんを 見つけます。
「まん中をたしかめる」を押して。だいじょうぶ/問題で、はんいが半分に。
何回か押すと、はんいが 一か所に せばまりましたね?
全体を ぜんぶ 見なくても、はんにんを ピンと 当てました。
原因の場所を 見つけたので、つぎは なおす番です。
でも なおすとき、一つ おとし穴が あります。
一度に一つだけ かえて たしかめる
原因らしきものが 見えたからと、いちどに ぜんぶ 手を つけては いけません。
五か所を 同時に かえると、
なおっても、どれが なおしたのか わかりません。
新しい問題が 出ても、だれの せいか わからない。
だから 一つだけ かえて、実行してみて、見ます。
こうほを 一つだけ かえて「たしかめ」て。いくつも かえると、何が なおしたか ぼやけます。
一つずつ かえると、何が 本当の原因だったか はっきりします。
はんにんを 正かくに 知り、なおしました。
では もう おわり? まだ ひと足 のこっています。
「なおった気がする」と「なおった」は ちがうのです。
なおしたら、かならず もう一度 まわして たしかめる
なおした と 思うだけでは、おわりでは ありません。
もう一度 実行して、最後まで とおるのを、自分の目で 見て はじめて おわりです。
ついでに、だいじょうぶだった 別の所が こわれていないかも 見ます。
この「なおして もう一度 たしかめる」 ひとまわりが、
あて推りょうと 本当のなおしを 分ける 線です。
「もう一度 実行」を押して。なおしたプログラムが、最後まで みどりで とおります。
いま わたしたちは 作ることもでき(1〜13話)、
くいちがったとき 見つけてなおすことも できます(14話)。
でも わたしたちが 書いた この文字たちは、
どうやって 本当の機械が まわすものに なるのでしょう?
次は、その文が 機械の仕事に なる 道を たどってみます。