コンパイル時
プログラムの実行 |
---|
一般的な概念 |
コードの種類 |
コンパイル戦略 |
有名なランタイム |
|
有名なコンパイラとツールチェーン |
|
コンパイル時 (英: compile time)とは、計算機科学では、コンパイラによって実行される操作("コンパイル時操作")、正常にコンパイルされるためにソースコードが満たす必要のあるプログラミング言語要件("コンパイル時要件")、またはコンパイル中に推論できるプログラムのプロパティのいずれかを指す。コンパイル時は、プログラミングコードがマシンコード(バイナリコード)に変換される段階のことで、通常はランタイムの前に発生する。
コンパイル時/アーリーバインディングvs実行時
[編集]実行モデルは、コンパイル時の段階で決定される。実行と割り当ての方法は、実行時に設定され、実行時の動的性に基づいている。
概要
[編集]コンパイル時に実行される操作には、通常、構文解析、さまざまな種類のセマンティック解析(たとえば、型チェックとテンプレートのインスタンス化)、およびコード生成が含まれる。
プログラミング言語の定義は通常、正常にコンパイルされるためにソースコードが満たさなければならないコンパイル時の要件を指定する。たとえば、言語では、型と変数に必要な記憶域の大きさを推定できる。
コンパイル時に推論できるプログラムのプロパティには、範囲チェック(たとえば、配列インデックスが配列の境界を超えないことの確認)、並行言語でデッドロックしないこと、またはタイミング(たとえば、コードのシーケンスが割り当てられた時間以上かからないことの検証)が含まれる。
コンパイル時は、リンク時(1つ以上のコンパイル済みファイルの出力が結合される段階)およびランタイム(プログラムが実行される段階)の前に発生する。一部のプログラミング言語では、実行時にコンパイルとリンクを実行する必要がある。コンパイル時とリンク時の間にはトレードオフがあり、多くのコンパイル時の操作は、余分な実行時間を発生させることなくリンク時まで延期できる。