ПРЕЗЕНТАЦИЯ НА ТЕМУ: ПРЕЗЕНТАЦИЯ НА ТЕМУ: ВИДЫ ТРАНСЛЯЦИИ Составил: Ревнивцев М.В Преподаватель: Кленина В.И
Трансляция программы преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой Транслятор программа или техническое средство, выполняющее трансляцию программы Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати текст программы и т. д. Язык, на котором представлена входная программа, называется исходным языком, а сама программа исходным кодом. Выходной язык называется целевым языком, а выходная (результирующая) программа объектным кодом.
Виды трансляторов: Диалоговый транслятор транслятор, обеспечивающий использование языка программирования в режиме разделения времени Синтаксически-ориентированный (синтаксически-управляемый) транслятор транслятор, получающий на вход описание синтаксиса и семантики языка, текст на описанном языке и выполняющий трансляцию в соответствии с заданным описанием Однопроходной транслятор транслятор, создающий объектный модуль при однократном последовательном чтении исходного кода (за один проход) Многопроходной транслятор транслятор, создающий объектный модуль после нескольких чтений исходного кода (за несколько проходов) Оптимизирующий транслятор транслятор, выполняющий оптимизацию создаваемого кода перед записью в объектный файл Тестовый транслятор транслятор, получающий на вход исходный код и выдающий на выходе изменённый исходный код. Запускается перед основным транслятором для добавления в исходный код отладочных процедур. Например, транслятор с языка ассемблера может выполнять замену макрокоманд на код. Обратный транслятор транслятор, выполняющий преобразование машинного кода в текст на каком-либо языке программирования. См. дизассемблер, декомпилятор
Виды трансляции: Язык процессора (устройства, машины) называется машинным языком, машинным кодом. Код на машинном языке исполняется процессором. Обычно, машинный язык язык низкого уровня, но существуют процессоры, использующие языки высокого уровня (например, iAPX-432[5]), но такие процессоры не получили распространения в силу сложности и дороговизны. Компиляция Компилятор транслятор, преобразующий исходный код с какого-либо языка программирования на машинный язык Процесс компиляции, как правило, состоит из нескольких этапов: лексический анализ синтаксический анализ семантический анализ создание на основе результатов анализов промежуточного кода оптимизация промежуточного кода создание объектного кода, в данном случае машинного Для добавления в объектный файл машинного кода из других объектных файлов (кода статических библиотек) и информации о динамических библиотеках выполняется связывание (англ. link) или компоновка. Связывание или компоновка выполняется редактором связей или компоновщиком. Компоновщик может быть отдельной программой или частью компилятора. Компоновщик создаёт исполняемый файл. Исполняемый файл (программа) запускается следующим образом: по запросу пользователя в ядре операционной системы создаётся объект «процесс»; загрузчик программ операционной системы выполняет следующие действия: читает исполняемый файл; загружает его в память; загружает в память динамические библиотеки; выполняет связывание машинного кода программы с динамическими библиотеками (динамическое связывание); передаёт управление программе. Достоинства компиляции: компиляция программы выполняется один раз; наличие компилятора на устройстве, для которого компилируется программа, не требуется. Недостатки компиляции: компиляция медленный процесс; при внесении изменений в исходный код, требуется повторная компиляция.
Интерпретатор моделирует машину (виртуальную машину), реализует цикл выборки-исполнения команд машины. Команды машины записываются не на машинном языке, а на языке высокого уровня. Интерпретатор можно назвать исполнителем языка виртуальной машины. Чистая интерпретация применяется, обычно, для языков с простой структурой, например, языков сценариев, языков АПЛ и Лисп. Этапы работы интерпретатора: лексический анализ синтаксический анализ семантический анализ создание промежуточного представления кода (при чистой интерпретации не выполняется) исполнение Недостатки интерпретаторов по сравнению с компиляторами: низкая производительность (машинный код исполняется процессором, а интерпретируемый код интерпретатором машинный код самого интерпретатора исполняется процессором) необходимость наличия интерпретатора на устройстве, на котором планируется интерпретация программы обнаружение ошибок синтаксиса на этапе выполнения (актуально для чистых интерпретаторов). Достоинства интерпретаторов по сравнению с компиляторами: возможность работы в интерактивном режиме; отсутствие необходимости перекомпиляции исходного кода после внесения изменений и при переносе кода на другую платформу. Виды трансляции: Интерпретация процесс чтения и выполнения исходного кода. Реализуется программой интерпретатором. Интерпретатор может работать двумя способами: 1. читать код и исполнять его сразу (чистая интерпретация) 2. читать код, создавать в памяти промежуточное представление кода (байт-код или p-код), выполнять промежуточное представление кода (смешанная реализация). В первом случае трансляция не используется, а во втором используется трансляция исходного кода в промежуточный код. Интерпретация Сравнение чистого интерпретатора и интерпретатора, создающего байт-код: чистый интерпретатор проще в реализации, так как для него не нужно писать код транслятора интерпретатор, создающий байт-код, может выполнять его оптимизацию и добиваться большей производительности, чем чистый интерпретатор интерпретатор, создающий байт-код, потребляет больше ресурсов системы (трансляция в байт-код занимает процессорное время; байт-код занимает место в памяти).
Виды трансляции: Динамическая или JIT компиляция трансляция, при которой исходный или промежуточный код преобразуется (компилируется) в машинный код непосредственно во время исполнения, «на лету» (англ. just in time, JIT). Компиляция каждого участка кода выполняется только один раз; скомпилированный код сохраняется в кеше и при необходимости используется повторно. Динамическая компиляция Достоинства динамической компиляции по сравнению с компиляцией: скорость работы динамически компилируемых программ близка к скорости работы компилируемых программ скорость работы динамически компилируемых программ близка к скорости работы компилируемых программ отсутствие необходимости перекомпиляции программы при переносе на другую платформу отсутствие необходимости перекомпиляции программы при переносе на другую платформу Недостатки динамической компиляции по сравнению с компиляцией и чистой интерпретацией: большая сложность реализации большая сложность реализации большие требования к ресурсам. большие требования к ресурсам. Динамическая компиляция хорошо подходит для веб-приложений. Динамическая компиляция появилась и поддерживается в той или иной мере в реализациях Java,.NET Framework, Perl, Python.