Время компиляции

Материал из Циклопедии
Перейти к навигации Перейти к поиску

В информатике, к понятию времени компиляции могут относиться либо операции, проводимые компилятором и относящиеся к требованиям языка программирования (исходный код должен соответствовать правилам языка для того, чтобы успешно компилироваться), либо это свойства программы, которые могут быть выяснены в ходе компиляции. Ко времени компиляции относится время в течение которого, выражения написанные на любом языке программирования проверяются на ошибки.

Обзор[править]

Операции, выполняемые во время компиляции, как правило, включают в себя синтаксический анализ, различные виды семантического анализа (например, проверки типов и инстанцирования шаблона) и генерации кода.

Правила языка программирования, как правило устанавливают требования времени компиляции, которым исходный код должен удовлетворять, чтобы быть успешно скомпилированным. Например, в языке может существовать строгое правило, что количество места (в байтах) требуемого для хранения типов и переменных должно быть вычислимым.

Свойства программ, которые могут быть выяснены во время компиляции, это например:

  • Проверка границ масивов (например, доказательством того, что индекс массива не будет выходить за границы массива)
  • Отсутствие взаимных блокировок в параллельных языках
  • Тайминги (например, доказательство, что определенный код выполняется не дольше отведенного времени)

Время компиляции происходит раньше времени компоновки (когда вывод одного или нескольких скомпилированных файлов объединяется вместе) и раньше времени выполнения (когда программа будет исполнена). В некоторых языках программирования может быть необходимо чтобы часть компиляции или компоновки происходила во время выполнения. Существует компромисс между временем компиляции и временем компоновки, состоящий в том, что многие операции времени компиляции могут быть отложены до времени компоновки без дополнительных временных трат.

«Время компиляции» может также относиться к фактическому количеству времени, необходимому для компиляции.

См. также[править]