Типы интерпретаторов
Виды компиляции
Виды трансляторов
Трансляторы подразделяют на:
- Адресный. Функциональное устройство, преобразующее виртуальный адрес в реальный адрес
- Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени.
- Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
- Обратный. То же, что детранслятор (декомпилятор, дизассемблер).
- Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
- Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
- Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
- Тестовый. Набор макрокоманд языка ассемблера, позволяющих задавать различные отладочные процедуры в программах, составленных на языке ассемблера
Компиляция — преобразование программой-компилятором исходного текста программы, написанного на языке высокого уровня в машинный язык, в язык, близкий к машинному, или в объектный модуль. Результатом компиляции является объектный файл с необходимыми внешними ссылками для компоновщика.
Компилятор читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
- Пакетная. Компиляция нескольких исходных модулей в одном пункте задания.
- Построчная. То же, что и интерпретация.
- Условная. Компиляция, при которой транслируемый текст зависит от условий, заданных в исходной программе. Так, в зависимости от значения некоторой константы, можно включать или выключать трансляцию части текста программы.
Рисунок 1. Компиляция размеченного документа
Интерпретация— процесс непосредственного покомандного выполнения программы без предварительной компиляции, «на лету»; в большинстве случаев интерпретация намного медленнее работы уже скомпилированной программы, но не требует затрат на компиляцию, что в случае небольших программ может повышать общую производительность.
Простой интерпретатор анализирует и тут же выполняет (собственно интерпретация) программу покомандно (или построчно), по мере поступления её исходного кода на вход интерпретатора. Его достоинство - мгновенная реакция. Недостаток — такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой.
Интерпретатор компилирующего типа — это система из компилятора, переводящего исходный код программы в промежуточное представление, например, в байт-код или p-код, и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина). Его достоинство – большее быстродействие выполнения программ (за счёт выноса анализа исходного кода в отдельный, разовый проход, и минимизации этого анализа в интерпретаторе). Недостатки — большее требование к ресурсам и требование на корректность исходного кода.
Алгоритм работы простого интерпретатора
- прочитать инструкцию;
- проанализировать инструкцию и определить соответствующие действия;
- выполнить соответствующие действия;
- если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2.
Рисунок 2. Схема интерпретации текста Ю. Лотмана
Слово «алгоритм» произошло от латинской формы имени среднеазиатского математика Мухаммеда ибн Муса ал-Харезми 8-9 в. – изложил правила записи натуральных чисел с помощью арабских цифр и правила действия над ними «столбиком».
Алгоритм – заранее заданное, понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число сигналов.
Исполнитель алгоритма – некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.
Исполнителя характеризуют:
- среда;
- элементарные действия;
- системы команд;
- отказы.
Обычно исполнитель ничего не знает о цели алгоритма.
Свойства алгоритма:
- понятность для исполнителя;
- дискретность;
- определенность;
- результативность (или конечность);
- массовость.
Формы записи алгоритмов:
- словестная;
- графическая;
- псевдокоды;
- программная.
Рисунок 6 – Символы графического описания алгоритмов