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

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

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

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

например), а собственно редактирование - с их помощью. Соответственно вывод

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

непосредственно на наборную машину.

Наконец, в процессе решения одной задачи внешняя среда может измениться

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

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

причинам.

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

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

особые сложности при программировании обмена и ставит проблему экономии

(оптимизации) усилий создателя программы. Общий прием борьбы со сложностью

такого рода нам хорошо знаком: нужен аппарат абстракции-конкретизации.

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

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

моделировании внешней среды своей программы. При этом удается в значительной

степени игнорировать специфические особенности весьма разнообразных

потенциальных внешних устройств. Так что содержательная часть программы

пишется один раз, а настройка (конкретизация) на специфическое внешнее

устройство выполняется в процессе связывания с этим устройством.

Однако процесс связывания при обмене с внешней средой имеет важную

особенность. В общем случае в этом процессе невозможно обойтись без полного

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

заново. Таким образом, аппарат связывания, ориентированный на обмен с

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

программирования.

3. Человеческий фактор. Третья особенность в том, что в качестве

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

своими специфическими свойствами и требованиями. Пример такого свойства -

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

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

определенной деятельности виде.

С учетом того, что данные должны располагаться на ограниченном

пространстве экрана, стандартном листе бумаги или чертеже и при этом

создавать впечатляющий зрительный и (или) звуковой образ, возникает

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

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

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

форматирования. Все остальное должно программироваться явно с применением

средств развития.

4. Динамизм и относительная ненадежность. Четвертая особенность -

динамизм внешних объектов. Из-за относительной независимости поведения

внешних объектов достаточно полный статический (при трансляции программы)

контроль их поведения невозможен.

Например, невозможно гарантировать, например, правильность работы

человека с клавиатурой или сохранность файла на внешнем носителе. В случае

внутренних объектов статический контроль возможен именно за счет того, что

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

Скажем, у целой переменной не может быть вещественного значения, потому что

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

ограничениями ЯП нельзя запретить человеку ошибаться или испортить внешний

носитель.

Поэтому при управлении обменом с внешней средой совершенно

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

Итак, динамизм сочетается с ненадежностью внешних объектов.

5. Параллелизм. Пятая особенность - существенная асинхронность

поведения внешних объектов по отношению к исполнителю. Это, конечно, также

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

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

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

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

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

самостоятельно существовать активные объекты (устройства) со своим

"жизненным ритмом", приводит к применению в области обмена с внешней средой

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

Итак, завершая знакомство со специфическими особенностями обмена,

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

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

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

представлением, и исключения, и асинхронные процессы. А также родовые

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

рассматриваемая тема достойно завершает общее знакомство с базовым языком

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

характерные свойства в совокупности. Для Ады это естественно. Ведь

программирование обмена - это в общем случае и есть программирование

исполнителя как системы, встроенной в окружающую среду (т.е. объемлющую

систему), работающую в реальном масштабе времени.

11.2. Назначение и структура аппарата обмена

В соответствии с принципом обозначения повторяющегося специфика обмена

оправдывает появление в развитых ЯП специализированного аппарата обмена.

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

(именование внешних объектов, связывание внешних объектов с внутренними,

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

заранее неизвестной природы).

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

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

Как правило, ЯП содержит достаточно абстрактную машинно-независимую модель

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

связывания (конкретизации обмена с учетом реальной внешней среды) решаются

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

операционной системы. При этом подключение совершенно новых устройств

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

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

системными программистами.

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

внешнего устройства". Другими словами, это абстрактное устройство,

отражающее существенные особенности реальных физических устройств некоторого

класса и играющее роль модели таких устройств.

Важнейшая с точки зрения обмена особенность устройства ввода-вывода

состоит в том, что к нему можно применять операции передачи и (или)

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

отражена во всех логических устройствах обмена. Более тонкие особенности

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

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

обмену и т.п.

11.2.1. Файловая модель

Одна из наиболее распространенных моделей обмена - файловая модель. В

ней внешние устройства представлены файлами. Файлы естественно считать

именованными объектами некоторого предопределенного типа (ограниченного

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

файловая отличается независимостью файлов.

Если специально не оговорено обратное, то данные из различных файлов

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

данное, переданное в другой файл.

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

теками (иногда связывая с этими названиями определенную специфику).

Наиболее распространенные файловые модели - последовательная и

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

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

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

(магнитные ленты), прямого доступа - дисководы (магнитные диски).

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

данные только в том порядке, в котором они были ранее переданы. Особенность

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

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

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

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

Соответствующий аппарат обмена называют аппаратом обмена высокого уровня.

Название связано с "высоким уровнем" абстракции соответствующей модели. Он

проявляется в практически полном отсутствии в этой модели специфических

особенностей реальных устройств обмена (нет никаких зон МЛ, дорожек или

цилиндров МД и т.п.).

В Аде имеется и аппарат обмена низкого уровня. Его зависимость от

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

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

или получаемыми данными (в соответствии с назначением и индивидуальными

особенностями реального устройства). Априори не предполагается никакого

аналога сохранения этих данных в именованных файлах.

11.3. Файловая модель обмена в Аде

Файловая модель представлена в Аде четырьмя предопределенными родовыми

пакетами: последовательный_обмен, прямой_обмен, текстовый_обмен и

исключения_обмена. Приведем в качестве примера спецификацию одного из этих

пакетов. Подробнее со средствами обмена в Аде можно познакомиться в [17].

11.3.1. Последовательный обмен

with исключения_обмена;

generic

type файловый is limited private ;

package последовательный_обмен is

type файловый is limited private ;

type режим_обмена is (ввод, вывод);

-- управление файлами

procedure создать (файл :in out файловый; -- внутренний файл

режим : in режим_обмена;

имя : in строчный := " "; -- внешний

доступ: in строчный := " ");

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

procedure открыть (файл :in out файловый;

режим : in режим_обмена;

имя : in строчный;

доступ: in строчный := " ");

procedure закрыть (файл :in out файловый);

procedure удалить (файл :in out файловый);

procedure сначала (файл :in out файловый;

режим : in режим_обмена);

procedure сначала (файл :in out файловый);

function режим (файл : in файловый) return режим_обмена;

function имя (файл : in файловый) return строчный;

function доступ (файл : in файловый) return строчный;

function открыт (файл : in файловый) return BOOLEAN;

-- операции собственно обмена

procedure читать (файл :in файловый;

элемент : out тип_элемента);

procedure писать (файл :in файловый;

элемент : out тип_элемента);

function конец_файла (файл : in файловый) return BOOLEAN;

-- исключения

статус_неправильный : exception renames

исключения_обмена.статус_неправильный;

-- файл не открыт или попытка открыть неоткрытый файл

режим_неправильный : exception renames

исключения_обмена.режим_неправильный ;

-- ввод из выводного или наоборот

имя_неправильное : exception renames

исключения_обмена.имя_неправильное ;

-- очевидно

использование_неправильное : exception renames

исключения_обмена.использование_неправильное ;

-- попытка создать входной с доступом выходного и т.п.

устройство_неисправно : exception renames

исключения_обмена.устройство_неисправно ;

-- отказ соответствующего внешнего устройства, не позволяющий

-- завершить операцию обмена

закончен_файл : exception renames

исключения_обмена.закончен_файл ;

-- попытка прочитать маркер конца файла

данные_неправильные : exception renames

исключения_обмена.данные_неправильные ;

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

-- типом элемента .

private

-- определяется реализацией языка

end последовательный_обмен ;

[Представлено формализованное описание абстрактной модели

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

воспользовались самим языком Ада. Спецификацию пакета можно рассматривать в

качестве синтаксической части такого формализованного описания. Она

полностью определяет строение вызовов операций и объявлений данных,

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

операций и объявлений окончательно фиксируется отсутствующими частями (в том

числе телами) пакетов. Для пользователя она становится известной из

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

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

посредством Ады реального специализированного (проблемно-ориентированного)

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

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

(прикладные пакеты), которые не предполагается полностью (или даже частично)

реализовывать на Аде. Кстати, именно таков наш язык управления обменом (для

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

возможностями инструментальной и целевой машин). Использование Ады в

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

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

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

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