コンテンツ
コンピュータプログラムのしくみは、プログラマの仕事を信頼する一般的なユーザーにとっては謎です。プログラマーは、他の概念に加えて、コンピューターが2つの実行ステップ(コンパイル時間と実行時間)でコマンドを受け取る方法を理解する必要があります。
ビルド時間
プログラムを実行する最初の段階であるコンパイル時間には、人間が理解できる言語、つまり「ソースコード」を、コンピュータが理解できる言語、つまり「マシンコード」に翻訳することが含まれます。ソースコードには、認識できる単語、10進数形式の数値、および命令の流れを理解しやすくするための体系的な構造が含まれています。新しいプログラムが実行可能ファイルになると、コンパイルタイムステップが完了します。
ランタイム
コンピュータは、コンパイル時に生成された命令を使用してプログラムを実行します。ランタイム中に、コンピューターはソースコードの変換を読み取り、プログラマーが組み込んだタスクを実行します。誰かがプログラムを実行するたびに、実行時に実行します。
差
プログラムを変更する必要がない限り、ソースコードを実行可能ファイルに変換するためにコンパイル時間を1度だけ通過します。実行可能ファイルは、再コンパイルすることなく、何度でも呼び出すことができます。ほとんどのユーザーはランタイムのみを使用します。
コンパイル時エラー
プログラム実行の両方の段階でエラーが発生する可能性があります。コンパイル時エラーまたは構文エラーがソースコードに存在します。これらの例としては、スペルミスのコマンド、操作の順序の問題、変数のタイプの互換性のない組み合わせ、必要な要素の省略などがあります。論理的なものではなく構文上のエラーであるため、プログラマはコンパイル時のエラーを簡単に検出できます。コンパイラーは通常、コンパイル時エラーを検出し、それを解決するための説明またはヒントを提供します。コンパイラがコードから実行可能ファイルを生成する場合、プログラムにコンパイル時エラーはありません。
致命的なランタイムエラー
ランタイムエラーにより、プログラムがクラッシュして早期に終了する可能性があります。このようなエラーの例は、制限されたメモリアクセスとゼロによる除算です。 「x / y」ステートメントは構文的に正しいですが、「y」に実行時に値0が含まれている場合、プログラムは失敗します。プログラマーは、通常、特定の条件下で発生するという事実により、実行時エラーを見つけるのが難しいと感じるかもしれません。
ランタイム論理エラー
論理エラーによってプログラムが失敗することはありませんが、プログラマーが望まない方法で機能するようになります。ユーザーが希望するオプション番号を入力することを期待するオプションメニューのあるプログラムを考えてみます。ユーザーが文字を入力すると、プログラムは数値を待ち、それを数値に変換してユーザーにオプションの1つを送信します。ユーザーが無効なオプションを入力したことを通知する代わりに、何も問題がないように見えます。