Что такое транслятор, компилятор, интерпретатор

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

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


Компилятор (англ. compiler - составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Интерпретатор (англ. interpreter - толкователь, устный переводчик) переводит и выполняет программу строка за строкой.
После того, как программа собрать, ни сама исходная программа, ни компилятор больше не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы.
Откомпилированные программы работают быстрее, но интерпретируются проще исправлять и изменять.
Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию - в зависимости от того, для каких целей он создавался. Например, Паскаль обычно используется для решения достаточно сложных задач, в которых важна скорость работы программ. Поэтому данный язык обычно реализуется с помощью компилятора.
С другой стороны, Бейсик создавался как язык для начинающих программистов, для которых Порядковое выполнения программы имеет неоспоримые преимущества.
Иногда для одного языка есть и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем собрать отлаженную программу, чтобы повысить скорость ее выполнения.