Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 54

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 54 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 542019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

У статического обзора данных есть и другие недостатки, подробно рассмотренные в книге С1аг)се, тт(1едеп апд 'это!Г (1980). Для решения проблем, связанных со статическим обзором данных, ао многих новейших языках программирования используется конструкция инкапсуляции, подробно рассмотренная в главе 8. Я.Э.Я. Дииомическив области видимости Область видимости переменных в таких языках, как АР(., 8)чОВО(.4 и ранние версии языка ).18Р, является линамической. Динамический обзор данных (дуняш)с зсор(п8) опирается на последовательность вызова подпрограмм, а не на их пространственную взаимосвязь.

Следовательно, область видимости можно определить только во время выполнения программы. Рассмотрим повторно процедуру Ь89 из раздела 4.8.1: ргооесзиге Ь89; чег х : зпгедегг ргооеацге анЬ1( Ьеадп ( вцЬ1 ...х... епс1; ( яцЬ1 ) ргооеецге вцЬ2( чаг х : Зпседегг Ьес(ллъ ( вцЬ2 ) ешз; ( аиЬ2 Ьеадп ( Ьзд ) аг ( Ь89 ) Предположим, что правила динамического обзора данных применимы к нелокальным ссылкам.

Значение идентификатора х, к которому обращаются в подпрограмме вцЬ1,— линамическое, оно не может определяться во время компиляции. В зависимости от по- 19$ Глава 4. Имена, связывание, проверка типов н области видимости следовательности вызова это значение может относиться к переменной из предыдущего обьявления переменной х. Для того чтобы определить корректное значение переменной х во время выполнения программы, можно начать его поиск среди локальных объявлений. Этим же способом начинается поиск и прн статическом обзоре данных, правда. на этом их сходство заканчивается. При неудачном завершении поиска среди локальных объявлений рассматриваются объявления динамического родителя, или вызывающей процедуры.

Если объявление переменной х не будет найдено и там, то поиск продолжается в динамическом родителе этой процедуры, н так далее, пока не будет найдено объявление переменной х. Если оно не будет найдено ни в одном из динамических прелков, то это будет ошибкой периода выполнения программы (гцп-йще еггог). Рассмотрим лве различные последовательности вызовов процедуры виЬ1 в приведенном выше примере. В первом случае процедура Ь19 обращается к процедуре ацЬ2, которая вызывает процедуру ацЬ1. При этом поиск перейдет от локальной процедуры виЬ1 к вызывающей ее процедуре эиЬ2, в которой находится объявление переменной х. Таким образом, в данном случае обращение к переменной х процедуры вцЬ1 является обращением к переменной х. объявленной в процедуре виЬ2.

Во втором случае процедура аиЬ1 вызывается непосредственно из процедуры Ь19, При этом динамическим родителем процедуры зцЬ1 является процедура Ь19, и обращение будет направлено к переменной х, объявленной в процедуре Ь19. 4.8.5. Оценка динамического обзора данных Воздействие динамического обзора данных на программирование значительно.

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

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

Использование динамического обзора данных также затрудняет чтение программ, поскольку для определения нелокальных переменных, на которые имеются ссылки, должна быть известна последовательность вызова подпрограмм. Если программу читает человек, то определить последнее практически невозможно. В заключение отметим, что обращение к нелокальным переменным в языках с динамическим обзором данных происходит значительно медленнее, чем то же обращение, но в языках со статическим обзором.

Причины этого подробно описаны в главе 9. 199 4.8. Область видимости С другой стороны, у динамического обзора данных есть и достоинства. В некоторыз случаях параметры, передаваемые от одной подпрограммы к другой, являются простыми переменными, определяемыми в вызывающем модуле. В языках с динамическим обзо. ром ланных не требуется передачи ни одной из этих переменных, поскольку все они неявно видимы в вызываемой подпрограмме.

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

Именно по этим причинам в большинстве современных диалектов языка ).!эР динамический обзор данных был заменен статическим. Далее в главе 9 рассматриваются методы реализации статического и динамического обзора данных. 4.9. Область видимости переменных и време ИХ ЖИЗНИ Иногда обласп видимости и время жизни переменных оказываются связанными между собой.

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

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

Область вилимости и время жизни не связаны также при вызовах подпрограмм. Рассмотрим следующую функцию языка С++: тоЫ ргзигйеас)ег () ( ) /* конец функции ргзпс)зеас(ег*/ тод6 солзрцге() ( дпС яцв! ргзпс)зеаг)ег()г ) /* конец функции соврите */ Область видимости переменной вцп полностью находится внутри функции соприте.

Она не распространяется на тело функции рг1пг)зеас)ег, хотя эта функция выполняется в середине функции сотрцге. Тем не менее, время жизни переменной вшп распространяется на время выполнения функции ргзпг)зеас)ег. Какая бы ячейка памяти не была выделена переменной эцлз до вызова функции ргзпг)зеас(ег, эта связь сохраняется во время и после выполнения этой функции. Глава 4. Имена, связывание, проверка типов и области видимости 200 4.30. Среды ссылок ргосе<1игв яцЬ1; чаг х, у : 1пседегг Ьеддп ( яцЬ1 < -----------------1 (;( Ь1) рхосесйзгв яцЬ2г чаг х : 1ггедег( ргоое<1иге яцЬЗг чаг х : Тпседег; Ьедз.п ( яцЬЗ ) < -----------------2 епс(г ( яцЬЗ ) Ьедхп ( яцЬ2 < "----------------3 епг(г ( яцЬ2 ) Ьеддп ( ехатр1е ) < епс(.

( ехагвр1е ) В указанных точках данная программа имеет следующие срелы ссылок: Точка 1 Среда ссылок переменные х и у процедуры яиЬ1, переменные а и Ь программы ехаир1е переменная х процедуры яцЬЗ, (переменная а процедуры яиЬ2 скрыта), переменные а и Ь программы ехаир1е 201 4.10. Среды ссылок Средой ссылок (геГегепс(пй епч(гопгпеп() оператора называется совокупность всех имен, видимых в данном операторе. Срела ссылок оператора в языках со статическим обзором данных состоит из переменных. объявленных в его локальной области видимости, и совокупности всех видимых переменных из областей видимости его предков.

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

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

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

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