Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 29
Текст из файла (страница 29)
предложенная компанией Сй Нопеузгей'Вой. Любопытно отметить, что победителем оказался единственный иностранный полрялчик из четырех финалистов. Руководителем французской команлы разработчиков СИ Нопеумей/Во1! была тогда Джин Ичбиа ()еап!спо!ай). Весной 1979 гола Джек Купер ()ас)г Соорег) из Команлования материальным обеспечением ВМФ США (Качу Магейе! Соттап6) прелложил лля нового языка название А6а. которое позднее н было принято. Августа Ада Байрон (!815-185!). графиня Лавлейс (Ацкцма А6а Ваугоп.
соопгезз оГ Боте!асс). математик и дочь поэта лорда Байрона. общепризнанна в качестве первого программиста в мировой истории. Она работаза с Чарльзом Бэббиджем на его механических компьютерах. названных "Разностныии и аналнтгь ческими машинами" (ОИТегепсе ап6 Апа!уг!са! Епб!пез), создавая программы для отдельных вычислительных алгоритмов. Фаза 3 разработки языка А6а началась после выбора проекта-победителя. Его структура и логическое обоснование были опубликованы ассоциацией АСМ в сообщении "ЯСРИБ зГГ Мог!сея" (АСМ, 1979) и распространены для изучения более чем 10 000 читателям.
Открытое испытание и конференция по оценке языка состоялись в октябре 1979 года в Бостоне при участии более 100 организаций из Соединенных Штатов и Европы. К ноябрю из 15 стран было получено более 500 сообщений. касавшихся нового языка. Срели этих сообщений горазло чаще встречались предложения о незначительных изменениях, чем о радикальной переработке или полном неприятии языка.
Основываясь на этих сообщениях, в феврале 1980 года была выпущена следующая версия требований к спецификации — локумент Бгопешап 6осцгпепг (()ерагппеп! оГ ОеГепзе. ! 980а). Пересмотренная и исправленная версия структуры языка была завершена к июлю 1980 года и принята как М1(.-БТО 18! 5, стандартное справочное руководство по языку Аба ("Аг(а Гапйиайе Реуегепсе Мапиар'). Число 1815 было выбрано как год рождения Августы Ады Лавлейс.
Другая переработанная версия справочника "Аба Г.агяпайе )Геуегепсе МапиаР' вышла в свет в июле 1982 года. В 1983 году институт А)чэ1 стандартизировал язык А6а. "Окончательная" официальная версия языка вышла в 1983 голу (Оооз ап6 Напшап!з, 1983). После этого разработка языка Аба была заморожена по крайней мере на 5 лет.
2.14. Величайший проект в истории: язык Ада 103 2.14.3. Обзор языка В данном разделе кратко рассматриваются четыре основных свойства языка Ада. Поскольку этот язык используется во многих примерах далее в книге, то остальные свойства мы б> дем описывать по ходу дела. Пакеты языка Ада представляют собой средство выделения в отдельные модули объектов ланных, спецификации типов данных и процедур, что, в свою очередь, обеспечивает поддержку использования абстракции ланных в структуре программы, как это описано в главе 10.
Язык Ада содержит обширные средства обработки исключительных ситуаций, что позволяет программисту получать управление после обнаружения одной из многочисленных исключительных ситуаций или ошибок времени выполнения программы. Подробнее об обработке исключительных ситуаций рассказывается в главе 13. Блоки программ в языке Ада могут быть настраиваемыми. Например, можно написать процедуру сортировки, использующую неуточненный тип сортируемых данных.
До использования такой настраиваемой процедуры ей должно быть приписано значение определенного типа. Для этого оператор вызывает создание компилятором разновидности процедуры, используюшей данный тип. Наличие таких настраиваемых компонентов увеличивает количество блоков программ, которые могут быть использованы повторно, не треоуя дублирования со стороны программистов. Настраиваемые блоки рассматриваются в главах 8 и 1О. Язык Ада также обеспечивает параллельное выполнение особых программных блоков, названных заданиями, используя лля этого механизм рандеву. Последнее название обозначает метод взаимодействия и синхронизации параллельных процессов в языке Ада. Параллельность подробно рассмотрена в главе 12.
2.14.4. Оценка Важнейшими аспектами разработки языка Аба считаются следующие. ° Поскольку разраоотка языка проводилась на конкурентной основе, не было ограничено количество участников. ° Язык Ада воплощает большинство концепций разработки программного обеспечения и разработки языков программирования, существовавших на конец 1970-х годов. Хотя можно полвергать сомнению фактические методы, использованные для внедрения этих свойств, а также разумность включения такого большого количества свойств. большинство согласится, что эти свойства полезны. ° Разработка компилятора лля языка Ада была сложнейшей задачей, несмотря на то, что большинство людей не догадываются об этом.
Только в 1985 году, почти через четыре года после завершения разработки языка, начали появляться действительно практичные компиляторы языка Ада. Наиболее серьезной критике в первые годы сушествования языка Ада подвергались его объемность и сложность. В частности Хоар утверждал, что этот язык не должен использоваться в областях, где основным требованием является надежность (Ноаге, 1981). хотя лля применения именно в подобных областях язык и создавался.
Однако другие люли превозносили его как вершину достижений в области разработки языков программирования. 106 Глава 2. Обзор основных языков программирования Ниже следует пример программы на языке Аба. -- Пример программы на языке Аба Ввод: Целое число 1|е"1еп, меньше 100, за котосьсч следует набор иелых чисел в количестве 11вс1еп -- Вывод: Количество введенных величин, которые больше:.х среднего арифметического иШз ТЕХТ 10) иве ТЕХТ 10; ргосес(иге АОА ЕХ фе рас)саде 1ЫТ 10 Ее пви 1)ЧТЕНЬЕВ 10 (1ЫТЕОЕА)г алев 1МТ 10 суре 1МТ Ы5Т ТУРЕ Ев аггау (1..99) об 1ХТЕВЕВ; 1ИТ Ь1ЯТ : 1НТ Ь1ЯТ ТУРЕ) ЫЯТ ЬЕ)(, ЯОМ, АЧЕВАОЕ, ВЕЯЦЬТ : 1)(ТЕОЕРг )>вдап ВЕЯОЬТ := 0; ЯОМ := Ог ОЕТ (11ЯТ ЬЕЫ)) |Е (ЫЯТ ЬЕМ > 0) апс| (ЬтЯТ ЬЕИ < 100) с)зеп -- Считывание входных величин в массив и вычисление суммы Еог СООМТЕВ : 1 ..
Ь1ЯТ ЬЕЫ 1оор ОЕТ (1ЫТ Ь15Т(СОО)(ТЕВ))г ЯОМ := ЯОм + 1мт ЫЯт(СОЦМТЕВ)г впс1 1оорг -- Вычисление среднего арифметического АЧЕВАОЕ := ЯОМ I Ь15Т ЬЕМ; -- Вычисление количества входных величин, которые больше их среднего бог СООЫТЕВ := 1 .. Ь1ЯТ ЬЕИ 1оор зг' 1ИТ ЫЯТ(СОО)(ТЕР.) > АЧЕРАОЕ Е)зеп ВЕЯОЬТ : ВЕЯЦЬТ ч 1) епс) Ег) впс) |оор; -- Вывод результатов РОТ (" Число величин, которые больше их среднего, равно" ) РОТ (ВЕЯОЬТ)г )ЧЕИ ЫГ)Е) в1ее Р1Т Ь|МЕ (" Ошибка — введена неверная длина списка">; епс1 ЕЕ; епс) АОА ЕХ) 2;14.$.
Язык Ась 95 Работа по исправлению языка Аг)а начачась в 1988 году с создания учреждением Ада )о(пг Ргорав 0)Т(се проекта Ада 9Х. Проект Ада 9Х имел три фазы: определение требований к переработанному языку, реальная разработка описания переработанного языка н переход к его использованию.
Все требования были опубликованы Министерством обороны (Оерагипепг оГ 1)еГепзе, 1990). 10У 2.14. Величайший проект в истории: язык Ас)о Требования к обновленному языку сосредоточились на четырех областях: создание интерфейсов (особенно графических интерфейсов пользователя), поддержка объектноориентированного программирования, более гибкие библиотеки, а также усовершенствпвание механизмов управления совместно используемыми данными. Два из важней~них новых свойств исправленной версии языка Ада, названной Ада 95. кратко описаны в следуюших абзацах.
Вообще, в остальной части книги мы будем использовать название Ас(а 83 для обозначения исходной версии языка, а название Ас(а 95 (действительно употреблявшееся) — для его более поздней версии. При обсуждении свойств. обшнх лля обоих языков. мы булел( использовать название Ас(а. Стандарт языка Ас(а 95 был опрелелен в справочном руководстве ААКМ (1995). Сушествуюшнй в языке Ас(а 83 механизм образования типов в языке Ас(а 95 был расширен. что позволяет создавать новые компоненты, образованные из меченых базовых типов. Это обеспечивало наследование — ключевую составную часть объек.но-ориентированных языков программирования. Динамическое связывание вызовов полпрограмм с их определениями выполнялось с помощью координации, которая основывалась на значении признака производил~к типов посредством межклассовых типов.
Это свойство обеспечивает полиморфизм. еше одно основное свойство объектно-ориентированного программирования. Все указанные свойства языка Ада 95 рассмотрены в главе !! . Механизм рандеву языка Лс(а 83 обеспечивал только неуклюжие средства распределения данных между параллельными процессами. Для управления доступом к совместно используемым данным следовало ввести новое задание. Зашишенные объекты языка Лс(а 95 предложили этому привлекательную альтернативу.