Компиляция — преобразование объектов (данных и операций над ними) с входного языка в объекты на другом языке для всей программы в целом с последующим выполнением полученной программы в виде отдельного шага. 2
Процесс компиляции, как правило, состоит из нескольких этапов: 3
- Лексический анализ. 3 Разбивает текст программы на элементы: идентификаторы, константы, служебные слова, комментарии. 1
- Синтаксический анализ. 3 Проверяется, в правильной ли последовательности следуют ключевые слова. 5
- Семантический анализ. 3 Проверяется, корректны ли программные выражения по своему смыслу. 5
- Создание промежуточного кода. 3 Осуществляется на основе результатов анализов. 3
- Оптимизация промежуточного кода. 3 Упрощается, чтобы потреблять меньше ресурсов и выполняться быстрее. 5
- Создание объектного кода. 3 В данном случае машинного. 3
Трансляция — преобразование программы, представленной на одном из языков программирования, в программу на другом языке. 3 Например, программа, написанная на языке высокого уровня (исходный код), для того, чтобы её понимал компьютер, проходит этап трансляции — преобразования в машинный код. 3
Процесс трансляции включает в себя несколько фаз: 1
- Препроцессор. 1 Предварительная фаза, которая выполняет обработку текста программы, не вдаваясь глубоко в её содержание. 1 Он производит замену одних частей текста на другие, при этом сама программа так и остаётся в исходном виде. 1
- Лексический анализ. 1 Лексика языка программирования — это правила «правописания слов» программы, таких как идентификаторы, константы, служебные слова, комментарии. 1
- Синтаксический анализ. 1 Проверяется, в правильной ли последовательности следуют ключевые слова. 5
- Семантический анализ. 1 Проверяется, корректны ли программные выражения по своему смыслу. 5
- Генерация кода. 1 Осуществляется и его оптимизация. 1
В результате трансляции получается объектный модуль — некий «полуфабрикат» готовой программы, который потом участвует в её сборке. 1