Трансляция языков — это процесс преобразования программы, написанной на одном языке программирования (исходный язык), в эквивалентную программу на другом языке (объектный язык). Это позволяет выполнять программы на аппаратных платформах, где изначально использованный язык не поддерживается напрямую.

Ассемблер
Преобразует программы с языка ассемблера (символического представления машинного языка) в машинный код. Каждая команда ассемблера обычно соответствует одной команде машинного языка.
Компилятор
Преобразует программы с языка высокого уровня в машинный код или ассемблер. Например, компиляторы для языков C++, Rust и Go.

Если в язык ассемблер

Интерпретатор
Выполняет программы непосредственно, без создания промежуточного машинного кода. Например, интерпретаторы Python и Ruby.

Препроцессор
Преобразует программы на расширенной версии языка программирования в стандартный вариант этого же языка. Пример: препроцессор C.
Загрузчик (линковщик)
Подготавливает скомпилированные программы для выполнения, соединяя их с необходимыми библиотеками и модулями.
Анализ исходного кода:
Генерация промежуточного кода:
Создание машинно-независимого кода, удобного для оптимизации и дальнейшей трансляции.
Оптимизация:
Улучшение кода для повышения производительности, включая:
Генерация объектного кода:
Преобразование промежуточного кода в машинный или ассемблерный код для целевой платформы.
Машинно-зависимая оптимизация:
Улучшение объектного кода с учетом особенностей целевой архитектуры (например, использование специфических регистров или инструкций процессора).