Конспект лекций Рекомендовано Учебно-методи





НазваниеКонспект лекций Рекомендовано Учебно-методи
страница2/9
Дата публикации18.09.2013
Размер1.01 Mb.
ТипДокументы
100-bal.ru > Информатика > Документы
1   2   3   4   5   6   7   8   9

показывает, как бывает заманчиво пользоваться возможностью ди-

намической модификации программы.

 2Пример. 0 Пусть мы хотим напечатать таблицу значений функ-

ции. Логично было бы считать, что исходными данными здесь яв-

ляются интервал и шаг (для которых строится таблица), и алгеб-

раическое выражение, определяющее функцию. Ниже приведена

программа на одном из диалектов Бейсика. Идея заключается в

следующем. Первоначально в тексте программы отсутствует необ-

ходимая строка печати результата. Эта строка формируется в

процессе работы программы и выводится временно в файл A.DAT.

Далее, через оператор динамического слияния OVERLAY к основной

программе присоединяется программа из файла, и выполнение про-

должается.
10 PRINT "ВВЕДИТЕ ИНТЕРВАЛ И ШАГ ПОСТРОЕНИЯ ТАБЛИЦЫ"

20 INPUT A,B,H

30 PRINT "ЗАДАЙТЕ ВЫЧИСЛЯЕМОЕ ВЫРАЖЕНИЕ (НАПРИМЕР, SIN(X))"

40 INPUT S$

50 OPEN "A.DAT" FOR OUTPUT AS FILE #1

60 PRINT #1,"100 PRINT X,";S$

70 CLOSE #1

80 OVERLAY "A.DAT" LINE 90 \ REM МОДИФИКАЦИЯ ПРОГРАММЫ

90 FOR X=A TO B STEP H

100 REM ЗДЕСЬ ПОЯВИТСЯ ОПЕРАТОР ПЕЧАТИ

110 NEXT X

120 END
Заманчивая простота приведенного решения не должна засло-

нять всех проблем, связанных с модификацией программы. Кто в

такой ситуации берет на себя ответственность за синтаксическую
- 11 -

корректность добавляемого фрагмента? Как должна поступить

исполняющая система, если будут обнаружены ошибки в новых опе-

раторах? Так как заранее неизвестно, как может модифициро-

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

все свои модули до конца работы.

Таким образом, если даже вам предъявят исполняемый модуль

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

будьте уверены, что либо на самом деле в данной реализации

запрещена модификация пользовательской программы в процессе ее

работы, либо же в этом исполняемом модуле присутствуют элемен-

ты виртуальной машины, которая в конечном счете обеспечивает

интерпретацию динамически появляющихся программных элементов.

В сущности мы имеет дело с модулем, объединяющим входную прог-

рамму и среду исполнения.

Интерпретация отдельного оператора исходной программы

заключается в его декодировании и выполнении операций, при-

писываемых этому оператору. Представим себе, что наш оператор

должен выполняться в цикле тысячи раз. Тогда интерпретатор

тысячи раз будет выполнять декодирование. В других случаях де-

кодирование некоторых операторов может вовсе не потребоваться,

если в процессе исполнения программы управление ни разу не бу-

дет на них передано. Этой особенностью интерпретатора объясня-

ется обнаружение синтаксических ошибок в, казалось бы, уже от-

лаженных программах.

Идея интерпретации настолько естественна и объективно не-

обходима, что практически она применяется в каждом транслято-

ре. Причина этого в том, что нам нужны языки высокого и сверх-

высокого уровня, которые невозможно реализовать полностью ап-

паратно, если не использовать принципов микропрограммирования,

которые задают все ту же интерпретацию. Еще одна причина при-

менения элементов интерпретации состоит в экономии памяти, так

как некоторую информацию выгоднее хранить в исходном виде.

Итак, под  2интерпретатором  0понимается такой транслятор,

который, возможно, порождает некий вариант объектной програм-

мы, но главное - сам же его и исполняет. При этом, всякая

конструкция исходной программы интерпретируется каждый раз,

когда её необходимо исполнить.

.
- 12 -

 21.3. Выбор языка реализации
Обсудим следующий важный вопрос. На каком языке програм-

мировать транслятор? Здесь возможны два граничных случая. Если

за язык реализации выбрать машинный язык, то надежда получить

эффективный программный продукт натыкается на трудности прог-

раммирования и отладки. С другой стороны, язык высокого уровня

при всем его удобстве использования не обеспечит высокой ско-

рости трансляции и исполнения. Поэтому на практике в зависи-

мости от преследуемых целей выбирается тот или иной вариант

или их комбинация.

Язык высокого уровня может быть языком реализации только

