Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 30

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 30 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 302019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 30)

Точки начала и конца подпрограмм синтаксически не определены. Программа просто выполняется, обращение к функции начинает выполнение новой подпрограммы, а обращение к функции КЕТ0кИ завершает ее выполнение. Поведение программы является полностью динамическим. Фактически любой оператор может быть частью основной и рограм м ы и одновременно — частью любого числа поди рогра»1 м в том с мыса е, что он может быть выполнен в какой-то момент как часть основной программы, а позже — как часть выполняемой подпрограммы. Такая довольно хаотичная организация программы имеет смысл, только если се трансляция происходит во время выполнения и выполнение новых сшераторов и подпрограмм осуществляется с помощью сравнительно простых механизмов, Язык ВА81С [68! является примером еще одного языка, программы которого выполняются вопреки некоторым целям, преследуемым при разработке языков программирования.

Он был разработан в Дартмутском колледже (Пагг1воц!!1 Со!!ейе) в 60-х гг. Основной целью разработчиков было создать язык, который могли бы с легкостью использовать люди, далекие от программирования и точных наук. Такой язык, безусловно, должен был обладать чрезвычайно простым сингаксисом. Хотя длинные программы на языке ВА81С довольно трудны для понимания, этот язык чрезвычайно эффективен для написания ко!ютких»одноразовых» программ, которые требуется выполнить всего несколько раз, после чего их можно и уничтожить, Во врезке «Обзор языка 3.!» приведено краткое описание 104 Глава 3.

Вопросы трансляции языка ВАВ)С. Однако развитие этого языка продолжалось, и последующие его версии становились все более сложными, часто достигая структуры языков типа Разса! в отношении мощности, синтаксиса и сложности. Обзор языка 3.1. ВАЗ)С Характеристика. Язык с чрезвычайно простыми синтаксисом и семантикой: пронумерованные операторы, имена переменных, состоящие из одной буквы и цифры, простой оператор (Е цикл РОЯ и оператор СОВЕ)В для вызова подпрограммы.

История. ВАВ!С (Вер!ппегз Ай-рогрозе ВуплЬо!(с )пз(гос!юп Сос)е) был разработан Томасом Куртцем (Тйогпаэ Кщ(д) и Джоном Кемени (долл Кеплепу), сотрудниками Дартмутского колледжа (Оаг1гпооГЛ Сойере), в начале 60-х гг. Целью разработчиков было создать простой в использовании язык программирования, в особенности для студентов не технических специальностей. Для увеличения эффективности вычислений ВАВ(С был реализован как интерактивный язык, причбм зто было сделано задолго до того, как режим разделения времени стал стандартом системной архитектуры, ВА81С также является ярким примером внутренне противоречивого языка программирования.

Те, кто критикует этот язык, повторяют шутку, что ВАВ)С вЂ” это оксиморон' из одного слова. Хотя синтаксис языка ВА81С очень прост в изучении, однако при попытке написать программу длиной более одной страницы сложность соединения компонентов программы в единое целое делает получающийся код совершенно нечитаемым. Именно по этой причине в следующие версии ВА81С были внесены изменения, связанные с допущением более длинных имен переменных, включением в язык имен подпрограмм и увеличением гибкости структур управления. Эти изменения привели к тому, что ВАЗ!Остал похож скорее на язык типа Рааса! и РОЯТЯАЬ1, чем на свой исходный простой вариант образца 60-х гг.

Пример. Программа, вычисляющая сумму ' + 2' + ... «10« 100 ЙЕИДЙК 5 15 5ОИ. ! 15 1МОЕХ 200 ЕЕТ 5=0 300 ЕОй 1=! ТО 10 400 ЕЕТ 5 - 5 ° 1*1 500 ЛЕХТ 1 600 йЕИДйК МЕХТ 15 ЕМО ОЕ ТООР 700 РЙ1МТ "5ОИ 15 ", 5 000 5ТОР 900 йЕИДЙК ОТНЕЙ 5ТДТЕИЕЛ 15: 1Е 5>400 ТНЕМ 200 - !огапсг: Го 200) 1000 ЙЕМЯЙК ОТНЕЙ 5ТАТЕИЕМТ5 ИМ А(20») - д аггау ог 20 1100 ЙЕИдйК ОТНЕЙ 5ТА«ЕМЕМТ5 005НВ 100, ЙЕТОЙМ - 5оогащлоед 1200 ЙЕМдйК ОТНЕЙ 5ТАТЕМЕМТ5 ЙЕАО д-!прот Ссылка. Т.

