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

 

С помощью языка программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, надо этот текст перевести в машинный код и использовать отдельно от исход­ного текста, либо сразу выполнять команды языка, указанные в тексте программы. первая задача выполняется компилятором, вторая – интерпретатором.

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

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

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

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

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

 








Дата добавления: 2019-10-16; просмотров: 741;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.