Все программы создаются с помощью языков программирования. Языки программирования – это искусственные языки. От естественных они отличаются ограниченным числом “слов” (значение которых понятно транслятору), и очень строгими правилами записи команд (операторов). Совокупность подобных требований образуют синтаксис языка программирования. Нарушение формы записи программы приводит к тому, что транслятор не может понять назначение оператора и выдает ошибку.
ЯЗЫК ПРОГРАММИРОВАНИЯ ЯВЛЯЕТСЯ ПРОМЕЖУТОЧНЫМ ПРИ ПЕРЕХОДЕ ОТ ЕСТЕСТВЕННОГО ЧЕЛОВЕЧЕСКОГО ЯЗЫКА К МАШИННЫМ ДВОИЧНЫМ КОДАМ.
Языки программирования бывают высокого и низкого уровней. Языки программирования высокого уровня (как видно из схемы) являются более близкими к естественному человеческому языку по сравнению с языками программирования низкого уровня. Создание текста программы на языке программирования выполняется человеком вручную, а перевод текста программы в машинные двоичные коды - трансляция (англ.translation - перевод) выполняется специальными программами - трансляторами.
|
|
Трансляторы
Так как текст программы, записанной на каком-нибудь языке программирования, не понятен компьютеру, то требуется перевести его на машинный язык. Перевод программы с языка программирования на язык машинных кодов называется трансляцией (translation - перевод), а выполняется он специальными программами – трансляторами.
Существуют два вида трансляторов: интерпретаторы, компиляторы.
Интерпретатором называется транслятор, производящий пооператорную (покомандную) трансляцию и последующее выполнение оттранслированного оператора исходной программы. Два недостатка метода интерпретации:
1. интерпретирующая программа должна находиться в памяти ЭВМ в течение всего процесса выполнения исходной программы, т.е занимать определенный объем памяти;
2. процесс трансляции одного и того же оператора повторяется столько раз, сколько раз должна исполняться эта команды в программе.
Компилятор – это программа, которая преобразует (транслирует) исходную программу в программу (модуль) на машинном языке. После этого программа записывается в память компьютера и только потом исполняется.
При компиляции процессы трансляции и выполнения разделены во времени: сначала исходная программа полностью переводится на машинный язык (после чего наличие транслятора в оперативной памяти не нужен), а затем оттранслированная программа может многократно исполняться.
Любой транслятор решает следующие основные задачи:
1. Анализирует транслируемую программу и определяет, содержит ли она синтаксические ошибки;
|
|
2. Генерирует выходную программу на языке команд ЭВМ;
3. Распределяет память для выходной программы, т.е. каждой переменной, константе, массивам и другим объектам отводится свой участок памяти.
Таким образом, Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
После того, как программа откомпилирована, ни сама исходная программа, ни компилятор более не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять. |
Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался. Например, Паскаль обычно используется для решения довольно сложных задач, в которых важна скорость работы программ. Поэтому данный язык обычно реализуется с помощью компилятора. С другой стороны, Бейсик создавался как язык для начинающих программистов, для которых построчное выполнение программы имеет неоспоримые преимущества. Иногда для одного языка имеется и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения. |