при условии, что для него самого уже существует соответствую-

щий транслятор. Впрочем, этот транслятор может быть представ-

лен на другом компьютере. На практике бывают ситуации, когда

желательно разрабатывать транслятор, предназначенный для одной

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

тем, что там уже есть развитое программное обеспечение.

Если наш транслятор реализован на одном компьютере, а вы-

ходной язык является машинным языком другого компьютера, то

такой транслятор называется  2кросс-компилятором 0.

Удобно отображать характеристики транслятора в виде спе-

циальной Т-образной схемы. На рисунке 1 представлена Т-образ-

ная схема АБВ, соответствующая транслятору, для которого А -

входной язык, Б - выходной язык, В - язык реализации.
 ш1.0

┌───────────┐

│ А Б │

└───┐ ┌───┘

│ В │

└───┘
 ш0

Рис. 1. Т-образная схема транслятора
Можно представить себе вариант двухступенчатого трансля-

тора, где язык реализации одной ступени является входным язы-

ком другой. Тогда сочленение двух Т-образных схем означает не-

кую обобщенную итоговую схему трансляции. Эта итоговая схема

может быть приписана к первым двум ступеням (на уровень выше).

На рисунке 2 приведен пример такого сочленения. Символы итого-

вой схемы (3) выделены на рисунке жирным шрифтом. Здесь как бы
- 13 -

свертка двух Т-образных схем (1 и 2) порождает третью. То есть

текст транслятора 1 после обработки его транслятором 2 превра-

щяется в транслятор 3 (с теми же входным и выходным языками,

но другим языком реализации).

Можно сформулировать формальные правила стыковки схем:

1) примыкающие в горизонтальном направлении языки должны

попарно совпадать;

2) входной и выходной языки итоговой схемы должны совпа-

дать с соответствующими языками первой схемы.
 ш1.0

1───────────┐ 3───────────┐

│ А Б │ │  2А Б  0│

└───┐ 2───┴───┴───┐ ┌───┘

│ В │ В С │  2С 0 │

└───┴───┐ ┌───┴───┘

│ Г │

└───┘
 ш0

Рис. 2. Пример задания двухступенчатой схемы трансляции
Можно строить и многоступенчатые схемы трансляции. Прави-

ла сочетания при этом остаются теми же.

В шестидесятых годах среди программистов была популярна

идея создания универсального машинно-независимого языка низко-

го уровня UNCOL. Предлагалось реализовывать этот язык на каж-

дом компьютере. Далее для каждого нового языка программирова-

ния L следовало в первую очередь разработать транслятор с вы-

ходным языком UNCOL (рис. 3).
 ш1.0

┌─────────────┐

│ L UNCOL│

└───┐ ┌───┘

│UNCOL│

└─────┘
 ш0

Рис. 3. Т-образная схема транслятора языка L
Таким образом, реализация M языков программирования для N

компьютеров потребует (M+N) трансляторов: M трансляторов

для перевода на UNCOL и N трансляторов для перевода на машин-

ный язык каждого компьютера. Иная схема - отдельная реализация

каждого языка для каждой машины - потребует (M*N) транслято-

ров. Можно считать, что проект UNCOL это просто идея одного

общего машинного языка (и тогда компьютеры просто будут нераз-
- 14 -

личимы). Однако дело здесь в другом. Использование UNCOL-мето-

да существенно повышает мобильность языков программирования.

Очевидная неэффективность получающегося транслятора компенси-

руется общим снижением времени на разработку одного транслято-

ра вместо N необходимых. Еще один довод: предложенная схема

может применяться как временный вариант использования языка до

тех пор, пока не будет создан эффективный транслятор.

 21.4. Краткий обзор процесса компиляции
На рисунке 4 приведена принципиальная схема компилятора

[4]. Сплошные стрелки показывают порядок исполнения отдельных

модулей (фаз компиляции), а пунктирные - обозначают направле-

ние информационных потоков. В зависимости от особенностей

исходного языка схема компилятора может претерпевать опреде-

ленные изменения. Однако основные модули всегда представлены в

том или ином виде. Ниже приводится их краткая характеристика.

 2Сканер  0или  2лексический анализатор 0 это программа (процеду-

ра), которая просматривает литеры входного текста и строит из

них  2лексемы  0(символы). Под лексемой понимается неделимая часть

какой-либо синтаксической конструкции. Примеры лексем: иденти-

фикаторы, числа, разделители, служебные слова.

Сканер строит различные таблицы, которые в дальнейшем,

возможно, будут дополняться другими модулями. Например, оче-

видно, что потребуется таблица идентификаторов. Эта таблица

позволит контролировать единственность и необходимость описа-

