Компиляция vs интерпретация кода: в чем разница?

Машинный код и переводчики

Машинный код — язык прямого взаимодействия с компьютером. Первоначально программирование в привычном понимании отсутствовало. Ранние вычислительные машины были громоздкими, дорогими и предназначались лишь для арифметических операций. Появление современного программирования связано с разработкой инструкций, понятных компьютеру и приближенных к человеческой речи. Однако первоначально это открытие не получило широкого распространения.

Код, создаваемый программистами, написан на языках программирования, отличных от машинного кода. Для выполнения кода необходим «переводчик», который не только переводит текст, но и выполняет его проверку на ошибки, лексический и синтаксический анализ, а также сохраняет результат перевода.

Компиляторы: единовременный перевод

Компилятор — транслятор, переводящий инструкции, написанные на языке программирования (или языке, близком к нему), в машинный код за один этап.

Компилятор переводит весь исходный код в машинный код единовременно. Полученный исполняемый файл может запускаться многократно без участия компилятора. Это важно, например, в военных целях, поскольку компиляция позволяет распространять программы, скрывая их исходный код.

Интерпретаторы: построчный перевод

Интерпретатор — транслятор, переводящий и выполняющий код построчно. Он не создает отдельный исполняемый файл, а выполняет код непосредственно во время работы программы. Это позволяет работать с ошибками «на лету» и упрощает распространение небольших программ, поскольку не требуется заботиться о совместимости с различными операционными системами.

Интерпретатор обеспечивает совместимость кода. Для запуска программы достаточно интерпретатора для используемой операционной системы. Пользователь может редактировать и запускать код без перекомпиляции.

Сравнение компиляторов и интерпретаторов

Компиляторы и интерпретаторы выполняют одну задачу — перевод кода в машинный, но по-разному.

Компиляторы:

  • Переводят весь код за один раз.
  • Обеспечивают более быстрое исполнение, так как код уже переведён в машинный.
  • Требуют больше времени на компиляцию.
  • Проблемы совместимости решаются на этапе компиляции.

Интерпретаторы:

  • Переводят и выполняют код построчно.
  • Обеспечивают более медленное исполнение, так как перевод происходит на каждой строке.
  • Ускоряют разработку и отладку.
  • Проблемы совместимости решаются интерпретатором во время выполнения.

Выбор между компилятором и интерпретатором зависит от проекта. Для больших проектов обычно выбирают компиляцию из-за скорости и безопасности. Для небольших программ, где важна скорость разработки и гибкость, подходит интерпретация.

Что будем искать? Например,программа