Виртуальные машины и трансляторы

Содержание

Слайд 2

Слайд 3

Процессные виртуальные машины Системные виртуальные машины

Процессные
виртуальные машины

Системные
виртуальные машины

Слайд 4

Среды языка высокого уровня

Среды языка
высокого
уровня

Слайд 5

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

Трансляторы

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

преобразование программы, представленной на одном из языков программирования, в файл определенного формата.

Программа на языке программирования
Транслятор
Машинные коды

вход

выход

Слайд 6

Виды трансляторов Диалоговый транслятор. Синтаксически-ориентированный (синтаксически-управляемый) транслятор. Однопроходной транслятор. Многопроходной транслятор. Оптимизирующий транслятор. Тестовый транслятор. Декомпилятор.

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

Диалоговый транслятор.
Синтаксически-ориентированный (синтаксически-управляемый) транслятор.
Однопроходной транслятор.
Многопроходной транслятор.
Оптимизирующий транслятор.
Тестовый транслятор.
Декомпилятор.

Слайд 7

Виды трансляции Компиляторы Интерпретация Динамическая компиляция Конвертация

Виды трансляции

Компиляторы

Интерпретация

Динамическая
компиляция

Конвертация

Слайд 8

Компиляция Компилятор – транслятор, преобразующий исходный код с какого-либо языка программирования

Компиляция

Компилятор – транслятор, преобразующий исходный код с какого-либо языка программирования на

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

Исходный код программы на языке высокого уровня
Компилятор

Программа на низкоуровневом языке

вход

выход

Выполнение инструкций

Выполненные инструкции

Слайд 9

Виды компиляции Пакетная. Построчная. Условная. Этапы процесса компиляции Лексический анализ. Синтаксический

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

Пакетная.
Построчная.
Условная.

Этапы процесса компиляции

Лексический анализ.
Синтаксический (грамматический) анализ.
Семантический

анализ.
Оптимизация.
Генерация кода.
Слайд 10

Достоинства компиляции компиляция программы выполняется один раз; наличие компилятора на устройстве,

Достоинства компиляции

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

компилируется программа, не требуется.

Недостатки компиляции

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

Слайд 11

Интерпретация Интерпретация – процесс чтения и выполнения исходного кода. Реализуется программой

Интерпретация

Интерпретация – процесс чтения и выполнения исходного кода. Реализуется программой –

интерпретатором.

Два вида интерпретаторов

Простой интерпретатор
Интерпретатор компилирующего вида

Исходный код программы на языке высокого уровня
Интерпретатор

Выполненные инструкции

вход

выход

Слайд 12

Этапы работы интерпретатора Исполнение Лексический анализ Синтаксический анализ Семантический анализ Создание

Этапы работы интерпретатора

Исполнение

Лексический анализ

Синтаксический анализ

Семантический анализ

Создание промежуточного
представления кода

В случае простой
интерпретации

Слайд 13

Достоинства интерпретации большая переносимость интерпретируемых программ – программа будет работать на

Достоинства интерпретации

большая переносимость интерпретируемых программ – программа будет работать на любой

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

Недостатки интерпретации

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

Слайд 14

Компиляция против интерпретации без ввода

Компиляция против интерпретации без ввода

Слайд 15

Компиляция против интерпретации с вводом

Компиляция против интерпретации с вводом

Слайд 16

Динамическая или JIT компиляция Динамическая или JIT (Just In Time) компиляция

Динамическая или JIT компиляция

Динамическая или JIT (Just In Time) компиляция –

трансляция, при которой исходный или промежуточный код преобразуется (компилируется) в машинный код непосредственно во время исполнения.

Исходный код программы на языке высокого уровня
Компилятор

Байт-код

вход

выход
JIT компилятор

Машинный код

Исполнение

Слайд 17

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

Достоинства JIT компиляция

скорость работы динамически компилируемых программ близка к скорости работы

компилируемых программ;
отсутствие необходимости перекомпиляции программы при пере-носе на другую платформу.

Недостатки JIT компиляция

большая сложность реализации;
большие требования к ресурсам.

Слайд 18

Компиляция + интерпретация + JIT

Компиляция + интерпретация + JIT

Слайд 19

Конвертация Конвертор – переводит программу с одного языка на другой. Var

Конвертация

Конвертор – переводит программу с одного языка на другой.

Var
a,i:integer;
Begin
a = ReadLn();
if

a>5
for I := 5 to 10 do
WriteLn(i);
else
WriteLn(“It’s time for magic!”);
END.

Pascal

#include
Using namespace std;
int a;
int main() {
cin >> a;
if (a > 5)
for (int i=5; i<=10)
cout << I << endl;
else
cout << “It’s time for magic!” << endl;
return 0;
}

C++
Конвертор

Пуф! Магия!

Слайд 20

Достоинства конвертации быстрый перевод больших блоков программы из одного языка в

Достоинства конвертации

быстрый перевод больших блоков программы из одного языка в другой;
небольшие

требования к ресурсам.

Недостатки конвертации

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

Слайд 21

Java Virtual Machine JRE (Java Runtime Environment) – минимальная реализация виртуальной

Java Virtual Machine

JRE (Java Runtime Environment) – минимальная реализация виртуальной машины,

необходимая для исполнения Java-приложений, без компилятора и других средств разработки.
JVM (Java Virtual Machine) – виртуальная машина Java – основная часть исполняющей системы Java.
Слайд 22

Архитектура JVM Java .class - файлы Загрузчик классов Верификатор Интерпретатор Java байт-кода Компьютерная система

Архитектура JVM

Java .class - файлы

Загрузчик классов

Верификатор

Интерпретатор
Java байт-кода
Компьютерная система