Трансляторы

Существует два основных метода перевода программы, написанной на языке программирования высокого уровня, в машинные коды.

Метод интерпретации устанавливает соответствие между языком программирования и машинным языком благодаря специальной программе – интерпретатор, одновременно оперирующий программой на языке программирования и данными, которыми надо передать этой программе для обработки. Интерпретатор декодирует программу, то есть переводит в машинный код, и по мере этого декодирования выполняет соответствующие команды, применяя их к обработанным данным. (Самый известный интерпретатор – интерпретатор языка Бейсик).

Достоинства: один и тот же текст программы практически без всяких изменений может запускаться на разных компьютерах, что устраняет проблемы переноса программ с компьютера на компьютер.

Недостаток: сравнительно небольшая скорость выполнения – каждую строку программы на языке высокого уровня интерпретатор должен проанализировать, проверить на наличие ошибок и только после этого выполнить. Наличие синтаксических ошибок в операторах выявляется только в момент их выполнении.

При использовании метода компиляции выполнение программы включает две фазы. Сначала осуществляет перевод программы, написанной на языке программирования, в эквивалентную программу на машинном языке с предварительной проверкой синтаксических конструкций данного языка программирования. На втором этапе программа выполняется на компьютере с данными, которые необходимо обработать.

Достоинство: повышенная скорость – один раз скомпилированная программа в дальнейшем при запуске не требует каких-либо дополнительных действий над собой, не содержит синтаксических ошибок.

Недостаток: ограничение при переносе с одной платформы на другую (с одной архитектуры на другую) – приходится заново компилировать. Фирмы, торгующие программы обеспечением, вынуждены продавать несколько версий одной и той же программы для разных платформ.

До 1994 г. эти два методы перевода программы были единственными, используемыми в программировании и получили общее название методы трансляции.

В 1994 году американский ученный, программист Михаэль Франц предложил новый метод - динамическую кодогенерацию -нечто среднее между интерпретацией и компиляцией. Его суть заключается в следующем – программа, написанная на языке высокого уровня, транслируется не в машинный код, а в некоторый промежуточный. При трансляции происходит синтаксическая проверка запуска программы. Сам же перевод программы из промежуточного кода в машинный для данного процессора происходит в момент загрузки программы в оперативную память компьютера. Этот метод был применен при разработки нового языка программирования Java.

Схема подготовки исполняемой программы на языке С++

Основная программная единица на языке С++ - это текстовый файл с расширением.сpp. Процесс перевода программы в машинные коды состоит из следующих этапов. Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочный файлов, в который содержатся описания используемых в программе элементов). Например,

#include <iostream.h>

вставляет в текст программы текст из заголовочного файла iostream.h.

В результате препроцессор изменяет исходный текст программы. Сформированный таким образом текст программы (полный текст программы) поступает на компиляцию. Компилятор, во-первых, выделяет из поступившего текста программы лексемы, а затем на основе грамматики языка распознают смысловые конструкции языка, такие как выражения, операторы, блоки операторов. В результате работы компилятора либо выдается сообщение о синтаксических ошибках, либо в случае их отсутствия формируется объектный модуль программы с расширением.obj. Объектный модуль отправляется на компоновку. Компоновщик (или редактор связей) дополняет объектный модуль нужными библиотечными функциями, обращение к которым содержится в любой программе и, если необходимо, объединяет с другими объектными модулями и формирует исполняемый модуль программы с расширением.exe.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: