Н. Джехани - Язык Ада (1988) (1160771), страница 52
Текст из файла (страница 52)
Идеи, положенные в основу этой статьи, явились предвестниками концепции пакетов в языке Ада. РЕК76 Р!1)гзгга Е. %., Соорегабпй Бег)оепг!а! Ргосемез. 1п Ргойгаппшпй Еап- 8цайез егйгед Ьу Е Оепцуз, Асабепнс Ргем, 1968. В статье обсуждают- ся достоинства и недостатки семафоров, параллельно выполняемых операторов, критических областей и взаимного исключения. РП68а 9-797 используемую им в программировании. Абстракция является мощным орудием при разработке больших комплексов и должна использоваться при разработке программ. Программы разрабатываются с использованием инвариантов и пошаговой детализации, включающей три вида декомпозиции: конкатенацию, выбор и повторениц дииоги ванная библио ия Р1368б Р1376 Р)182 РОР79а РОР796 РОР80а РОР806 РОР82 Р$])гзгга Е. %., Оого Бгагешепг Сопз[г(егег( Нагш(ц!, САСМ, 11, 147 — !48 (Матей 1968).
Автор доказывает, что хорошими конструкциями при написании программ являются те, которые позволяют понять программу за время, пропорциональное ее длине. При попытке понять программу с использованием операторов перехода, применяемых бессистемно, программист тратит усилия на неоднократные «прыжки» из одной части программы в другую. Это понижает понимаемость программы.
С другой стороны, такие конструкции, как !Гчбеп-е1зе и цикл з«Ь$!е, не вызывают таких затруднений. Р$](сзгга Е. %., А РВс(р1!пе оГ Ргойгашш[пй, Ргепг(се-На[1, 1976. [Имеется перевод: Дейкстра Э. В. Дисциплина программирования. — Мл Мир, $978.] Классическая книга, в которой Дейкстра объясняет методологию программирования, опираясь на преобразование предикатов. При таком подходе программы конструируются совместно с доказательством их правильности. Р$])сзгга Е. %., Бе!ее!ей %пц!пйз оп Сопзрш(пйж А Регзопа! Регзресг(че, Ярг(пйег-Чег!ай, $982. Рге[[ш[пагу А$$а КеГегепсе Мапца1, 8(8рГал №г(сеа 14, 6, рагг А ()ппе $979).
Удобства языка Ада были проверены путем написания значительного количества больших и сложных программ. Результаты подобного исследования привели к модификации описания языка [РОР806]. Кагюпа!е Гог $Ле Ребйп оГ гйе Аг(а Ргойгашш(пй Г.апйпайе, 8$8р!пл №г(сед 14, 6, рагг В (Гппе $979). Это исчерпывающий документ, защищающий разработанную версию языка Ада. Он является необходимым для всех, кто интересуется разработкой языков программирования и кто хочет знать больше о языке Ада. Кейшгеглепгз Гог бзе Ада Ргойгапип!пй Вцрром Епчгоппзепм (В!опешил), ()п!гед ага!ее Рераггглепг оГ РеГепзе (ЕеЬгпагу 1980).
документ содержит требования к окружению языка Ада. В нем описываются критерии для оценки окружения языка и преллагаются основные направления для его разработки и реализации. КеГегепсе Маппа1 Гог гйе Аг1а Ргойгаппшпй 1апйпайе, 1)пйед Бгагез Рераггшепг оГ РеГепсе ()п(у 1980). Этот документ является официальным документом, описывающим предварительный вариант языка Ада. Различия между этой версией языка и предварительными вариантами [РОР79б] неформально резюмируются Барнсом [ВАК80] и неформально перечисляются Винклером [%1Ь$8!]. КеГегепсе Мапоа$ Гог $Ье Аг(а Ргойгипш(пй Г.апйпайе, ()п(гег( ага!аз Рераггглепг оГ РеГепзе, 1982.
В июле 1982 г, министерство обороны выпустило для обсуждения пересмотренное «Руководство по программированию на языке Ада». Это руководство объединило в себе все изменения языка Ада, внесенные в пропессе подготовки А!98!- стандарта. Утверждение АЬ$81-стандарта языка Ада ожидалось в конце !982 г. И хотя некоторые редакционные изменения языка весьма вероятны, никакие дальнейшие изменения языка не ожидаются. В любом случад даже если какие-нибудь изменения и произойдут, вероятнее всего, они будут носить неявный характер и, по всей вероятности, не повлияют на представленные в этой книге материалы. (АЬ$81-стандарт языка Ада был утвержден в феврале $983 г.) 260 Анноги ванная библио в ия КеГегепсе Манна( Гог !Ье Ада Ргойгаппп(пй 1.апйнайе, $)п!гег(бгагез Рерагппепг оГ РеГепзе (Яапнагу !983).
Описан АХ81-стандарт языка Ада. РОР83 Езрегапго Гог Согпрцгегз. Бс!епсе Ьпе( ш ТЬе ЕсопогпВГ, БергешЬег 12, 1981. В статье представлен обзор разработок языков программирования, приведших к созданию языка Ада. Статья содержит также обсуждение языков программирования, предшествовавших созданию языка Ада, и обсуждение шансов языка Ада на успех. ЕСО81 Еепег А., Оейаш Х., А СошрагВоп оГ гйе Ргойгашш!лй Г.апйиайез С апг$ Разса!, АСМ Сотрийях Биггеуз, 14, 1, (МагсЬ 1982). Дано опреде- ление сильной типизации с использованием нотации Н.
Джехани и Ч. Везерелла. ЕЕ($82 Е1 878 Саппоп 3. Р., Ап Ехрег!шел!а! Еуа!наг(оп оГ Рага Туре Сопчепбопз, САСМ 20, 8 (Ацйпж 1977). Экспериментальное доказательство того, что сильная типизация приводит к повышению ясности программ и их надежности. Для отладки программ, написанных на таких языках, тратится меньше времени, чем в случае написания программ на языках программирования без сильной типизации. ОАХ77 Оейап! Х. Н., $)п!гз оГ Меакнге аз а Раса Айг!Ьнге, Сошригег Гэглкиайеа 2, 93-111 (!977).
Предложено объединение единиц измерения в языках программирования по аналогии со спецификацией типов объектов. Спецификации единиц измерений позволяют автоматически обнаруживать в языках программирования классы ошибок, которые невозможно определить традиционными способами.
Подобное предложение приведет к улучшению исправления ошибок, лучшему документированию и автоматическому преобразованию между различными, но эквивалентными единицами измерения. ОЕН77 Оейаш Х. Н., Оепепс Ргосег$пгеж Ап 1шр1егпепсас!оп апй ап $)пг(ес(г(аЫ!!гу Кезн!с, Сошрнгег $.апйнайез, 5, 155 — 161 (РесешЬег 1980). Показываются преимушества настраиваемых процедур и предлагается простой, но мощный метод внесения настраиваемых процедур в языки наряду с их эффективной реализацией ОЕН80 СеЛап! Х. Н., Ргойгаш Реге1оргпеп! Ьу Бгерэч!зе Кебпепгепг апо Ке1агед Тор!сз, ВБТЛ, 60, 3 (МагсЬ 1981).
Описывается еще одна точка зрения на пошаговую детализацию в контексте последних достижений в области языков программирования и методологии программирования, таких как абстрактные типы данных, формальные спецификации и др. Даются подробные советы по использованию процесса детализации. ОЕН81 ОеЬап1 Х. Н., Сопсцггепсу ш Аг)а апг$ Мп(г(сошрпгегз, Сотригег Гапхиахеа 7, 1 (1982). Проблема, описанная в работе, возникла при реализации языка Ада для сети ЭВМ без совместно используемой памяти. Она явилась результатом того, что задачи могут совместно использовать данные посредством глобальных переменных и указателей. ОЕН82а ЕВЬег Р. А„РоР'з Сопцпоп Ргойгапишпй 1апйнайез Ейогг, Сот)эигег, 24-23 (Матей 1978).
В статье описываются цели, перспективы и обзор проектов, которые привели к созданию языка Ада. Работа содержит краткий конспект предшествующих требований к языку — соломенные, деревянные, оловянные и железные. А нногн ванная библио ия СЕН82б СЕН82в ООО75 СОО80 СК171 СК175 СК176 С К!77 Сейап! )с!. Н., ОагаЬаяея апс) Оп!ся Меаяиге„!ЕЕЕ Туаляагболя ол Бог"гсчаге Еляьлеегид, БЕ-8, 6, 605 — 6П (Ь(очешЬег !982).
Серьезным препятствием интегрированного использования мировых баз данных, научных дисциплин и других прикладных областей является использование различных единиц измерения, например долларов и рупий в валютных делах, миль и километров при измерении расстояний и т.д. Этот недостаток исчезнет, если расширить определение данных в языках программирования таким образом, чтобы можно было специфицировать различные единицы измерения.
Преобразования производятся автоматически при обнаружении несоответствия в размерности. Сейап! Ы. Н., Ас)а'я Оег!чес) Турея апс) !)п!м о! Меаяиге. БиЬш!ггес) гог риЬИсагюп. Типы в языках программирования не могут моделировать многие свойства реальных объектов и величин. Следовательно, ошибки, возникающие при несовместимом использовании программных объектов, представляющих реальные величины, нельзя обнаружить автоматически.
В статье сравниваются и анализируются два решения этой проблемы: производные типы в языке Ада н единицы измерения. Делается вывод, что использование единиц измерения лучше, чем производные типы, так как обеспечивается полная совместимость с соответствующими величинами, легче обнаруживаются ошибки, предотвращается многозначность объектов — словом, создается масса удобств и выгод. Соос(епоийй Я., Ехсергюп Напс)1!пй: 1яяиея апс) а Ргорояес) Хо!а!!оп, САСАг, 18, 12, 683 — 696 (ОесешЬег 1976). Подробная дискуссия о том, каким образом обработка исключений должна быть включена в язык программирования.
Соос)епоийй Е, ес а1., Ас(а Сагир!!ег Ча!Ыас!оп !шр!ешепсогя' Си!с)е, Бо!гесй, 460 Тоцеп Родс) Коас), чуа!!паап, МА 02154. Делается попытка найти все просчеты, хотя бы мелкие и незначительные, в языке программирования Ада. Это руководство является особенно полезным для реализаторов. В работе также даны советы по тестированию. Сг!ея О., Сошрс!ег Сопмгисс!оп !ог Осй!га1 Сошршегя, 'чЧ!!еу, Хечч Чог(с, 1971. (Имеется перевод: Грие Д. Конструирование компиляторов для цифровых вычислительных машин. — Ма Мир, !975.) Классическая книга, немного устаревшая, но все еще не утратившая своей ценности. В ней приводятся некоторые практические аспекты конструирования компиляторов.