概要
プログラマーやシステムエンジニア等が、ある程度の実力を得た頃に思い始める、「エラーが出るって有り難い」ということについて書いていきます。
前座: 数学の証明
突然ですが皆さん、中学校・高校の数学で、証明問題は得意でしたでしょうか?
恐らくですが、答えを導出する問題よりは苦手だったという人が多いと思います。
私は大学では数学を専攻していたのですが、大学数学科では、証明問題と導出問題の難易度が逆転します。
導出問題が、答えを挙げた上に、それが答えであることを証明することになるのです。
プログラムの修正についても似たようなことが言えます。
エラーの有り難さ
一通りの機能を実装したプログラムに対して、実行結果から修正が必要だと判断するものには2パターンあると思われます。
「エラーが出て動かない」か、「動いているけども挙動がおかしい」のどちらかでしょう。
エラーが出た場合は、エラーが起きた場所と、それを呼び出した場所と……というのが表示されるので、問題が起こった場所を特定するのは、後者に比べれば、まだやりやすい方です。
一方、挙動がおかしいことの修正は、そもそもその挙動に影響している箇所の内どこがおかしいか、というのを探すところから始まります。そして、それはエラーが出たときに調べる範囲に比べてかなり広い範囲、場合によってはプログラム全体になりかねません。
このように、エラーが出るのは、まだ有り難い話なのです。