Компиляция

Материал из ПИЭ.Wiki

Перейти к: навигация, поиск
Файл:Wiki_letter_w.png

Это незавершённая статья. Вы можете помочь проекту, исправив и дополнив её.


Программы, написанные на языках программирования высокого уровня (или проблемно-ориентированных языках), перед выполнением на ЭВМ должны транслироваться в эквивалентные программы, написанные в машинном коде. Языки высокого уровня появились в середине 50-х годов, примерами первых таких языков могут служить Фортран и Кобол, а примерами недавно созданных — Алгол 68, Паскаль и Ада. Программа, которая транслирует любую программу, написанную на конкретном языке высокого уровня, в эквивалентную программу на другом языке (обычно это код машины), называется компилятором. Компилирование программы включает анализ — определение предусмотренного результата действия программы и последующий синтез — генерирование эквивалентной программы в машинном коде. В процессе анализа компилятор должен выяснить, является ли входная программа недействительной в каком-либо смысле (т.е. принадлежит ли она к языку, для которого написан данный компилятор), и если она окажется недействительной, — выдать соответствующее сообщение программисту. Этот аспект компиляции называется обнаружением ошибок (эти ошибки относятся к синтаксическим).

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

     Существует и другой подход. Он состоит в том, чтобы вместо трансляции

каждой программы в машинный код и последующего ее выполнения программа сначала транслировалась на промежуточный язык, а - затем транслировался и выполнялся каждый оператор промежуточного языка (когда он встретится). Программа, транслирующая и выполняющая программу, написанную на таком языке высокого уровня, называется интерпретатором. Применение интерпретатора вместо компилятора имеет следующие преимущества:

     Передавать сообщения об ошибках пользователю часто бывает легче в

терминах оригинальной программы.

     Версия программы на промежуточном языке нередко оказывается компактнее,

чем машинный код, выданный компилятором.

     Изменение части программы не требует перекомпиляции всей программы.
     Диалоговые языки, такие, как Бейсик, часто реализуются посредством

интерпретатора. Промежуточным языком обычно служит некая форма обратной польской записи (см. разд. 10.1). Хорошим пособием по реализации диалоговых языков может быть работа [13]. Основной недостаток интерпретаторов заключается в том, что эти программы обычно пропускаются относительно медленно, так как операторы промежуточного кода должны транслироваться всякий раз, когда они выполняются, хотя временные издержки не так уж велики (они зависят от конструкции промежуточного языка). Применяется метод смешанного кода [15], в котором наиболее часто выполняемая часть интерпретируется. При этом экономится память, поскольку часть программы, которая должна интерпретироваться, будет, по

                                         8

всей вероятности, намного компактнее, чем скомпилированный код. Развитием этой идеи является «отбрасывающее» компилирование [12].

     В настоящей книге речь идет в основном о компиляторах, а не об

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

     В гл.. 1 мы изучим характеристики языков высокого уровня и типичных ЭВМ, а.

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

Просмотры
Инструменты

Besucherzahler russian mail order brides
счетчик посещений
Rambler's Top100
Лингафонные кабинеты  Интерактивные доски  Интерактивная приставка Mimio Teach