| English | 意味 |
|---|---|
| bug/bʌɡ/ | バグ |
| debugging/ˈdiːbʌɡɪŋ/ | デバッグ |
| syntax error/ˈsɪntæks ˈerə/ | 構文エラー |
| logic error/ˈlɒdʒɪk ˈerə/ | 論理エラー |
| runtime error/ˈrʌntaɪm ˈerə/ | 実行時エラー |
| overflow error/ˌəʊvəˈfləʊ ˈerə/ | オーバーフローエラー |
| edge case/edʒ keɪs/ | エッジケース |
| expected output/ekˈspektɪd ˈaʊtpʊt/ | 期待される出力 |
すべてのプログラムにはバグがある
- チームがいくら慎重であっても、プログラムには間違いが含まれています。
- プログラム内の間違いをバグと呼びます。
- バグを見つけ、直すことをデバッグといいます。
- 高度なデバッグ能力は、プログラマーが身につける最も価値のあるスキルの一つです。
どのような種類のエラーか?
構文エラーはプログラムの実行を停止させます;ロジックエラーは実行されますが正しくない答えを出します;ランタイムエラーは途中まで実行中にクラッシュさせます;オーバーフローエラーはストレージを超えます。
プログラム内の間違いを見つけ修正する作業を______と呼ぶ。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
ミスはバグであり、バグを修正することをデバッグという。
プログラムの実行を止める欠けた括弧は次のようなものである:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
言語のルールに違反すると構文エラーになります。
なぜ論理エラーは最も見つけにくいのでしょうか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
目に見える故障がないため、出力を期待値と比較する必要があります。
エラーの主な種類
- 構文エラーは言語のルールに違反するもので(括弧の欠落など)、プログラムの実行を拒否します。
- ロジックエラーは実行されますが、指示が計画と一致しないため間違った結果を出力します。
- ランタイムエラーは、実行中にプログラムをクラッシュさせます(ゼロ除算などが該当)。
- オーバーフローエラーは、値が格納スペースを超えて大きくなるときに発生します。
エッジケース(空の入力、非常に大きな数値)でのテストは、隠れたバグを見つけるのに役立ちます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
バグはしばしばプログラムが想定する範囲の限界に隠れています。
テストでバグを見付けるには、実際の出力と次のものを比較します:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
実際の出力と期待される出力の不一致は、バグを示唆します。
見つけ方
- 多くの入力でテストします。異常な入力(非常に大きい数や空の入力)や、限界におけるエッジケースを含めます。
- 実際の出力と期待される出力を比較します。違いがあれば、そこにバグがあります。
- 内部値を確認するために一時的なprint文を追加し、どこから誤りが生じるかを探します。
- 分割して確認します。ある部分が正しいことを確認し、残りの範囲を絞り込みます。
バグを修正した後、修正が新たなバグを生む可能性があるため、プログラム全体を再テストすべきです。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
慎重な再テストこそが、ソフトウェアを信頼できるものにするものです。
修正後、再度テストする
- ロジックエラーは最も難しいです。明らかに「壊れて」いないのに、答えだけが間違っています。
- 一つのバグを直すと、別のバグを生むことがあります。
- したがって、すべての修正後に、プログラム全体を再テストする必要があります。
- 丁寧かつ繰り返しのテストによって、粗いプロトタイプが信頼できるソフトウェアになります。
「動いた」ことと「正しい」ことは別物です。 ロジックエラーはクラッシュもメッセージも出ずに動作しますが、プログラムは正常に見えますが答えは間違っています。これを見抜く唯一の方法は、単に動作したかを確認するだけでなく、出力を期待通りと比較することです。
バグは間違いであり、それを直すことがデバッグです。構文エラーは実行を止め、ロジックエラーは実行するものの正しくない答えを出し、ランタイムエラーは途中まで executing してクラッシュさせ、オーバーフローエラーは格納容量を超えます。バグは多くの入力(特にエッジケース)を期待される出力と比較することで発見し、修正後は必ず再テストを行います。