ния имен. В последующем данные из таблицы идентификаторов

послужат основой для распределения памяти под значения пере-

менных.

На этапе лексического анализа целесообразно исключить

комментарии. В зависимости от выбранной схемы компиляции ска-

нер может либо полностью обработать исходную программу, либо

может быть оформлен в виде отдельной процедуры, которая будет

по мере необходимости вызываться блоком синтаксического и се-

мантического анализа. Второй вариант предпочтительнее, если

предполагается осуществлять анализ до первой возможной ошибки

в обрабатываемой программе.

.
- 15 -
 ш1

┌───────────────────────────────────────┐

│ │

│ │

│ ┌───────────────┐ ┌──────────┐ │

│ │ блок анализа │ │ информа- │ │

┌──────────────┐ │ │ ┌───────────┐ │ │ ционные │ │

│ программа на │-------->│ сканер │-------->│ таблицы: │ │

│исходном языке│ │ │ │ │<--------│ │ │

└──────────────┘ │ │ └───┬───────┘ │ │ таблица │ │

│ │ │ | │ │ идентифи-│ │

│ │ │ | │ │ каторов, │ │

│ │ │ | │ │ таблица │ │

│ │ ┌───┴───────┐ │ │ чисел, │ │

│ │ │синтакс. и │-------->│ таблица │ │

│ │ │семантич. │<--------│ меток, │ │

│ │ │анализаторы│ │ │ таблица │ │

│ │ └───┬───────┘ │ │ массивов,│ │

│ └─────┼───|─────┘ │ таблица │ │

│ │ | │ циклов │ │

│ │ | │ и т.д. │ │

│ │ | │ │ │

│ │ | │ │ │

│ │ | │ │ │

│ │ | │ │ │

│ ┌─────┼───|─────┐ │ │ │

│ │блок │ синтеза │ │ │ │

│ │ ┌───┴───────┐ │ │ │ │

│ │ │подготовка │-------->│ │ │

│ │ │к генерации│<--------│ │ │

│ │ └───┬───────┘ │ │ │ │

│ │ │ | │ │ │ │

│ │ │ | │ │ │ │

│ │ │ | │ │ │ │

│ │ │ | │ │ │ │

│ │ │ | │ │ │ │

┌───────────────┐ │ │ ┌───┴───────┐ │ │ │ │

│ программа на │<-------│ генератор │-------->│ │ │

│объектном языке│ │ │ │ кода │<--------│ │ │

└───────────────┘ │ │ └───────────┘ │ │ │ │

│ └───────────────┘ └──────────┘ │

│ │

│ │

└───────────────────────────────────────┘
 ш0

Рис. 4. Принципиальная схема компилятора

.
- 16 -
Этап лексического анализа считается достаточно простым

для реализации, и может быть полностью автоматизирован.

Далее работают  2синтаксический и семантический анализато-

 2ры 0. На этом этапе осуществляется полный синтаксический и се-

мантический контроль исходной программы, формируются и допол-

няются различные информационные таблицы, распознается син-

таксическая структура исходной программы. Синтаксический ана-

лизатор может работать по подготовленному описанию синтаксиса

исходного языка.

Как правило, удается описать синтаксис языка программиро-

вания некоторой контекстно-свободной грамматикой. В теории

синтаксического анализа разработаны различные методы, позволя-

ющие автоматизировать этот процесс.

Сложнее дело обстоит с проверкой семантики исходной прог-

раммы. В некоторых случаях удается формализовать семантику с

помощью, например, атрибутной грамматики [9,11]. Чаще всего,

семантический анализатор разрабатывается под конкретный язык.

Некоторые смысловые ошибки могут вообще не выявляться. Напри-

мер, для конструкции оператора присваивания "x:=3/0", очевид-

но, допущена ошибка: "деление на ноль невозможно". Если такая

ошибка не выявлена на стадии анализа, то в дальнейшем это при-

ведет к прерыванию на этапе выполнения программы. Семанти-

ческий анализ предполагает, в частности, такие проверки: нали-

чие описаний всех величин, соответствие типов в операторах и

выражениях, корректное задание индексов элементов массивов и

т.п.

Следующий этап - подготовка к генерации команд. Здесь мо-

гут выполняться различные действия по подготовке к оптимизации

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

процедуры, функции и другие объекты.

На заключительном этапе выполняется непосредственный пе-

ревод исходной программы по ее разобранной структуре в некото-

рый объектный код.

.
- 17 -

 21.5. Понятие о проходах
Всякий просмотр текста исходной программы или какого-либо

его промежуточного представления называется  2проходом 0. В за-

висимости от числа проходов трансляторы делятся на однопроход-

