Процессор – это большая интегральная схема, содержащая миллионы компонент: триггеры для запоминания битов данных, вентили для выполнения операций. Для управления компонентами применяются управляющие сигналы, имеющие два уровня – низкий и высокий.
Множество управляющих сигналов можно связать с набором 0 и 1, которые можно интерпретировать, как число. Программа, с которой работает процессор, это последовательность чисел, называемая машинным кодом.
Машинные коды трудно воспринимаются человеком. Поэтому люди составляют программу на удобном для себя языке – языке высокого уровня. Программирование на естественном человеческом языке (метаязыке) может использоваться только на этапе составления алгоритма.
ЭВМ исполняет программу в машинных кодах. Автоматически перевести такую программу в машинный код нельзя из-за неоднозначности естественного языка.
Программа на языке программирования для выполнения требует преобразования в машинные коды. Эту операцию выполняют специальные программы – трансляторы.
Существуют два классических видов трансляторов: компилятор и интерпретатор.
Компилятор преобразует всю программу, написанную на языке высокого уровня в машинные коды. Он имеет ряд достоинств:
- транслированная программа может исполняться без компилятора,
- при трансляции может использоваться технология оптимизации,
- скорость работы компилированной программы в сотни раз выше, чем интерпретируемой.
Но компилятор имеет и свои недостатки, связанные с трудоемкостью программирования, сложностью тестирования и отладки, сложностью остановки программы.
Альтернативой компилятору служит интерпретатор.
Интерпретатор сразу выполняет команды языка, указанные в тексте программы. Команды транслируются и исполняются последовательно в процессе их ввода. К достоинствам его можно отнести:
- постоянный контроль среды программирования,
- удобства тестирования и отладки,
- легкость остановки программы.
Но и интерпретатор не лишен недостатков: транслированная программа не может исполняться без интерпретатора, при трансляции не может автоматически использоваться оптимизация, скорость работы интерпретируемой программы в сотни раз ниже, чем компилируемой. Поэтому интерпретатор в основном используется в математических пакетах, предназначенных для решения сложных математических задач.