Компилятор против интерпретатора: полная разница между компилятором и интерпретатором

Содержание:

Anonim

Что такое компилятор?

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

Компилятор должен соответствовать правилу синтаксиса того языка программирования, на котором он написан. Однако компилятор - это всего лишь программа и не может исправить ошибки, обнаруженные в этой программе. Итак, если вы допустили ошибку, вам нужно внести изменения в синтаксис вашей программы. В противном случае он не будет компилироваться.

Что такое переводчик?

Интерпретатор - это компьютерная программа, которая включает каждый оператор программы высокого уровня в машинный код. Это включает исходный код, предварительно скомпилированный код и сценарии. И компилятор, и интерпретаторы выполняют одну и ту же работу - конвертируют язык программирования более высокого уровня в машинный код. Однако компилятор преобразует код в машинный код (создает exe) перед запуском программы. Интерпретаторы преобразуют код в машинный код при запуске программы.

КЛЮЧЕВАЯ РАЗНИЦА

  • Компилятор преобразует код, написанный на языке программирования высокого уровня, в машинный код сразу, перед запуском программы, тогда как интерпретатор переводит каждый оператор программы высокого уровня один за другим в машинный код во время выполнения программы.
  • Скомпилированный код работает быстрее, а интерпретируемый код - медленнее.
  • Компилятор отображает все ошибки после компиляции, с другой стороны, Интерпретатор отображает ошибки каждой строки одну за другой.
  • Компилятор основан на модели связывания-загрузки трансляции, тогда как интерпретатор основан на методе интерпретации.
  • Компилятор принимает всю программу, а интерпретатор - одну строку кода.

Разница между компилятором и интерпретатором

Основание различия Компилятор Устный переводчик
Шаги программирования
  • Создайте программу.
  • Compile проанализирует или проанализирует все операторы языка на предмет их правильности. Если неверно, выдает ошибку
  • Если ошибок нет, компилятор преобразует исходный код в машинный код.
  • Он связывает разные файлы кода в исполняемую программу (известную как exe).
  • Запустить программу
  • Создать программу
  • Без связывания файлов или генерации машинного кода
  • Исходные операторы выполняются построчно ВО ВРЕМЯ выполнения
Преимущество Программный код уже переведен в машинный код. Таким образом, время выполнения кода меньше. Переводчиками проще пользоваться, особенно новичкам.
Недостаток Вы не можете изменить программу, не вернувшись к исходному коду. Интерпретируемые программы могут работать на компьютерах с соответствующим интерпретатором.
Машинный код Хранить машинный язык как машинный код на диске Никакого сохранения машинного кода.
Продолжительность Скомпилированный код работает быстрее Интерпретируемый код работает медленнее
Модель Он основан на языковой модели перевода ссылок-загрузки. Он основан на методе интерпретации.
Генерация программы Создает программу вывода (в виде exe), которую можно запускать независимо от исходной программы. Не генерировать программу вывода. Таким образом, они оценивают исходную программу каждый раз во время выполнения.
Исполнение Выполнение программы отделено от компиляции. Он выполняется только после того, как вся программа вывода скомпилирована. Выполнение программы является частью процесса интерпретации, поэтому оно выполняется построчно.
Требования к памяти Целевая программа выполняется независимо и не требует наличия компилятора в памяти. Во время устного перевода переводчик существует в памяти.
Лучше всего подходит для Ограничено конкретной целевой машиной и не может быть перенесено. C и C ++ - самые популярные языки программирования, использующие модель компиляции. Для веб-сред, где важно время загрузки. Из-за того, что выполнен исчерпывающий анализ, компиляции требуется относительно больше времени для компиляции даже небольшого кода, который нельзя запускать несколько раз. В таких случаях лучше переводчики.
Оптимизация кода Компилятор видит весь код заранее. Следовательно, они выполняют множество оптимизаций, которые ускоряют работу кода. Интерпретаторы видят код построчно, поэтому оптимизации не так надежны, как компиляторы.
Динамический набор текста Сложно реализовать, поскольку компиляторы не могут предсказать, что произойдет во время очереди. Переводимые языки поддерживают динамический ввод
использование Лучше всего подходит для производственной среды. Он лучше всего подходит для программы и среды разработки.
Выполнение ошибки Компилятор отображает все ошибки и предупреждения во время компиляции. Следовательно, вы не можете запустить программу без исправления ошибок. Интерпретатор читает один оператор и показывает ошибку, если таковая имеется. Вы должны исправить ошибку, чтобы интерпретировать следующую строку.
Вход Требуется целая программа Требуется всего одна строчка кода.
Выход Compliers генерирует промежуточный код machnie. Интерпретатор никогда не генерирует какой-либо промежуточный мачный код.
Ошибки Отображать все ошибки после компиляции одновременно. Отображает все ошибки каждой строки одну за другой.
Соответствующие языки программирования C, C ++, C #, Scala, Java используют компилятор. PHP, Perl, Ruby используют интерпретатор.

Роль компилятора

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

Роль переводчика

  • Интерпретатор преобразует исходный код построчно во время RUN Time.
  • Interpret полностью переводит программу, написанную на языке высокого уровня, на язык машинного уровня.
  • Интерпретатор позволяет оценивать и изменять программу во время ее выполнения.
  • Относительно меньше времени, затрачиваемого на анализ и обработку программы
  • Выполнение программы относительно медленное по сравнению с компилятором

ЯЗЫКИ ВЫСОКОГО УРОВНЯ

Языки высокого уровня, такие как C, C ++, JAVA и т. Д., Очень близки к английскому. Это упрощает процесс программирования. Однако перед выполнением его необходимо перевести на машинный язык. Этот процесс перевода выполняется либо компилятором, либо интерпретатором. Также известен как исходный код.

МАШИННЫЙ КОД

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

КОД ОБЪЕКТА

При компиляции исходного кода машинный код, сгенерированный для разных процессоров, таких как Intel, AMD, ARM, отличается. tЧтобы сделать код переносимым, исходный код сначала преобразуется в объектный код. Это промежуточный код (похожий на машинный код), который не поймет ни один процессор. Во время выполнения объектный код преобразуется в машинный код базовой платформы.

Java компилируется и интерпретируется.

Чтобы использовать относительные преимущества компиляторов, интерпретаторы некоторых языков программирования, таких как Java, компилируются и интерпретируются. Сам код Java компилируется в объектный код. Во время выполнения JVM интерпретирует объектный код в машинный код целевого компьютера.