Н. Джехани - Язык Ада (1988) (1160771), страница 51
Текст из файла (страница 51)
Можно придумывать любые абстрактные операторы. Однако в конце концов они должны переводиться в исполняемую форму. 4. При формулировке абстрактных операций необходимо использовать информацию о задаче и об области ее опеределения. 5. Необходимо использовать обозначения, естественные для данной предметной области. 6. Каждая детализация представляет собой некоторое неявное проектное решение. Программисту следует помнить об этом и всегда рассматривать возможные альтернативы.
Необходимо вести протокол наиболее важных принятых решений. П ююженяе 7. Рекурсию следует использовать при необходимости. Если в языке программирования отсутствует рекурсия, все же рекомендуется рассмотреть рекурсивное решение и, если оно выбрано, его нужно преобразовать к нерекурсивному. 8. Типы данных необходимо детализировать точно так же, как и операторы. Программист должен выделять абстрактные типы данных и отделять их от остальной программы, т.е.
не детализировать операции над типами данных, а использовать вызовы процедур. 9. Представление данных следует отсрочить настолько, насколько зто возможно. Это сводит к минимуму модификации, если вместо первоначального используется некоторое альтернативное представление данных. 10. Если оператор появляется более одного раза, программисту следует рассмотреть возможность использования для него вызова процедуры. В этом случае детализация производится только один раз. Вызовы процедуры следует использовать и в том случае, если они делают структуру программы более понятной. 11.
Программист должен использовать инварианты циклов, если разрабатываемые фрагменты программы содержат их. Инварианты циклов подсказывают интересные решения для операторов, составляющих тело цикла, и условий его завершения. Аннотированная бибпиогра[рия АНО75 ВасЬ 1., Оп гйе Туре Сопсерг оГ Аг)а, Аг(а Теггегз, 11, 3 (ХочегпЬег- )ЗесешЬег 1982). Указываются некоторые проблемы при использова- нии механизма производных типов в языке Ада и недостатки личных типов. ВАС82 Вагпез Я. Р. О., Ап Очегщек оГ Аг[а, Бо[гзгаге — Ргасасе алг1 Ехрег!енсе, 1О, 851 — 887 (1980).
Описывается дальнейшее развитие языка про- граммирования Ада. Представлено неформальное описание языка. Указываются отличия предварительных вариантов языка Ада. ВАК80 Вагпез 3. Р. О., Ргойгаппп!пй !и Аг[а, Аг[б!зоп-%ез!еу РнЫВЫпй Со., 1982. Содержится полное описание языка Ада.
ВАК82 В!ас!г А. Р., Ехсер!юп Напдйпй апд )3ага АЬзггасбопз. Кезеагсй Керогг КС 8059, !ВМ, Т. 3. %а!зоп КезеагсЬ Сепгег, Уог[ггозгп Не!8Ьгз, Х. У. 10598. Описывается простая обработка исключений в контексте формальных (алгебраических) спецификаций абстрактных типов данных. В1.А80 Вг!псЬ Напзеп Р., Сопснггепс Ргойгаппшпй Сопсергз„Сощриалх 5игкеуй 6, 4 (ОесешЬег 1973).
Обсуждаются преимущества, которые дают средства высокого уровня для параллельности в языках программирования: параллельные программы становятся более понятными, а многие проверки можно выполнять автоматически. В статье обсуждаются многочисленные средства — от очередей' событий и семафоров до критических областей и мониторов. Содержится много примеров.
ВК173 ВПпсЬ Напзеп Р., ТЬе АгсЫгесгцге о( Сопсщгепг Ргойгашз, РгепГ!сеНа!1, 1977. Обсуждается проблема систематической разработки параллельных программ с использованием мониторов. Описывается разработка операционной системы Яо!о. В книге используется язык программирования Параллельный Паскаль. ВК177 ВПпсЬ Напзеп Р., О!з!г!Ьнгег[ Ргосемез: А Сопсоггепг Ргойгашш!пй Сопсерг, САСМ 21, 11 (ХочешЬег 1978). Автор предлагает осущест- влять процессы взаимодействия и синхронизации посредством вызо- ва подпрограмм и защищенных областей. ВК178 Вгоо1сз Е Р., ТЬе МугЫса! Мап МопгЬ, АгЫВоп-%ез1еу, Кеайпй, МамасЬпхецз, 1975.
[Имеется перевод: Брукс Ф. П. мл. Как проектируются и создаются программные комплексы. — Мл Наука, 1979.[ Книга, написанная в живой увлекательной форме, содержит очерки по разра- ВКО75 АЬо А. Ч., Норсгой 3. Е., О!!шап Я. О., ТЬе Оез!8п апг[ Апа!уз!з ор Сошрщег А!8ог!1Ьщз, Аг[йзоп-%ез1еу РоЫВЫпй Сощрапу, 1975. [Име- ется перевод: Ахо А., Хопкрофт Д., Ульман Д. Построение и анализ вычислительных алгоритмов.
— Мд Мир, 1979.! дино!и ввяиая библио яя ботке и проектированию программного обеспечения. В этих очерках автор рассказывает о руководстве разработкой больших програм- мных комплексов, опираясь на свой собственный опыт, описывает разработку операционной системы ОБг'360 для 1ВМ/360. Вгоп С., Ро)г)г!пйа М. М., Ре Нааз А.
С. М., А Ргороза! !ог Реа!шй вчгй АЬпоггпа! Тегпппагюп о( Ргойгашз, Мегп 150, ХочегпЬег 1976, Тъепге Оп!чегз!гу о( Тесйпо1ойу, ТЬе Хе!пег)алдз. ВКО76 Вгопп %'. Б., А Б!шр1е Ьш Кеа!Вйс Моде! о( Ноаг!пй Роюп! Сошрцгайоп, АСМ угалзаспова ол Майетаг!са! Бог!!«ага, 7, 4, 445 — 480 (РесешЬег 1981).
В этой статье описывается семантика вещественной арифметики, основанная на разработке модели арифметики с плавающей точкой. Описанная С. Брауном модель арифметики с плавающей точкой является основой для развития эффективного переносимого математического обеспечения. Модель строится на четырех параметрах, варьируя которые пользователь может адаптировать программы для своей ЭВМ. ВКО81 Вгозйо! В., Бцпипагу о( Аг!а (апйцайе Сйапйетг Аг!а 2апекй 1, 3 (МагсЬ вЂ” Арб[ !982).
В результате процесса обсуждения был принят стандарт языка Ада, являющийся пересмотренным и исправленным вариантом языка [РОР806[. Исправления состоят из множества мелких и локальных модификаций. ВК082 Брес!а! Взце оп Ада о! 1ЕЕЕ Сошршег, )цпе 198!. Содержатся вводные статьи по языку Ада, окружению языка Ада, системе программирования на базе языка Ада. Описываются язык Ада лля микрокомпьютера 1ше! 432 и сертификация компилятора с языка Ада. СОМ81 Сопчау К., Опез Р., Ап 1пггодцсйоп го Ргойгаппщпй, уу!пгйгор 1973. Вводная книга по языкам программирования РЕЛ и РЕУС. В книге приводятся приемы написания правильных и удобочитаемых программ с использованием метода пошаговой детализации (называемого нисходящей разработкой программ). СОХ73 СОХ80 РаЫ О.
3., Р!!Рйзгга Е. уу., Ноаге С. А. К., Б!гцсгцгед Ргойгапип!пй, Асаньею!с Ргем, 1972. [Имеется перевод: Дал У., Дейкстра Э. В., Хоар К. Структурное программирование. — Мл Мир, 1975.! Классическая книга о дисциплине и методологии в программировании, которые сейчас известны как структурное программирование РАХ72 Кни~а содержит три статьи. В первой — «Заметки по структурному программированиюя — Дейкстра описывает методы и дисциплину, Сох М.
О., Напппаг1!пй Б. О., Еча1цайоп о( гйе (дпйцайе Аг1а Гог ше ш Хшпег!са! Сопзрцгапопз. Керог! РХАСБ 30/80, Ха!юла[ РЬуз!са! !.аЬогашгу, Те![г[!пй!оп, МЫд!езех, О. К. ()ц!у 1980). Авторы обсуждают использование предварительного варианта языка Ада для арифметических вычислений. Плюсы предварительного варианта отрезки, присваивание массивов, сильная типизация, ограничения диапазонов и исключения. Минусы — ограничения на параметры и отсутствие указаний на порядок размещения массивов в памяти (подобные указания необходимы для повышения эффективности программ).
267 Анноги ванная библио ня Во второй статье, озаглавленной «О структурной организации данных», Хоар излагает принципы разработки структур данных. Абстрактный вариант программы должен основываться только на логических свойствах абстрактного варианта структур данных и не вдаваться в подробности их реализации. Детали реализации абстрактных структур данных должны быть отстрочены настолько, насколько это возможно, лучше всего до этапа кодирования программ, так как это поможет сделать программу независимой от реализации. Последняя статья «Иерархические структуры программы» написанная Хоаром и Далом, описывает связь между разработкой структур данных и разработкой программ. Основными идеями при разработке программ являются концепции классов языка программирования Симула-67 и сопрограмм.
РаЫйн!91 О., В!огсЬ А., Апдегзоп Ы., Ышпег!са! Мегйодз, Ргелг!се-На11, 1974. РАН74 РачВ 1. 8., Аг)а — А Бш!аЫе Кер!асеглепг Гог СОВО1.. Тесйшса! Керогг, Аппу 1пзбгше Гог Кезеагсй 1л Мапайепзелг 1пГоппагюп апг! Сопзршег Бс!епсе, Оеогй!а 1пзг!гоге оГ ТйсЬпо!ойу, А71апса, Оеогй!а ЗОЗЗ2. Авторы статьи придерживаются того мнения, что язык программирования Ада превосходит язык Кобол, так как обладает лучшими возможностями разработки и сопровождения хорошего н надежного программного обеспечения.
Язык Ада не содержит встроенных средств для форматирования и ввода-вывода и может снизить стоимость жизненного цикла программ, хотя в ближайшем будущем не рекомендуется конвертировать программы из языка Кобол в язык Ада. РАЧ81 РеппВ Зас)г В., Ап Ехашр!е оГ Ргойгашш!пй и!1Ь АЬзггасг Раса Турез, Якр!ал А7ОГ!сея 10 (Зц!у 1975). РЕЬ)75 РеКегпег Е, Кгоп Н. Н., Ргойгаппп!п8-!и-гйе-!агйе Чеггнз Ргойгапцпшй!п-гье-зша)1, Геее угалзасгГолз ол 3оГ77«аге еля!леег!л8, Бе-2, 80-86 (Зиле 1976). Существующие языки программирования не поддерживают разработку больших программ. Большие программы являются сложными системами, состоящими из большого числа модулей или маленьких программ, которые обычно пишутся разными людьми. Язык, поддерживающий программирование в большом, должен обладать средствами описания модулей, скрытия информации, а также средствамн спецификации взаимосвязи модулей.