Введение

Что такое компилятор?

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

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

h00181.jpg

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

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

Как в реальной жизни существует два класса переводчиков: синхронные и литературные, так и в вычислительной технике существует два класса трансляторов: интерпретаторы и компиляторы. Интерпретатор работает как синхронный переводчик. Он просматривает исходный текст строку за строкой, переводит каждую строку в промежуточный код или в машинный и передает его на исполнение. Только если все в порядке, интерпретатор приступает к следующей строке. Компилятор (а именно к этому классу относится рассматриваемая нами система Borland C++) работает как-литературный переводчик. Сначала он просмотрит весь текст, может быть и не один раз, найдет общие повторяющиеся места (их он не будет переводить дважды), тщательно подготовит стратегию перевода, подберет самые эффективные аналоги и только после этого переведет весь исходный текст целиком и полностью, создав при этом новый документ, который называется объектным кодом. Объектный код можно считать законченной программой, хотя и не вполне.

18