Технологии программирования

Содержание

Слайд 2

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

Компиляторы

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

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

Но как это работает? Лексический анализ Синтаксический анализ Семантический анализ Оптимизация Генерация кода

Но как это работает?

Лексический анализ
Синтаксический анализ
Семантический анализ
Оптимизация
Генерация кода

Слайд 4

Лексический анализ Оно же «токенизация» Разбор последовательности символов на распознанные сущности

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

Оно же «токенизация»
Разбор последовательности символов на распознанные сущности – лексемы,

с последующим анализом и выдачей токенов
Слайд 5

Выделение лексем while (var { var += 1; }

Выделение лексем

while (var < 5)
{
var += 1;
}

Слайд 6

Определение токенов Одному токену может соответствовать целое множество лексем – зависит от синтаксиса языка программирования

Определение токенов

Одному токену может соответствовать целое множество лексем – зависит от

синтаксиса языка программирования
Слайд 7

Синтаксический анализ Генерация дерева синтаксического разбора В следующих сериях…(курсе на 3) (сопоставление последовательности токенов формальной грамматике)

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

Генерация дерева синтаксического разбора
В следующих сериях…(курсе на 3)
(сопоставление последовательности токенов

формальной грамматике)
Слайд 8

Пример синтаксического разбора «Внутренние» вершины – операторы «Листья» - операнды Обычно

Пример синтаксического разбора

«Внутренние» вершины
– операторы
«Листья» - операнды
Обычно граф.представление такое:
«снизу вверх»
сначала

вычисляется
левый «ребенок»
потом просматривается «родитель»
при необходимости вычисляется
«правый ребенок»
вычисляется родитель «родитель»
Слайд 9

Семантический анализ Проверка корректности Статическая проверка типов Вывод типов (выражения наподобие

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

Проверка корректности
Статическая проверка типов
Вывод типов (выражения наподобие auto)
Раскрытие «синтаксического

сахара»
и проч. проч. проч.
Слайд 10

Оптимизация Перестроение дерева для генерации более эффективного машинного кода

Оптимизация

Перестроение дерева для генерации более эффективного машинного кода

Слайд 11

Генерация кода Генерируется машинный код На выходе – объектный файл Машинный

Генерация кода

Генерируется машинный код
На выходе – объектный файл
Машинный код – уже

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