Н. Джехани - Язык Ада (1988) (1160771)
Текст из файла
Н.,ЫКЕХАНИ зык АЛЬ Перевод с английского под редакцией д-ра техн. наук А.А. Красилова, канд. техн. наук О.Н. Перминова 9 Москва «Мир» 1988 ББК 22.18 Д40 УДК 681.3 Переводчики: Е.Н. Вахрушева, Т.И. Гусева, О.Г. Карачаров, В.А. Колганов, В.А. Хитров, А.В. Черепанов, В.П. Чепкасов Джехани Н. Д40 Язык Ада: Пер. с англ. — Мл Мир, 1988. — 552 с., ил. 1БВ)ч( 5-03-000400-9 В книге американского автора дается систематическое описание мощного алгоритмического язь!ка Ада, предназначенного лля создания крупных программных систем.
Большимдостоинсгвом языкалвляешя возможнасть арганиза дни параллельного выполнения программ, Приведен стандарт языка Ада, разработанный в 19ВЗ г. и приняты и в качестве обяз | гольного лля всех Фирм, работаюших на военное ведомство США. Для спепиалистов, работаюших в области программирования и проектирования сложных техничесКих комплексов. ББК 22.18 Д вЂ” — — 190 — 88, ч, 1 041(01) — 88 Редакция литературы ио иие)орматике и робототекиике (БВЫ 5-03-000400-9 (русск.) © 1984, 1983 Ьу Вен Те!ерк зпе ! аЬогагонез, !псогрогагед 18ВЫ 0-23-003997-7 (англ.) © перевод на русский язык, «Мири, 1988 Оглавление Предисловие редактора перевода первой части книги Введение .
Предисловие Благодарности Приложение. Пошаговая разработка программ Аннотированная библиография . Предметный указатель Справочное руководство по языку программирования Ада АХБ!/М!1 БТ!3-1815А Глава Глава Глава Глава Глава Глава Глава Глава 1. Введение 2. Вше о типах 3. Пакеты 4. Параллельность 5. Исключения 6. Настраиваемые модули 7. Структура программы н раздельная компиляция ............. 8. Спепификаторы представления и особенности, зависяшие от реализапин . 6 9 11 16 17 78 96 !25 181 203 224 238 252 255 268 273 Предисловие редактора перевода первой части книги Основное назначение языка программирования Ада — написание больших программных систем реального времени для встроенных ЭВМ. Это, конечно, не исключает использования языка Ада при решении задач вычислительного характера, системного программирования, параллельной обработки и т. д.
Его можно рассматривать и как язык общего назначения. Программное обеспечение для встроенных ЭВМ должно быть эффективным по быстродействию и объему используемой памяти и обеспечивать заданную точность вычислений. Но самое главное — оно должно быть надежным. С этой целью в язык введен целый ряд средств, направленных на разработку надежных больших программ. С помощью этих средств большую программу можно разбить на меньшие, легко обозримые модули, точно определить интерфейсы между ними, произвести тщательную синтаксическую проверку соответствия модулей даже в случае их раздельной компиляции, проверить актуальность модулей перед их выполнением, а также осуществлять проверку согласованности модулей в процессе их выполнения.
В методологии программирования уже давно установлено, что разбиение на модули наиболее эффективно тогда, когда каждый модуль можно рассматривать вне зависимости от других модулей. В языке Ада проводится четкая граница между интерфейсом модуля — информацией, предназначенной для использования модуля, — и реализацией модуля — описанием его внутренней логики.
При таком делении можно как угодно изменять логику работы отдельных модулей, если зти изменения не затрагивают их интерфейсов. На общую работоспособность программной системы это не оказывает никакого воздействия. Что касается интерфейса модуля, то в нем можно выделить две компоненты: статический интерфейс и динамический интерфейс. Статический интерфейс включает в себя текстуальные свойства модуля, например число параметров процедуры и их вид. Он явно описывается в языке Ада, и компилятор проверяет его согласованность. Динамический интерфейс включает в себя поведенческие характеристики модуля при его выполнении.
Динамический интерфейс нельзя явно описать в языке и проверить с помощью компилятора. Следовательно, необходимы некоторые внеязыковые средства, которые выполняли бы динамическую проверку. Тем самым мы с неизбежностью приходим к тому, что при крупномасштабном промышленном программировании недостаточно иметь лишь язык (даже столь мощный, как Ада) и компилятор с него. Необходим еще целый набор взаимосвязанных инструментов, позволяющих не только облегчить взаимодействие программистов с программным комплексом, но и проводить различные динамические проверки комплекса или его частей с целью получения гарантированных характеристик качества всего программного проекта.
Эти внеязыковые средства обычно называют окружением языка. Естественно, что какое-то окружение необходимо для любого языка программирования. Но для языка Ада оно необходимо вдвойне. Связано П половив виго а пв во а пв вой часги книги это опять-таки с основным назначением языка: получать надежные программы для встроенных ЭВМ. Если рассматривать язык программирования Ада вместе с его окружением, то можно говорить о «программировании в большом». При этом в качестве объектов, с которыми работает программист, выступают программы, модули, абстрактные типы данных и тому подобные объекты, а в качестве действий над ними — операции композиции, управления и контроля, направленные на их согласованное использование, определение актуальности версий и необходимости перекомпиляции последовательности модулей и т.
д. Это качественно новый шаг в программировании. До сих пор, как правило, рассматривалось «программирование в малом», направленное на разработку отдельного модуля. Для этих целей обычно использовались языки программирования высокого уровня, с помощью которых отдельные аспекты реального мира моделируются посредством структур данных и операторов, присущих конкретному языку. Конечно, язык Ада не есть язык для «программирования в большом». Вместе с тем в нем нельзя не заметить ростки нового, диктуемые современной методологией программирования. Язык программирования Ада — это большой и сложный язык.
Необходимо затратить много усилий, чтобы понять и использовать все его возможности. Бытует даже мнение, что полным языком Ада будут пользоваться только суперпрограммисты, которые будут писать универсальные пакеты для последующего использования обычными программистами. Вряд ли с этим мнением следует безоговорочно соглашаться. По крайней мере первая часть предлагаемой читателям книги не дает повода для столь пессимистических настроений.
В ней в простой и доступной форме изгалаются очень сложные концепции языка Ада. Постепенное и ненавязчивое введение читателя в «мир языка программирования Ада», пожалуй, самое главное ее достоинство. Материал расположен как бы по возрастающей сложности. Сначала излагаются традиционные средства языкОв программирования высокого уровня, нашедшие отражение в языке Ада. Предполагается, что читатель достаточно хорошо знаком хотя бы с одним из них. Это позволяет автору не вдаваться в детали, отвлекающие от существа рассматриваемых проблем. После такого вступительного раздела начинается обстоятельное изложение новых концепций, присущих только языку Ада. Особое внимание уделено подбору примеров, которые, с одной стороны„понятны большинству читателей, а с другой — далеко не тривиальны и не приводят к излишней примитивизации излагаемых языковых средств.
Примеры занимают едва ли не ббльшую часть текста. К ннм необходимо подходить не только как к иллюстрации формального материала. Они демонстрируют многочисленные приемы программирования, присущие только языку Ада. Более того, тщательное изучение примеров окажет существенную помощь при переходе от изучения языка к практическому программированию. Автором достигнут удачный компромисс между стремлением неформально изложить как можно больше материала и ограниченными объемом книги возможностями.
Если же у читателя возникнет желание (а оно, в конце концов, обязательно возникнет) узнать все о языке Ада, то ему следует обратиться к изучению второй части книги — справочного руководства по языку Ада. Читатель уже достаточно подготовлен для чтения этого формального и точного документа. Предисловие редактора перевода первой части книги В заключение хочется выразить надежду, что книга будет полезна всем, желающим познакомиться с новым языком программирования, отражающим многие самые современные тенденции. Впрочем, окончательное слово скажут сами читатели.
Над переводом первой части книги работали Т.И. Гусева (введение, предисловие, гл. 1), О.Г. Карачаров (гл. 2, 3), Е.Н. Вахрушева (гл. 4), В.А. Колганов (гл. 5 — 8, приложение, аннотированная библиография, предметный указатель). О.Н. Перминов Введение Ада Байрон, графиня Лавлейс", была ребенком от несчастливого брака. Она умерла молодой, но за время своей жизни стоила своей матери неожиданно больших денег. Заслуга Ады Байрон в том, что она установила необходимую взаимосвязь между вычислительными машинами и их потенциальными применениями при решении задач, возникающих перед человечеством, стимулируя и направляя как разработчиков, так и пользователей". Далеко не ясно, какие из перечисленных атрибутов можно будет применить к истории жизни языка программирования Ада, являющегося предметом рассмотрения данной книги.
Характеристики
Тип файла DJVU
Этот формат был создан для хранения отсканированных страниц книг в большом количестве. DJVU отлично справился с поставленной задачей, но увеличение места на всех устройствах позволили использовать вместо этого формата всё тот же PDF, хоть PDF занимает заметно больше места.
Даже здесь на студизбе мы конвертируем все файлы DJVU в PDF, чтобы Вам не пришлось думать о том, какой программой открыть ту или иную книгу.