コンパイル時
コンパイル時に実行される操作には、通常、構文解析、さまざまな種類のセマンティック解析(たとえば、型チェックとテンプレートのインスタンス化)、およびコード生成が含まれる。
プログラミング言語の定義は通常、正常にコンパイルされるためにソースコードが満たさなければならないコンパイル時の要件を指定する。たとえば、言語では、型と変数に必要な記憶域の大きさを推定できる。
コンパイル時に推論できるプログラムのプロパティには、範囲チェック(たとえば、配列インデックスが配列の境界を超えないことの確認)、並行言語でデッドロックしないこと、またはタイミング(たとえば、コードのシーケンスが割り当てられた時間以上かからないことの検証)が含まれる。
コンパイル時は、リンク時(1つ以上のコンパイル済みファイルの出力が結合される段階)およびランタイム(プログラムが実行される段階)の前に発生する。一部のプログラミング言語では、実行時にコンパイルとリンクを実行する必要がある。コンパイル時とリンク時の間にはトレードオフがあり、多くのコンパイル時の操作は、余分な実行時間を発生させることなくリンク時まで延期できる。