Главная страница
Навигация по странице:

  • Компилировать

  • Гибкий

  • Инкрементальный

  • Компилятор компиляторов.

  • Резидентный

  • Интерпретаторы.

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

  • Достоинства и недостатки интерпретаторов.

  • Документ Microsoft Word (5). Компиляция Трансляция программы на язык, близкий к машинному. Трансляция программы, составленной на исходном языке, в объектный модуль. Осуществляется компилятором. Компилировать


    Скачать 19.82 Kb.
    НазваниеКомпиляция Трансляция программы на язык, близкий к машинному. Трансляция программы, составленной на исходном языке, в объектный модуль. Осуществляется компилятором. Компилировать
    Дата03.04.2022
    Размер19.82 Kb.
    Формат файлаdocx
    Имя файлаДокумент Microsoft Word (5).docx
    ТипДокументы
    #439229

    Компиляция —

    Трансляция программы на язык, близкий к машинному.

    Трансляция программы, составленной на исходном языке, в объектный модуль. Осуществляется компилятором.

    Компилировать — проводить трансляцию машинной программы с проблемно-ориентированного языка на машинно-ориентированный язык.

    Виды компиляторов:

    1. Векторизующий. Транслирует исходный код в машинный код компьютеров, оснащённых векторным процессором.

    2. Гибкий. Составлен по модульному принципу, управляется таблицами и запрограммирован на языке высокого уровня или реализован с помощью компилятора компиляторов.

    3. Диалоговый.

    4. Инкрементальный. Повторно транслирует фрагменты программы и дополнения к ней без перекомпиляции всей программы.

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

    6. Компилятор компиляторов. Транслятор, воспринимающий формальное описание языка программирования и генерирующий компилятор для этого языка.

    7. Отладочный. Устраняет отдельные виды синтаксических ошибок.

    8. Резидентный. Постоянно находится в основной памяти и доступен для повторного использования многими задачами.

    9. Самокомпилируемый. Написан на том же языке, с которого осуществляется трансляция.

    10. Универсальный. Основан на формальном описании синтаксиса и семантики входного языка. Составными частями такого компилятора являются: ядро, синтаксический и семантический загрузчики.

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

    1. Пакетная. Компиляция нескольких исходных модулей в одном пункте задания.

    2. Построчная.

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

    Структура компилятора.

    Процесс компиляции состоит из следующих этапов:

    1. Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.

    2. Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в дерево разбора.

    3. Семантический анализ. Дерево разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их декларациям, типам, проверка совместимости, определение типов выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным деревом разбора, новым деревом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.

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

    5. Генерация кода. Из промежуточного представления порождается код на целевом языке.

    6. В конкретных реализациях компиляторов эти этапы могут быть разделены или совмещены в том или ином виде.

    7. Трансляция и компоновка.

    Важной исторической особенностью компилятора, отражённой в его названии (англ. compile — собирать вместе, составлять), являлось то, что он мог производить и компоновку (то есть содержал две части — транслятор и компоновщик).

    Интерпретаторы.

    Интерпретатор (языка программирования) —

    Программа или техническое средство, выполняющее интерпретацию.

    Вид транслятора, осуществляющего пооператорную (покомандную) обработку и выполнение исходной программы или запроса (в отличие от компилятора, транслирующего всю программу без её выполнения).

    Программа (иногда аппаратное средство), анализирующая команды или операторы программы и тут же выполняющая их.

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

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

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

    2. Интерпретатор компилирующего типа — это система из компилятора, переводящего исходный код программы в промежуточное представление, например, в байт-код или p-код, и собственно интерпретатора.

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

    1. прочитать инструкцию;

    2. проанализировать инструкцию и определить соответствующие действия;

    3. выполнить соответствующие действия;

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

    Достоинства и недостатки интерпретаторов.

    Достоинства:

    Большая переносимость интерпретируемых программ — программа будет работать на любой платформе, на которой есть соответствующий интерпретатор.

    Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.

    Упрощение отладки исходных кодов программ.

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

    Недостатки:

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

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

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




    написать администратору сайта