Средства выполнения программы

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

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

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

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

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

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

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

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

Кроме того, при компиляции отсутствует возможность оптимального кодирования, поскольку программа выполняется сразу оператор за оператором.

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

 
< Пред   СОДЕРЖАНИЕ     След >