Главная » Просмотр файлов » В.Ш. Кауфман - Языки программирования - концепции и принципы (1990)

В.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (1160787), страница 26

Файл №1160787 В.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (В.Ш. Кауфман - Языки программирования - концепции и принципы (1990)) 26 страницаВ.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (1160787) страница 262019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

представления - УКАЗАНИЯ АДРЕСА.

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

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

играет особую роль. Это может быть регистр определенного периферийного

устройства; адрес, по которому передается управление при определенном

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

Чтобы можно было записать указание адреса, должен быть доступен тип

"адрес". Содержательно значения этого типа играют роль адресов памяти

целевой машины, формально это один из предопределенных типов. В Аде его

определяющим пакетом считается предопределенный пакет "система",

характеризующий целевую машину. Следовательно, тип "адрес" становится

доступным с помощью указателя контекста вида

with система; use система;

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

for управл_ячейка use at 16#0020# ;

после at записана шестнадцатеричная константа типа "адрес". Такое указание

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

объявления объекта управл_ячейка.

task обработка_прерывания is

entry выполнить ;

for выполнить use at 16#40# ;

-- вызвать вход "выполнить" - это значит

-- передать управление в ячейку 16#40#

end обработка_прерывания ;

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

слово : constant := 4 ; -- элемент памяти - байт,

-- "слово" - из четырех байтов.

type состояние is (A,M,W,P) ; -- четыре характеристики состояния

-- каков код символов (ASCII или EBCDIC);

-- разрешены ли прерывания; ждет ли процессор;

-- супервизор или задача

type маска_байта is array (0 .. 7) of BOOLEAN ;

type маска_состояния is array (состояние) of BOOLEAN ;

type маска_режима is array (1..4) of BOOLEAN ;

type слово_состояние_программы is

record

маска_системы ; маска_байта ;

ключ_защиты : INTEGER range 0 .. 3 ;

состояние_машины : маска_состояния ;

причина_прерывания : код_прерывания ;

код_длины_команды : INTEGER range 0 .. 3 ;

признак_результата : INTEGER range 0 .. 3 ;

маска_программы : маска_режима ;

адрес_команды : адрес ;

end record ;

-- ниже следует указание представления для этого типа

for слово_состояния_программы use

record at mod 8 ; -- адреса записей указанного типа

-- должны быть нулями по модулю 8, т.е.

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

-- к расположению полей записи относительно ее начала

маска_системы at 0 * слово range 0 .. 7 ; -- маска системы

-- расположена в первом байте двойного слова.

ключ_защиты at 0 * слово range 10 .. 11 ;

-- разряды 8 и 9 не используются.

состояние_машины at 0 * слово range 12 .. 15 ;

причина__прерывания at 0 * слово range 16 .. 31 ;

код_длины_команды at 1 * слово range 0 .. 1 ;

признак_результата at 1 * слово range 2 .. 3 ;

маска_программы at 1 * слово range 4 .. 7 ;

адрес_команды at 1 * слово range 8 .. 31 ;

end record ;

Здесь применено так называемое УКАЗАНИЕ ПРЕДСТАВЛЕНИЯ ЗАПИСИ. Запись

типа слово_состояние_программы располагается в двойном слове, т.е. по

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

относительно начала записи с точностью до разряда.

Итак, машинно-независимые языковые конструкты, примером которых служат

средства управления представлением в Аде, позволяют в машинно-независимой

форме указывать машинно-зависимые характеристики программ. Это один из

аспектов ЯП, которые позволяют отнести Аду к "машинно-ориентируемым" (но

машинно-независимым!) ЯП.

Вопрос. Какие еще аспекты Ады можно отметить с этой связи?

Подсказка. В Аде немало свойств, "определяемых реализацией", например,

некоторые свойства атрибутных функций.

4.10. Классификация данных и система типов Ады

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

мы выделили семь факторов их классификации. Опираясь на эту классификацию,

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

технологических потребностей:

1. Содержательные роли данных. На первый взгляд возможность явно

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

автоматически контролировать связывания, кажется почти фантастической.

Теперь мы знаем, что идея очень проста. Во-первых, нужно, чтобы

содержательная роль объекта получила имя, отличающее ее от других ролей. Во-

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

которой он должен выступать при выполнении программы. Имя роли естественно

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

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

участвующих в этих действиях.

При таком прогнозировании контроль за соответствием поведения объектов

объявленным их ролям становится легко формализуемым. Его обеспечивает

концепция типа, ориентированная на имена. В частности, реализованная в Аде

концепция уникальности типа.

2. Строение данных. Классификация по структуре данных имеется

практически во всех ЯП. В Аде по этому фактору различаются скалярные,

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

Соответственно выделяются и категории типов данных. Правила объявления типов

данных в Аде таковы, что к одному типу можно относить только данные,

