Разница между компиляторами и интерпретаторами (с таблицей)

Оглавление:

Anonim

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

Компиляторы против интерпретатораs

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

Компиляторы сразу полностью читают исходный код и переводят его на машинный язык. C, C ++ и C # являются примерами таких. Ошибки в исходном коде будут выделены один раз после того, как компилятор проанализирует их. Грейс Хоппер дала ему имя компилятор. Это большие программы с множеством возможностей. Скомпилированные программы эффективны. Он также защищает исходный код и связанные с ним программы.

Переводчики анализируют строку за раз и переводят ее на машинный язык. Если обнаружена ошибка, интерпретатор останавливает процесс и перезапускает его только после его удаления. Поэтому удалить ошибки просто. Генерация объектного кода не требуется. Python, MATLAB, Ruby и Perl являются примерами интерпретаторов.

Таблица сравнения компиляторов и интерпретатораs

Параметры сравнения

Компиляторы

Переводчики

Функционирование Весь исходный код переводится на машинный язык и затем выполняется. Каждая строка переводится и, наконец, выполняется.
Время Меньше времени на выполнение Требуется больше времени
Обнаружение ошибок Только после того, как будет проанализирован весь исходный код Останавливается при обнаружении ошибки и возобновляется после ее исправления
Генерация объектного кода Подарок Отсутствует
Примеры С, С ++, С # Руби, Python, Perl

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

Компилятор переводит язык высокого уровня на язык процессора. В системе используется объектный код. Следовательно, все вводимые данные должны быть переведены на их язык. Здесь в действие вступает компилятор. Он преобразует полученный исходный код в язык программирования компьютера. Компьютер использует двоичный язык для работы. Так что инструкции должны быть на одном языке.

Этот процесс известен как компиляция. Он состоит из нескольких шагов. Начиная с анализа, когда компилятор понимает исходный код, чтобы преобразовать его, и действовать - это быстрый процесс. В анализе есть три подэтапа: изначально собирательный смысл формируется с помощью линейного анализа. Во-вторых, иерархический анализ разделяет коллективные смысловые группы, называемые токенами, и, наконец, семантический анализ гарантирует, что исходный код имеет значение.

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

Есть три типа компиляторов. Эта классификация основана на более широком смысле. Однопроходные компиляторы напрямую переводят исходный код в машинный код. Двухпроходный компилятор состоит из двух частей, которые называются передняя и задняя части. Последний тип - это многопроходный компилятор, многократно обрабатывающий язык ввода. Кросс-компиляторы, компилятор многопоточного кода, JIT-компилятор, компилятор load and go и инкрементный компилятор - это некоторые другие типы компиляторов.

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

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

Интерпретатор использует определенные стратегии для выполнения своих функций. Он может синтаксически анализировать входной язык, такой как язык программирования Lisp, или переводить его в промежуточное представление как Python, или выполнять инструкции, полученные из предварительно скомпилированного кода в системе, например UCSD Pascal. Используется любая из трех стратегий.

Программы вставляются раньше, и интерпретатор подключается для выполнения функций. Некоторые системы объединяют две стратегии для выполнения таких функций, как Java. Системы перевода могут выполнять работу по переводу, аналогичную компиляторам. Есть разные типы переводчиков. Интерпретаторы байт-кода, которые преобразуют исходный код в байт-код и выполняют его. Потоковые интерпретаторы кода используют указатели. Интерпретаторы-самоучители интерпретируют сами себя. Интерпретаторы абстрактного синтаксического дерева изменяют исходный код на AST и выполняют его.

Основные различия между компиляторами и интерпретаторомs

Вывод

И у компиляторов, и у интерпретаторов есть свои преимущества и недостатки. Компиляторам требуется меньше времени для выполнения программы, но они продвинуты. Внесение изменений в исходный код возможно только после полного анализа программы в компиляторах. Это затрудняет обнаружение и исправление ошибок. Хотя переводчикам требуется слишком много времени, исправить ошибки проще. Его могут использовать даже новички. Динамическая типизация применима для интерпретируемого языка. Это очень полезно для программирования и разработки. Компиляторы могут хорошо работать в производственной среде.

использованная литература

Разница между компиляторами и интерпретаторами (с таблицей)