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

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

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

Компилятор

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

Переводчик

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

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

Процесс исполнения

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

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

Портативность

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

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

Взгляните.
Компилятор VS Интерпретатор. ✌#StayHome #100DaysOfCode #coder #programming #webdesign #webdevelopment #WordPress #softwaredevelopment #uiux #frontend #backend #fiverr #fiverrseller #html #css #javascript #jquery #psd2html #jobs #developer #designer #Angular pic.Twitter.com/ttVgdLuMFD

- Md Elias Chowdhury (@feelfree009) 17 апреля 2020 г.

Обнаружение ошибок

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

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

Источник