формально "близкие" по своему строению. При необходимости подчеркнуть, что

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

объявить в качестве вариантов так называемого вариантного комбинированного

типа.

3. Изменчивость данных. При объявлении типа данных в Аде всегда

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

объявляют отдельный объект или целый класс объектов (подтип), изменчивость

можно ограничить. Концепция типа в Аде в целом обеспечивает квазистатическое

управление изменчивостью.

4. Способ определения. Различаются предопределенные типы и объявляемые

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

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

неотличимыми от предопределенных. Без приватных типов можно вводить новые

операционные абстракции, но не абстракции данных.

5. Представление. Ада позволяет управлять, во-первых, относительным

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

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

представлением, когда речь идет о представлении любых типов на целевой

машине (посредством указаний представления).

6. Внешние свойства. Набором применимых операций в Аде управляют

объявлением типа и определяющим пакетом.

7. Управление доступом. Доступом в Аде управляют с помощью приватных

типов, приватной части, а также разделения спецификации и реализации пакета.

Действуют также указатель контекста with, указатель сокращений use, блочная

структура и другие средства.

Вопрос. Какие, например?

Подсказка. Ссылочные типы. А еще?

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

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

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

Упражнение. Предложите такие средства.

Подсказка. Уже упоминавшиеся модули представления, а также более тонкое

управление доступом, полномочиями, наследованием и т.п.

[Наша классификация отражает характеристики данных, обычно охватываемые

концепцией типа. Но данные различаются и по другим факторам. Один из них -

отношение данного и модуля программы. Очень четко такое отношение отражено в

языке Том [8] понятием класса данного. Выделены глобальные данные,

параметры, локальные и синхропараметры. Аналогичные понятия имеются,

конечно, и в других ЯП.

Вопрос. Как Вы думаете, разумно ли объединить указанное понятие класса

и типа?

Подсказка. Не забудьте, в частности, о концепции уникальности типа.]

На этом закончим знакомство с системой типов в Аде. Читателя,

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

отсылаем к увлекательной книге А.В.Замулина [10].

4.11. Предварительный итог по модели А

Итак, выделив три основные абстракции - данные, операции и связывание,

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

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

строим "максимальную" модель такого языка, модель А).

В отличие от традиционных ЯП (Фортрана, Алгола, Бейсика и др.), язык

Ада ориентирован скорее на данные, чем на операции. В нем в первую очередь

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

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

структуру данных.

Решая наши модельные задачи в таком стиле, мы одновременно вникали в

суть основных абстракций программирования. Параллельно мы знакомились с

различными видами операций (для каждой категории типов - свои) и с

различными видами связывания (статическое, динамическое, квазистатическое,

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

программистом).

Вне поля нашего зрения осталось еще несколько важных абстракций,

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

и построение нашей модели А.

Упражнение. Приведите примеры перечисленных видов связываний.

Вопрос. Как Вы думаете, чем отличается модель А от языка Ада?

5. Раздельная компиляция

5.1. Понятие модуля

Одна из важнейших концепций ЯП - концепция модульности. Ей посвящена

обширная литература (полезно почитать, в частности, [12]. В самом широком

смысле модуль - это абстракция от контекста, доведенная до воплощения в

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

разнообразных контекстах с минимальными накладными расходами. Образно

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

может быть даже запрещено авторским правом).

В связи с тем, что трансляция играет особую роль при использовании ЯП,

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

оформленных по специальным правилам фрагментов текста на ЯП, пригодных для

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

использования без полной перетрансляции. Относительность указанной

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

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

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

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

используемых, но не определенных в рассматриваемом модуле.

5.2. Виды трансляций.

Различают так называемую "цельную" трансляцию (когда модульность

отсутствует - транслятору предъявляется вся программа целиком; примером

служат стандартный Паскаль и первые версии Турбо-Паскаля), раздельную

трансляцию (когда предъявляются модуль и трансляционная библиотека -

примером служат Ада и Модула-2), "шаговую" или "инкрементную" трансляцию

(когда транслятору предъявляется лишь очередное дополнение или исправление к

программе - примером служит инструментальная система для создания Ада-

программ на специализированном компьютере R1000) и, наконец, "независимую"

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

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

примером служит Фортран).

У каждого вида трансляции свои преимущества и недостатки, довольно

очевидные.

Вопрос. Какие?

5.3. Раздельная трансляция

Раздельная трансляция (компиляция) модулей - одна из критичных

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

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

программы (почему?).

В Аде ТРАНСЛЯЦИОННЫЙ МОДУЛЬ (или просто МОДУЛЬ) - это программный

сегмент, пригодный для раздельной трансляции. Иначе говоря, это фрагмент

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

посредством ТРАНСЛЯЦИОННОЙ БИБЛИОТЕКИ.

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

Тип файла
Документ
Размер
1,26 Mb
Тип материала
Высшее учебное заведение

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

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