Н. Джехани - Язык Ада (1988) (1160771), страница 2
Текст из файла (страница 2)
Эта «Ада» имеет как многочисленных сторонников, так и убежденных критиков. Внушительный список ее достоинств даже трудно перечислить. Ее ограничения поддерживают дисциплину программирования, направленную на разработку надежных и модульных программ. Защитные барьеры и в реальной жизни часто только сдерживают от самовредительства, на которое толкает либо отчаяние, либо безрассудство. Строгая типизация языка Ада может быть нарушена конкретным представлением в ЭВМ, переименованием, различными преобразованиями; операторы ООТО вредны, но полностью не устранены, поскольку они необходимы в некоторых случаях, и т. д. Дисциплина языка Ада направлена на (но не гарантирует) хорошую практику программирования.
Но поговорка «Не рассказывай мне о своих затруднениях, пока работа не завершена» все еще будет оставаться хорошим рецептом при разработке программ, хотя изъяны сейчас могут быть спрятаны гораздо глубже. Окончательная оценка усилий, затраченных на создание еще одного языка программирования, зависит от качества написанных на нем программ. Ясно, что язык Ада не станет универсальным средством для того, чтобы крупномасштабное программирование стало более производительнымз'. Истинно модульные программы проявляют себя как приносящие что-то положительное всем. Пишите свой модуль и передавайте его как можно раньше во избежание спешки во время завершения проекта. Тестируйте каждый модуль по мере его появления, имея при этом в виду, что срок функционирования всей системы зависит от того, насколько проверена каждая ее независимая часть.
Поддерживайте систему, заменяя ее громоздкие или устаревшие компоненты. Слишком хорошо, чтобы поверить? Что ж, вряд ли мы откроем все, что так долго ищем. " Язык программирования Ада назван в честь графини Лавлейс. Подробные сведения о жизни и деятельности Августы Ады Лавлейс можно найти в кил Апокин И.А., Майстров Л.Е., Эдлин И.С., Чарльз Бэббидж. — Мл Наука, !981, 127 с. — Прим. Ред.
зз В проекте ЗТАКВ отмечается, что использование языка Ада на всех этапах жизненного цикла пРогРамм позволяет повысить производительность труда программистов примерно в четыре раза. — ПР .РЦ Ввв вняв Данная книга знакомит с решением задач на языке Ада посредством хорошо подобранных примеров.
Решения проводятся с помощью пошаговой детализации, что демонстрирует читателю дополнительные преимущества некоторых практических методов нисходящего структурного программирования. В то же время читателю необходимо учитывать, что одно из наиболее очевидных преимуществ языка — это модульность. Более того, можно предвидеть появление крупных библиотек программ и их широкое применение, что является аргументом за использование восходящего программирования, базирующегося на компонентах программ.
На практике, однако, эта дилемма скорее кажущаяся, чем действительная. Нисходящая пошаговая детализация — это итеративный процесс. На каждой итерации задача делится на части, легко поддающиеся обработке, легко программируемые или, лучше всего, для которых уже имеется модуль. В то же время программирование, базирующееся на компонентах, предполагает целенаправленное объединение программ из библиотек, поиск частей задачи, для которых имеются программы; это приводит к тому, что какая-то декомпозиция на компоненты также проводится в самом начале решения задачи. Из сравнения двух названных подходов возникает главный вопрос: как произвести хорошую декомпозицию.
Хотя мы сами не способны полностью избавиться от плохих привычек, нужно признать значение акцентов, расставленных автором для метода нисходящего программирования. Он предоставляет нам, помимо прочего, большие преимущества в понимании существа логически структурированных программ. Опытным программистам — а через небольшое время и начинающим — необходимо понимать программы и еще нечто, что помогало бы в их написании. В идеале необходимо писать программы, которые сами себя объясняют.
Примеры данной книги «прозрачны», возможно их абстрактное решение, и как следствие они имеют ясную внутреннюю структуру. Детализация проводится постепенно и осмысленно и служит примером как стиля, так и метода. Она иллюстрируег возможности метода как средства общения программиста и машины, и в равной степени читателей программы. Я думаю, что о данной книге справедливо будет сказать, что она осуществляет «необходимую взаимосвязь между вычислительными машинами и их потенциальными применениями для решения возникающих перед человечеством задач».
Муррей Хилл, Нью-Йорк Арно А. Пензиае Моей яееке, моим родителям и моим бабушке и дедушке. Предисловие 1. Разработка языка Ада Язык программирования высокого уровня Ада назван в честь Августы Ады Байрон, графини Лавлейс и дочери английского поэта лорда Байрона. Она была ассистентом, коллегой и сторонницей Чарльза Беббиджа, математика и изобретателя вычислительной машины, названной аналитической машиной. С помощью Ч. Беббиджа в 1830 г. она написала практически законченную программу на аналитической машине для вычисления чисел Бернулли [Н11880[.
Поэтому графиню можно назвать первым в мире программистом на вычислительной машине. Для того чтобы рассеять преувеличенные мнения о возможностях аналитической машины, например о том, что она умеет думать и чувствовать, Ада дала следующую оценку ее возможностей [МОО77[: «Аналитическая машина не претендует на то, чтобы создавать что-то действительно новое. Машина может выполнить все то, что мы умеем ей предписать. Она может следовать анализу, но она не может предугадать какие-либо аналитические зависимости или истины. Функции машины заключаются в том, чтобы помочь нам получить то, с чем мы уже знакомы». Эта оценка справедлива и для современных ЭВМ, несмотря на то что они много сложнее аналитической машины! Более того, на оценку графини часто ссылаются в современных дебатах о природе и возможностях искусственного интеллекта [МСС79].
Ада, язык, носящий имя графини, был разработан по инициативе и при содействии министерства обороны США. Исследования„предпринятые в начале и середине 70-х годов, показали, что можно получить огромную экономию средств на программное обеспечение [около 24 млрд. долл. за период 1983 — 1999 гг.), если министерство обороны воспользуется единым языком программирования для решения всех своих задач вместо примерно 450 языков программирования н несовместимых диалектов, используемых программистами.
Результатом этого исследования стали требования к новому языку программирования, способному заменить большинство языков программирования, используемых в рамках министерства обороны США. Требования, получившие шутливое название «соломенный человек», постепенно детализировались с помопгью широкого обсуждения как в США, так и за рубежом. В этот процесс были вовлечены вооруженные силы США, зарубежные военные организации, промышленность и университеты. Получаемые в результате очередного шага детализации требования последовательно назывались «деревянными», «железными» и, наконец, «стальными» [%АБ80[. Хотя побудительные мотивы создания нового языка программирования первоначально были чисто экономическими, на него оказало заметное влияние и желание иметь язык программирования, направленный на решение важных про- 12 блем разработки программного обеспечения.
Требования к новому языку содержали такие технические особенности, как простота и полнота языка, надежность, правильность и переносимость программ, простота поддержки, возможность разработки больших программ, программирование в реальном масштабе времени и обнаружение и исправление ошибок.
В поддержку тенденции перевода на мультикомпьютерыи и отказа от больших ЭВМ в требованиях также содержалось и параллельное программирование, т. е. возможность писать программы, компоненты которых могли бы выполняться параллельно на различных ЭВМ или на одной ЭВМ квазипараллельно. Для разработки языка, удовлетворяющего перечисленным требованиям, был организован международный конкурс. Семнадцать фирм подали свои предложения, четыре из них были отобраны как полуфиналисты.
Интересно, что все полуфиналисты в качестве основы для своих языков взяли язык Паскаль 1зЕХ74). Победителем конкурса стал язык программирования, разработанный группой ученых под руководством Ж. Ишбиа фирмы С11 Нопеузче11 Ви!1. Претерпев некоторое число изменений, этот язык был назван Ада РЭОВ80б1. Через некоторое время доработанный язык Ада становится стандартом АХБ1; дальнейшие изменения в языке были направлены на его упрощение и устранение несоответствий. Язык Ада был принят как стандарт АХо! в феврале 1983 г.
Другим направлением работ министерства обороны США по стандартизации своего программного обеспечения был проект аттестации компиляторов с языка Ада [ОООЗО]. Цель этого проекта — разработка набора стандартных тестов, которые компилятор должен выполнить прежде, чем он будет зафиксирован как реализующий стандарт языка Ада. Параллельно с этим был начат процесс разработки требований к окружению программ на языке Ада и к интерфейсу между программами и пользователями. Язык Ада — это современный язык программирования, содержащий такие возможности паскалеподобных языков, как определение типов, общие управляющие структуры и подпрограммы.
Более того, в языке Ада собраны многие достижения теории языков программирования, полученные после 1970 г. Язык поддерживает логическую модульность, для которой данные, типы и подпрограммы — все могут быть пакетами. Физическая модульность достигается раздельной компиляцией. Язык Ада поддерживает программирование в реальном масштабе времени за счет механизмов распараллеливания и обработки исключений.