ные и многопроходные.

Как правило, однопроходный транслятор сложнее реализо-

вать, однако он может оказаться более эффективным по сравнению

с многопроходным. Многопроходные трансляторы легче для реали-

зации; кроме того, при таком подходе удобно представить весь

проект как последовательность подзадач. Эти подзадачи могут

быть поручены для выполнения отдельным исполнителям. Важную

роль здесь играет согласование со всеми разработчиками интер-

фейсов между отдельными проходами.

На рисунке 4 была представлена принципиальная схема ком-

пилятора. При этом, не уточнялось, какие именно проходы будут

осуществляться. Формально число проходов по этой схеме опреде-

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

- четыре.

Выбор схемы компиляции во многом определяется приоритет-

ными целями [11]. Укажем некоторые такие цели:

1) получение эффективного объектного кода (критерий -

время исполнения объектной программы);

2) получение минимального ( по размерам) объектного кода;

3) минимальное время компиляции;

4) разработка малого (по размерам) компилятора;
1   2   3   4   5   6   7   8   9

Похожие:

Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций Владимира Климентьева по истории философии, отредактированный...
Рекомендовано Министерством общего и профессионального образования Российской федерации в качестве учебника для студентов высших...
Конспект лекций Рекомендовано Учебно-методи iconКурс лекций 2-е издание, стереотипное Минск 2005 удк 008(076. 6)
Рекомендовано к изданию Комиссией по приемке и аттестации электронных версий учебных и учебно-методических материалов Академии управления...
Конспект лекций Рекомендовано Учебно-методи iconС. П. Филин Концепции современного естествознания: конспект лекций
Конспект лекций соответствует требованиям Государственного образовательного стандарта высшего профессионального образования РФ и...
Конспект лекций Рекомендовано Учебно-методи iconУчебно-методический комплекс Специальность: 080801. 65 (351400) Прикладная...
С 56 Современная информационная культура: Учебно-методи­ческий комплекс / авт сост. С. Б. Голубцов – спб.: Ивэсэп, 2010. – 42 с
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций раскрывает содержание и структуру учебной дисциплины...
Налоговое право : конспект лекций / сост доцент Р. В. Бобринев; Кузбасский институт экономики и права. – Кемерово, 2011 – 144 с
Конспект лекций Рекомендовано Учебно-методи iconТема Содержание
Нормативно-правовые доку­менты и учебно-методи­ческое обеспе­чение к началу учебного года
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций Анализ рынка Форекс
Учебно-тематический план дисциплины «Учет и операционная деятельность в банках» 7
Конспект лекций Рекомендовано Учебно-методи iconУчебно-методический комплекс по дисциплине «Философия права»
Учебно-методический комплекс включает учебную программу курса, учебно-тематический план, конспект лекций, планы проведения семинарских...
Конспект лекций Рекомендовано Учебно-методи iconИ. В. Кузьмин «29» августа 2013 года
...
Конспект лекций Рекомендовано Учебно-методи iconОрганизация производства курс лекций
Рекомендовано к печати методической комиссией экономического факультета ггау, протокол №1 от 22. 09. 2004 г
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций по философии Часть 1 Античная философия Новосибирск...
Савостьянов А. Н. Конспект лекций по философии / Новосиб гос ун-т. Новосибирск, 2007. Ч. Античная философия. 68 с
Конспект лекций Рекомендовано Учебно-методи iconИнформационный бюллетень новых поступлений книг за сентябрь 2011 года
Амангельдиева Ж. А. Финансы: учебно-методи-ческий комплекс. Астана: Казату, 2010. 146с. 1 Сбо., 2 н а., 2 ч з., 1 оф., 59 уч а
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций по курсу хозяйственного права тема Понятие хозяйственного права
Кафедра Истории, социологии и права Назаров Андрей Александрович конспект лекций по курсу хозяйственного права
Конспект лекций Рекомендовано Учебно-методи iconРабочая учебная программа по дисциплине конспект лекций по дисциплине
Дисциплина входит в федеральный компонент профессионального цикла дисциплин специальности и является обязательной для изучения. Данный...
Конспект лекций Рекомендовано Учебно-методи iconРабочая учебная программа по дисциплине конспект лекций по дисциплине
Дисциплина входит в цикл общих математических и естественнонаучных дисциплин специальности и является дисциплиной по выбору студента....
Конспект лекций Рекомендовано Учебно-методи iconКонспект лекций по высшей математике. В 2 частях. Часть М.: Айрис-пресс,...
Баранова Е. С., Васильева Н. В., Федотов В. Л. Практическое пособие по высшей математике. Типовые расчеты. Учебное пособие. — Спб:...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск