Математика

Физика

Химия

Биология

Техника и    технологии

Алгоритмические языки реального времени: конструирование и разработка-Янг С.
Янг С.
60 Алгоритмические языки реального времени: конструирование и разработка: Пер. с англ. — М.: Мир, 1985.— 400 с., ил.
Книга написана известным американским специалистом по программированию. Она знакомит читателей в доступной форме и з то же время на достаточно высоком научном уровне с основными принципами построения языков программирования реального времени. Подробно разобраны применения этих принципов для языков Модула и Ада. Книга позволяет быстро ориентироваться в языках реального времени и их модификациях.
Для программистов и разработчиков математического обеспечения ЭВМ.
ОТ РЕДАКТОРА ПЕРЕВОДА
Управление различными объектами в реальном времени является в настоящее время одним из основных применений ЭВМ. В последнее десятилетие появилось очень много управляющих систем различной ориентации, и поэтому весьма актуальными становятся специфические требования к средствам программирования, и в частности требование, чтобы языковые средства адекватно обеспечивали удобство и надежность программирования и последующей эксплуатации таких систем. Практика показала, что для этого нужно существенно больше выразительных возможностей, чем предоставляют такие традиционные языки, как Алгол и Фортран.
На протяжении ряда лет ведется интенсивная теоретическая и прикладная деятельность, нацеленная на разработку и внедрение языков программирования, ориентированных на различные системы управления реальными процессами. Основным теоретическим результатом в этом направлении, по-видимому, следует признать язык программирования Ада, однако к настоящему времени этот язык еще не получил массового практического внедрения. К тому же сам язык Ада все еще находится в стадии становления, и можно ожидать в последующие годы появления в нем дальнейших изменений.
В то же время сложилась определенная методология эффективного конструирования алгоритмических языков реального времени, основывающаяся на ряде принципов, инвариантных относительно конкретного языкового воплощения. Представляется актуальной задача ознакомления с этой методологией и приобщения к этим принципам многочисленных специалистов различной квалификации, вовлеченных в проблематику программирования управляющих систем.
Успешным шагом в этом направлении является предлагаемая книга. В ней в доступной форме излагаются основные принципы конструирования языков программирования управления в реальном времени и разбирается применение этих принципов в трех языках: RTL/2, Модула и Ада, представляющих
последовательные этапы эволюции языков реального времени. Достаточно подробное описание этих языков сопровождается детальными примерами их использования.
Особое внимание уделяется языку Ада. Убедительно демонстрируется, что этот язык позволяет удобно и надежно программировать сложные системы управления реальными процессами. В значительной мере материал книги можно рассматривать как анализ фундаментальных свойств языка Ада.
В книге удачно сочетаются достаточно популярная форма и несомненная глубина изложения. Автор не только описывает конкретные алгоритмические языки, но и дает определенный круг систематизированных общих представлений о необходимых свойствах современных языков реального времени и средствах их достижения. Это полезно для ориентации разработчиков управляющих систем в имеющемся разнообразии доступных языков программирования и их модификаций. Это особенно важно потому, что в настоящее время еще рано говорить о стабильности языков реального времени.
При подготовке русского издания книги возникли проблемы, связанные с терминологией, которую в настоящее время нельзя считать устоявшейся. Мы в основном придерживались терминологии, принятой в переведенных на русский язык книгах: «Язык программирования Ада» (М.: Финансы и статистика, 1981) и П. Вегнер «Программирование на языке Ада» (М.: Мир, 1983). Отметим также, что в примерах программ для большей наглядности идентификаторы и другие выделяемые курсивом слова, как правило, переведены на русский язык.
В. В. Мартынюк
ПРЕДИСЛОВИЕ
Использование цифровых вычислительных машин характеризуется в последние годы нарастающим расширением области их применений. Но нигде это расширение не было столь впечатляющим, как в системах реального времени. Работающие в режиме реального времени вычислительные машины постоянно используются на телефонных станциях, в промышленных процессах, управлении авиарейсами, в системах спутниковой связи, медицине и т. д. По мере усложнения области применений и 'повышения стоимости разработки программного обеспечения крайне необходимым становится улучшение средств программирования. В частности, возникает большая необходимость в языках программирования, которые не только обладают достаточно выразительной силой для описания конкретного задания, но и обеспечивают поддержку для построения надежного и легко сопровождаемого программного обеспечения для работы в реальном времени.
Эта книга посвящена проектированию и разработке таких языков. Основной материал излагается в двух частях книги. В первой части подробно обсуждаются аспекты проектирования. В отдельных главах разбираются типизация данных, структурирование данных, структурирование программ, модули, мультипрограммирование, программирование для устройств низкого уровня и обработка ошибок. Везде особое внимание уделяется развитию особо надежных средств, сводящих к минимуму возможность появления программистских ошибок. Во второй части этой книги иллюстрируется разработка практических языков реального времени путем подробного описания трех конкретных языков: RTL/'2, Модула и Ада. В каждом случае сначала описываются свойства языка, а затем приводится развернутый пример его использования. Далее следует обсуждение языка с точки зрения критериев, изложенных в первой части книги.
Главная цель этой книги — дать ясное представление о факторах, определяющих проектирование современного языка
ОГЛАВЛЕНИЕ
От редактора перевода................... 5
Предисловие ....................... 7
Часть I. ПРОЕКТИРОВАНИЕ
Глава 1. Требования к проектированию языков реального времени . . (9
1.1. Характеристики систем реального времени........ 9
1.2. Общие критерии проектирования............ 13
1.2.1. Надежность.................. 13
1.2.2. Удобочитаемость ................ 14
1.2.3. Гибкость ................... 16
1.2.4. Простота ................... 16
1.2.5. Мобильность.................. 16
1.2.6. Эффективность................. 17
1.3. Требования к языку для систем реального времени..... 17
' Глава 2. Простые типы данных.................. 19
2.1. Основные понятия.................. 19
2.2. Механизмы типизации................ 22
2.2.1. Слабая типизация................. 22
2.2.2. Сильная типизация............... 24
2.2.3. Производные типы............... 25
2.2.4. Эквивалентность типов.............. 27
2.2.5. Наследование атрибутов'............. 28
2.2.6. Ограничения................. , 30
2.2.7. Подтипы...................32
2.2.8. Анонимные типы и подтипы............ 33
2.3. Перечислимые типы................. 34
2.3.1. Определенные пользователем перечислимые типы ... 35
2.3.2. Логические типы................ 37
2.3.3. Символьные типы................ 39
2.4. Числовые типы ................... 42
2.4.1. Целые типы.................. 43
2.4.2. Плавающие типы................ 46
2.4.3. Фиксированные типы.............. 48
2.5. Типизация в практических языках........... 59
Глава 3. Структурные типы данных............... 61
3.1. Структурирование данных............... 61
3.2. Массивы..................... 62
3.2.1. Понятие массива............... g^
3.2.2. Типизация с помощью массивов.......... 64
3.2.3. Многомерные массивы.............. 66
3.2.4. Конструкторы массивов............. 67
3.2.5. Реализация массивов.............. 67
3.3. Записи ...................... 68
3.3.1. Фиксированные записи.............. 68
3.3.2. Вариантные записи...............69
3.3.3. Объединения ................. 72
3.3.4. Варианты или объединения?............ 74
3.3.5. Реализация записей............... 75
3.4. Множества..................... 75
3.4.1. Понятие множества............... 75
3.4.2. Реализация множеств.............. 77
3.5. Структуры динамических данных............ 78
3.5.1. Статические и динамические переменные....... 78
3.5.2. Вопросы проектирования............. 82
3.5.2.1. Типизация динамических данных ....... 83
3.5.2.2. Расшифровка ссылок............ 86
3.5.2.3. Создание и уничтожение динамических объектов данных................. 87
3.5.3. Реализационные аспекты............. 89
3.6. Структурные типы данных в существующих языках .... 92
Глава 4. Классические программные структуры..........94
4.1. Структурирование программ..............94
4.2. Операторы управления................95
4.2.1. Основные формы............... . 95
4.2.2. Разработка операторов управления.........96
4.2.3. Примеры конструкций..............99
4.2.4. Ненормальное завершение операторов повторения . . . 102
4.3. Блочная структура . . •................103
4.3.1. Предпосылки.................. 103
4.3.2. Блоки .................... 105
4.3.3. Реализация блоков............... 107
4.4. Процедуры..................... 108.
4.4.1. Понятие процедуры............... 108
4.4.2. Параметры .................. 110
4.4.3. Правила области действия............ llSi
4.4.4. Аспекты реализации............... 118
4.5. Функции и операции................. 120
4.5.1. Функции ...................120
4.5.2. Совмещение...................122;
4.5.3. Операции...................12ft
4.6. Программные структуры в практических языках......129
Глава 5. Механизмы абстракции................ 131
5.1. Абстрактные типы данных ............... 131
5.2. Что еще связано с введением понятия модуля....... 134
5.3. Разработка механизма организации модуля....... 136
5.3.1. Общая структура................'36;
5.3.2. Спецификация интерфейса.............139-*-
5.3.3. Правила именной области действия.........141"
5.4. Аспекты реализации.................144
5.5. Механизмы абстракции в практических языках.......145
Глава 6. Параллельность...................146
6.1. Параллельность в системах реального времени......146
<.
6.2. Традиционный подход к мультипрограммированию....."'
6.3. Процессы ..................' * 1Кй
6.4. Мониторы......................1Ь,
6.5. Рандеву......................?'
6.6. Прохождение сообщений...............1Ь'
6.7. Требования к языкам реального времени.........1&ч
6.8. Аспекты реализации..................17?
6.9. Параллельность в практических языках..........I'5
.Глава 7. Программирование ввода-вывода низкого уровня ..... 177
7.1. Ввод-вывод в вычислительных системах.........177
7.2. Доступ к машинному оборудованию...........181
7.2.1. Адресация регистров ввода-вывода.........181
7.2.2. Отображение определенных пользователем типов на машинные регистры................183
7.2.3. Модули ввода-вывода..............185
7.3. Модель для программирования ввода-вывода низкого уровня 186
7.3.1. Механизмы машинного оборудования........186
7.3.2. Абстрактная модель...............187
7.3.3. Модель языка.................189
7.4. Программирование ввода-вывода............192
7.4.1. Передача одного символа данных.........192
7.4.2. Передача блоков данных с использованием МПДП . . . 195
7.5. Программирование ввода-вывода низкого уровня в практических языках................". . . . 198
Глава 8. Обработка ошибок...................199
8.1. Основные понятия..................199
8.2. Традиционные методы обработки ошибок.........201
8.3. Обработка исключений................205
8.3.1. Структурная обработка ошибок......... . 205
8.3.2. Базовые механизмы...............208
8.3.3. Распространение исключений...........213
8.3.4. Восстановление после ошибок........, . . 215
8.3.5. Исключения в параллельных процессах.......219
8.3.6. Аспекты реализации...............223
8.4. Обработка ошибок в практических языках........224
Глава 9. Проектирование языка . . . i............226
9.1. Типизация данных..................226
9.2. Структура программ.................230
9.3. Мультипрограммирование...............232
9.4. Программирование устройств низкого уровня.......235
9.5. Обработка ошибок..................236
9.6. Другие аспекты проектирования языка..........238
9.6.1. Раздельная компиляция.............238
9.6.2. Инициализация переменных............240
9.6.3. Ввод-вывод высокого уровня ...........241
9.6.4. Порождающие программные единицы........241
9.7. Выбор свойств языка.................243
9.8. Общие принципы проектирования............246
Часть II. РАЗРАБОТКА
Тлава 10. Разработка языков реального времени.........250
Глава П. Язык RTL/2....................253
11.1. Предпосылки...................253
11.2. Язык...................... 254
11.2.1. Формальный язык...............255
11.2.2. Стандартный ввод-вывод и восстановление после ошибок 267
11.3. Использование языка RTL/2.............269
11.4. Обсуждение....................279
Глава 12. Модула......................282
12.1. Предпосылки ...................282
12.2. Язык........... .........283
12.2.1. Особенности последовательного программирования . . 283
12.2.2. Особенности параллельной обработки ....... 289
12.3. Использование Модулы...............293
12.3.1. Составление очереди задач в реальном времени . . . 293
12.3.2. Составление расписания для задач пользователя . . . 295
12.3.3. Слежение за временем.............298
12.3.4. Терминальный ввод-вывод............302
12.3.5. Интерфейс с оператором............306
12.3.6. Программа управления задачами.........307
12.4. Реализация Модулы.................309
12.5. Обсуждение....................315
Глава 13. Ада........................318
13*1. Предпосылки ...................318
13.2. Язык ......................321
13.2.1. Общий стиль................ . 321
13.2.2. Простые типы данных.............323
13.2.3. Структурные типы данных...........329
13.2.4. Классическая программная структура.......335
13.2.5. Абстракция данных..............339
13.2.6. Параллельность ...............343
13.2.7. Программирование ввода-вывода низкого уровня . . 347
13.2.8. Обработка исключений ............349
13.2.9. Раздельная компиляция............352
13.2.10. Ввод-вывод.................354
13.3. Использование языка Ада..............355
13.3.1. Удаленная система приема данных........355
13.3.2. Спецификация ................358
13.3.3. Реализация.................365
13.4. Обсуждение....................380
Литература........................386
Именной указатель.....................391
Предметный указатель....................392

Цена: 150руб.

Назад

Заказ

На главную страницу

Hosted by uCoz