Вот цитата Даниэля Ляна, автора книги «Введение в программирование на JAVA», на тему компиляции:
"Программа, написанная на языке высокого уровня, называется исходной программой или исходным кодом. Поскольку компьютер не может выполнить исходную программу, исходная программа должна быть переведена в машинный код для выполнения . Перевод может быть выполнен с помощью другого инструмента программирования, называемого интерпретатором или компилятором . " (Даниэль Лян, «Введение в программирование на JAVA» , стр. 8).
... Он продолжает ...
"Компилятор переводит весь исходный код в файл машинного кода , и файл машинного кода затем выполняется"
Когда мы вводим код высокого уровня / читабельный человеком, это, во-первых, бесполезно! Это должно быть переведено в последовательность «электронных событий» в вашем крошечном процессоре! Первый шаг к этому - компиляция.
Проще говоря: ошибка во время компиляции происходит во время этой фазы, а ошибка во время выполнения возникает позже.
Помните: если программа скомпилирована без ошибок, это не значит, что она будет работать без ошибок.
Ошибка времени выполнения будет возникать в части готовности, выполнения или ожидания жизненного цикла программ, в то время как ошибка времени компиляции будет возникать до «новой» стадии жизненного цикла.
Пример ошибки времени компиляции:
Синтаксическая ошибка - как ваш код может быть скомпилирован в инструкции машинного уровня, если они неоднозначны? Ваш код должен на 100% соответствовать синтаксическим правилам языка, иначе он не может быть скомпилирован в рабочий машинный код .
Пример ошибки времени выполнения:
Недостаточно памяти - например, вызов рекурсивной функции может привести к переполнению стека при заданной переменной определенной степени! Как это может ожидать компилятор !? это не может.
И это разница между ошибкой времени компиляции и ошибкой времени выполнения