Трансляторы

Каждая машина имеет свой собственный язык (машинный язык) и может выполнять программы только на этом языке. Это последователь­ность машинных команд. Писать программы на машинном языке очень сложно и утомительно. Для повышения производительности труда про­граммистов применяются искусственные языки программирования. При этом требуется перевод программы, написанной на таком языке, на ма­шинный язык. Этот перевод выполняет транслятор. Наиболее часто встречающимся транслятором интерпретирующего типа является транс­лятор с языка Бейсик, где команды читаются, преобразуются и выпол­няются сразу. Итогом работы такого транслятора являются требуемые результаты.

Транслятор с Паскаля - компилирующего типа. Текст программы на исходном языке сначала переводится в текст на машинном языке и получается так называемый объектный модуль. Затем объектный модуль должен быть обработан программой – редактором межпрограммных связей и только после этого программа будет го­това к выполнению.

Так как текст записанной на Паскале программы не понятен компьютеру, то требуется перевести его на машинный язык. Такой перевод программы с языка программирования на язык машинных кодов называетсятрансляцией (translation — перевод), а выполняется он специальными программами -трансляторами.

Существует три вида трансляторов: интерпретаторы, компиляторы и ассемблеры.

Интерпретатором называется транслятор, производящий пооператорную (покомандную) обработку и выполнение исходной программы.

Компилятор преобразует (транслирует) всю программу в модуль на машинном языке, после этого программа записывается в память компьютера и лишь потом исполняется.

Ассемблеры переводят программу, записанную на языке ассемблера (автокода), в программу на машинном языке.

Любой транслятор решает следующие основные задачи:

- анализирует транслируемую программу, в частности определяет, содержит ли она синтаксические ошибки;

- генерирует выходную программу (ее часто называют объектной или рабочей) на языке команд ЭВМ (в некоторых случаях транслятор генерирует выходную программу на промежуточном языке, например, на языке ассемблера);

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