Е. Ког1д "ВА81С", АСЧ Н!з(огу о! Ргоргапнпшр Еапроарез Соп1егепсе, Еоз Апре(ев (оопе 1978) (6!ОРТА(«) («)о1(сев (13)8 (Аороз1 1978]),103 — 118. Оксиморон (оксюморон) — сти лис гический оборот, в котором сочетаются семантл~чески контрастные слова, создающие неожиданное смысловое единство, например «живой груп», «убогая росио~ни». — Примеч. нлрч. Ред. 3.2. Этапы трансляции 105 3.2.

Этапы трансляции Процесс трансляции исходной программы, представленной синтаксическими структурами, в ее исполняемую форму — это основной процесс при реализации любого языка программирования. Он может оказаться достаточно простым, как в случае языков Рег!, 1.15Р пли Рго1оц, но чаще он довольно сложен.

Большинство языков могли бы быть реализованы с весьма тривиальным процессом трансляции, если бы можно было согласиться с написанием программного интерпретатора и низкой скоростью выполнения получаемого кода. Однако эффективность выполнения п1хтграммы настолько важна, чт.о большая часть усилий направлена на транслирование программы в эффективно выполняемые структуры. Процесс трансляции заметно усложняется по мере того, как форма выполняемой программы все более отдаляется от структуры исходной программы. В предельном случае оптимизирующий компилятор для сложного языка, например языка Лс1а, может полностью изменить программные структуры, чтобы добиться более эт1х~тективного выполнения.

Исходная программа ЭТАПЫ АНАЛИЗА 4 исходной ПРОГРАММЫ збора ромежуточный код Объектный код других компонентов ЭТАПЫ ГЕНЕРАЦИИ ОБЪЕКТНОГО КОДА код код компиляция ЗАГРУЗКА Рис. 3.2. Структура компилятора 10б Глава 3. Вопросы трансляции языка Логически процесс трансляции можно разбить па две основные части анаша исходной программы н синтез выполняемой объектной программы. В большинстве трансляторов эти логические стадии не имеют четкой границы; чаще они бывают настолько взаимосвязаны, что анализ и синтез чередуются — часто на уровне операторов.

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

Если первоочередное значение имеет скорость компиляции (напригнер, для компиляции учебных программ), при разработке транслятора можно применить стратегию единственного прохода. В таком случае программа сразу же после ее анализа преобразуется в объектный код. Лрхитектура языка Рааса! разрабатывалась именно так, чтобы длн него можно было разработать однопроходный компилятор. Но если скорость выполнения программы имеет большее значение, то следует разрабатывать компилятор, делающий три (или более) прохода. Во время первого прохода осуществляется анализ исходной программы, во втором проходе исходная программа переписывается в более эффективную форму с использованием различных алгоритмов оптимизации, а во время третьего прохода генерируется объектный код. По мере того как расширяются наши познания в области технологии компиляции, взаимосвязь между количеством проходов и скоросп ю компиляции становится все менее очевидной.

Более важным фактором оказывается сложность самого языка, а не количество проходов, совершаемое компилятором для анализа программы. 3.2.1. Анализ исходной программы Для транслятора исходная программа представляет собой длинную однообразную цепочку, состоягцую из тысяч или десятков тысяч символов, Разумеется, программисту тектт программы представляется состоящим из подпрограмм, операторов, объявлений и т. и. Для транслятора такого разделения не существует. Транслятор производит анализ структуры программы, разбирая ее текст последовательно, символ за символом. Лексический анализ, нли сканирование.

Начальный этап любой трансляции состоит в выделении в исходной программе элементарных составляющих; идентификаторов, разделителей, символов операций, чисел, ключевых и необязательных слов, пробелов, комментариев и т. д. Этот этап называется лексическим алазизом, а те программные единицы, которые получак>тся в результате такого анализа, называются лексическими единицами, или лексемами. Обычно лексически й анализатор !или сканер) — это программа ввода для транслятора, которая последовательно читает строки исходной программы, разбивает их на отдельные лексемы и передает эти лексемы на дальнейшие стадии трансляции, чтобы использовать их в анали- 3.2.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6390
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее