Типы интерпретаторов

Виды компиляции

Виды трансляторов

Трансляторы подразделяют на:

  • Адресный. Функциональное устройство, преобразующее виртуальный адрес в реальный адрес
  • Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени.
  • Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
  • Обратный. То же, что детранслятор (декомпилятор, дизассемблер).
  • Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
  • Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
  • Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
  • Тестовый. Набор макрокоманд языка ассемблера, позволяющих задавать различные отладочные процедуры в программах, составленных на языке ассемблера

Компиляция — преобразование программой-компилятором исходного текста программы, написанного на языке высокого уровня в машинный язык, в язык, близкий к машинному, или в объектный модуль. Результатом компиляции является объектный файл с необходимыми внешними ссылками для компоновщика.

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

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

 

Рисунок 1. Компиляция размеченного документа

 

Интерпретация— процесс непосредственного покомандного выполнения программы без предварительной компиляции, «на лету»; в большинстве случаев интерпретация намного медленнее работы уже скомпилированной программы, но не требует затрат на компиляцию, что в случае небольших программ может повышать общую производительность.

Простой интерпретатор анализирует и тут же выполняет (собственно интерпретация) программу покомандно (или построчно), по мере поступления её исходного кода на вход интерпретатора. Его достоинство - мгновенная реакция. Недостаток — такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой.

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

Алгоритм работы простого интерпретатора

  1. прочитать инструкцию;
  2. проанализировать инструкцию и определить соответствующие действия;
  3. выполнить соответствующие действия;
  4. если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2.

 

 

Рисунок 2. Схема интерпретации текста Ю. Лотмана

Слово «алгоритм» произошло от латинской формы имени среднеазиатского математика Мухаммеда ибн Муса ал-Харезми 8-9 в. – изложил правила записи натуральных чисел с помощью арабских цифр и правила действия над ними «столбиком».

Алгоритм – заранее заданное, понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число сигналов.

Исполнитель алгоритма – некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.

Исполнителя характеризуют:

- среда;

- элементарные действия;

- системы команд;

- отказы.

Обычно исполнитель ничего не знает о цели алгоритма.

Свойства алгоритма:

- понятность для исполнителя;

- дискретность;

- определенность;

- результативность (или конечность);

- массовость.

Формы записи алгоритмов:

- словестная;

- графическая;

- псевдокоды;

- программная.

Рисунок 6 – Символы графического описания алгоритмов