Read this in English
Welcome.
About me
Oracle
Ada
Guest book.
Counter
Часть первая

Введение в язык Ада 95

Первая часть написана, чтобы дать читателю общую оценку сферы действия языка и его целей, его главных технических характеристик. Вводная глава описывает предпосылки для разработки требований, предшествовавших написанию нового стандарта. Две основные главы рассматривают технические возможности языка с двух различных сторон: одна демонстрирует основные новые возможности: расширения типов, иерархические библиотеки и защищенные типы, а также содержит множество иллюстрирующих примеров; другая дает полное обозрение всего языка. Рекомендуем читателю изучить первую часть до чтения Справочного Руководства по Аде 95.

Глава. I Развитие Ады 95

Ада - современный язык программирования, подходящий для тех прикладных областей, которые извлекают пользу от организованных методов разработки, таких как программная инженерия; это язык общего назначения с ориентацией на системы реального времени и встроенные системы. Ада изначально была разработана международной группой в ответ на требования, выдвинутые министерством обороны США.

Ада 95 - это переработанная версия языка Ада, которая совершенствует ANSI стандарт 1983 и аналогичный стандарт ISO 1987 в соответствии с процедурами ANSI и ISO. (ANSI - американский национальный институт стандартов, ISO - международная организация стандартов). Данный документ описывает общие принципы переработанной версии языка и включает обучающую информацию по его новым возможностям.


I.1 Процесс пересмотра языка

Хотя язык Ада был изначально разработан как гибкий, но переносимый язык для встраиваемых систем реального времени, удовлетворяющий требованиям МО США, его сфера применения распространилась на многие другие области, такие как крупномасштабные информационные системы, распределенные системы, научные вычисления и системное программирование. Более того, его сообщество пользователей охватывает теперь все главные оборонные органы западного мира, все аэрокосмическое сообщество, все больше и больше гражданских и частных областей, таких как телекоммуникации, системы управления производством. В самом деле, распространение в гражданский сектор таково, что гражданские приложения приносят подавляющую часть доходов многих производителей.

После нескольких лет использования и множества реализаций в 1988 году было принято решение о пересмотре языка Ада, приведшее к изменениям стандартов ANSI/ISO. Считается нормальным автоматически пересматривать подобные стандарты каждые 5 или 10 лет, чтобы отменить стандарт, подтвердить или внести в него изменения. В случае с Адой, приемлемым оказалось изменение стандарта.

Поясняя этот процесс, заметим, что институт ANSI, основа американских стандартов, изначально предлагал, чтобы Ада стала стандартом ISO. Это нормальная практика, когда ANSI, как породившая сторона, должен, при необходимости, поддерживать стандарт. МО США действовало как агент ANSI по управлению разработкой новой версии стандарта. Ada Joint Program Office (AJPO) - ответственный за Аду при МО США, а Ada Board - федеральный консультационный комитет, консультирующий AJPO.

Работы над новой версией начались в январе 1988г., когда в Ada Board поступил запрос подготовить рекомендации для AJPO относительно наиболее приемлемого процесса разработки нового стандарта языка, известного тогда, как Ада 9Х. В сентябре 1988 г. рекомендации были направлены Virginia Castor, тогдашнему детектору AJPO, которая затем открыла проект Ада 9Х для проведения ревизии стандарта Ады. В октябре 1988 Christine M. Anderson была назначена на должность руководителя проекта. Чтобы гарантировать, что нужды всего мирового сообщества пользователей Ады (а не только оборонных сил) будут учтены, и чтобы заручиться поддержкой для последующего принятия стандарта ISO, было важно тесно сотрудничать с организацией ISO. В этих целях был заключен Меморандум о Понимании между МО США и ISO.

Программа Ада 9Х состояла из трех главных фаз: определение требований к новому стандарту, непосредственно разработка определения языка и переход к использованию Ады 95.

Результатом первой фазы был документ "Требования к Ада 9Х", который специфицировал требования к стандарту. Вторая фаза проводила изменения стандарта, необходимые для удовлетворения этих требований; практически это было достигнуто определением нового стандарта.

При внесении изменений руководствовались общим принципом проекта Ада 9Х:

"Провести ревизию стандарта ANSI/MIL-STD-1815A-1983 так, чтобы отразить основные текущие требования при наименьшем отрицательном и наибольшем положительном влиянии на существующее сообщество пользователей Ады".

Справедливо заметить, что изменения, которые пришлось внести, оказались несколько большими, чем можно было предвидеть вначале проекта в 1988г. Однако, технология и человеческое понимание не стоят на месте, и внесенные изменения соответствуют нуждам современного языка программной инженерии 21 столетия.


I.2 Требования

Разработка требований проходила в несколько этапов. Вначале пользователям языка было предложено выдать запросы на изменения, затем эти запросы были отсортированы и проанализированы, с целью определить, что подразумевается каждым запросом, и, наконец, было сформировано согласованное множество требований.

Необходимо было тщательно следить за уровнем требований. Совершенно естественно, что отдельный пользователь может нуждаться в чем-то, что отражает лишь симптом, а не саму суть проблемы. Очень важно, чтобы требования отражали суть, а не то, что может оказаться просто результатом желаемого решения некоторой части проблемы какого-либо пользователя. Одна из причин этого особого внимания в том, чтобы убедиться, что лучшие, возможно более глубокие и простые, изменения не были исключены из-за недостаточно общих требований.

В некоторых случаях полное понимание требований не могло быть достигнуто и это приводило к введению Предмета Изучения. Как видно по названию Предмет Изучения описывает область, где что-то должно быть сделано, но по некоторым причинам осуществимость решения сомнительна; возможно, запросы быстро менялись, или существовали конфликтующие запросы, или реализующая технология была не стабильна, или мы просто имели не полное представление о каких-то базовых принципах, лежащих в основе запроса.

Главная цель ревизии языка была, таким образом, удовлетворить все требования и как можно больше предметов изучения. Каждый нереализованный предмет изучения будет оставлен в стороне до последующего рассмотрения очередной версии языка Ада 0Х (следующая ревизия возможна в 2005г.).

Документ о требованиях включал 41 требование и 22 предмета изучения. Они были сгруппированы в несколько разделов, которые сформировали две общие группы. Первая группа касалась областей широкого применения, в то время как вторая была обращена к более узким областям.

Первая группа состояла из запроса на поддержку национальных наборов символов (изначально определенных в процессе стандартизации ISO 1987г.), поддержку парадигм программирования (объектная ориентация была включена в эту категорию), требования систем реального времени, требования системного программирования (такие как, целые числа без знака) и общие требования. Последние включают специальные средства, такие как определение ошибок и общие соображения эффективности, простоты и согласованности; примеры нескольких отдельных незначительных, но раздражающих аспектов Ады 83, которые попали в эту группу, даны в приложении.

Вторая специализированная группа состояла из требований параллельной обработки, распределенных вычислений, отказоустойчивых приложений, информационных систем, научных и математических приложений.

Разнообразие этих специализированных требований расширило спектр языка, охватывающего так много прикладных областей, что это становится слишком тяжело для полной реализации на каждой архитектуре. С другой стороны, одной из сильных черт Ады является ее единообразие и изобилие неконтролируемых подмножеств языка наименее приемлемым вариантом. Соответственно, документ о требованиях рекомендовал концепцию ядра языка плюс небольшое число приложений для специализированных нужд, как разумный путь вперед (с упором на то, что число этих приложений останется малым). Все компиляторы, прошедшие проверку, должны реализовать ядро языка, и производители могут выбрать к реализации ноль, один или более приложений в соответствии с потребностями их рынка сбыта.

Документ о требованиях также включал общие рекомендации, как попытаться избежать раскола сообщества пользователей языка Ада. Это касалось жизненно важных условий, таких как простота реализации, эффективность машинного кода, поддержание баланса между изменениями и запросами и обратная совместимость. И, наконец, подчеркивалось, что необходимо продолжать поддержку надежности, безопасности и долговременного сопровождения чтобы превзойти достоинства краткосрочного кодирования.

Но более сильный акцент был сделан на достижении обратной совместимости для того, чтобы в целом сохранить существующие инвестиции сообщества пользователей языка Ада.


I.3 Главные запросы

Документ о требованиях отражал запросы пользователей, которые стали очевидны в период с момента первого определения языка. В стороне от небольшого числа специфичных вопросов, таких как наборы символов, специализированные области и общие вопросы исправления мелких несогласованностей, четыре главные области выступают как требующие внимания:

Взаимодействие. Ада 83 признает важность взаимодействия с внешними системами, обеспечивая такие средства, как спецификации представления и прагмы. Тем не менее, иногда нелегко соединить некоторые Ада 83 программы с системами на других языках. Чувствовалась общая потребность более гибкого механизма, позволяющего, например, безопасно манипулировать ссылками и передавать процедуры как параметры. Один из примеров - взаимодействие с GUI, где часто необходимо передавать процедуры как параметры для последующего обратного вызова (call-back).

Программирование при помощи расширений. Это тесно взаимодействует с возможностью повторного использования. Хотя возможности пакетов и настраиваемых модулей в Ада являются отличным фундаментом, тем не менее, опыт ООП в других языках показал преимущества расширения программ без модификации существующих проверенных компонент. Это не только спасает от влияния на существующее ПО, устраняя риск введения ошибок, но и уменьшает расходы на перекомпиляцию.

Библиотеки программ. Библиотеки программ Ады внесли значительную выгоду, расширяя механизм строгой типизации через границы между раздельно компилируемыми модулями. Однако плоская природа библиотек в Ада 83 создавала проблемы управления областью видимости, например, это запрещало двум пакетам иметь полный доступ к личным типам. Общим следствием плоской структуры было то, что пакеты становились большими и монолитными. Это затрудняло чтение и увеличивало затраты на перекомпиляцию. Была необходима более гибкая иерархическая структура.

Многозадачность. Парадигма рандеву в Аде - полезная модель для абстрактного описания многих проблем многозадачности. Но опыт показал, что более статичный механизм также желателен для приложений, использующих доступ к разделяемым данным. Более того, модель приоритетов Ады нуждалась в коррекции, для того чтобы позволить пользователям воспользоваться достижениями теории диспетчеризации, полученными после определения Ады 83.

Главные изменения, внесенные в Аду, отражают ответ на требования этих четырех пунктов, в тоже время удовлетворяя главному запросу обратной совместимости, чтобы сократить усилия и затраты на переход.


I.4 Достижение цели

Реализуя требования к новой ревизии, команда разработчиков следовала вдохновению Jean Ichbiah (лидера первой команды) как в приверженности основным принципам первой версии Ады так и в методах процесса разработки. Вот цитата доктора Ichbiah из ее предисловия к учебнику по Ада John Barnes:

"Очевидно, дальнейший процесс можно реализовать только путем переоценки подразумеваемых предположений, закладывая в основу некоторые компромиссы. Вот главное противоречие в любом проектировании. С одной стороны, можно достичь гармоничной интеграции нескольких возможностей, только вовлекаясь в логику существующих частей; только этим путем можно добиться совершенной комбинации. С другой стороны, это восприятие совершенства и подразумеваемого принятия некоторых неосознанных предположений будет мешать прогрессу."

Везде, где было возможно, расширенная функциональность в Аде 95 была достигнута поиском и удалением таких ненужных предположений, таким образом обобщая существующие возможности языка и удаляя особые случаи и ограничения. Был проведен тщательный анализ языка Ада 83, анализ замечаний, подготовленных во время первого процесса разработки языка и других комментариев, полученных с тех пор. Основываясь на этом анализе и на опыте сообщества пользователей языка Ада в реализации и использовании его в течении последних десяти лет, команда определила ограничения, которые, хотя и были включены для упрощения реализаций и/или для снижения риска при первой стандартизации, далее не являются необходимыми. Они также учли положительный опыт, полученный в 80-х в использовании объектно-ориентированных методов проектирования, объектно-ориентированных языков и программирования систем реального времени, разработанных на Аде.

Окончательная версия языка Ада 95 обратно совместима для практически всех приложений на Аде 83. Большинство несовместимостей ограничены патологическими комбинациями, которые редко используются на практике. Полная совместимость не позволила бы исправить некоторые ошибки и, конечно, не допустила бы улучшений, необходимых для удовлетворения многих требований. В самом деле, как подробно обсуждается в приложении А, ни одна ревизия языка не может достичь полной совместимости. Тщательное внимание, уделяемое этому вопросу при разработке Ады 95, означает, что ожидаемые усилия по переходу существующих программ, предвидятся очень низкими.

Следуя руководству документа о требованиях, язык Ада 95 включает ядро языка, которое должно быть реализовано полностью, плюс несколько специальных приложений, которые реализуют расширенные возможности для специфических прикладных областей. Эти приложения вводят стандартные определения для специфических пакетов, прагм, атрибутов, возможностей и характеристик производительности реализаций. Приложения описывают следующие области: системное программирование, системы реального времени, распределенные системы, информационные системы, числа, безопасность.

Следует заметить, что ядро языка включает значительное расширение для предопределенного окружения, в частности в таких важных моментах, как математические функции и обработка строк. Многое из этих возможностей предопределенного окружения и специальных приложений уже предлагается реализациями Ады 83, но не стандартизованным путем; включение этого в стандарт улучшит, таким образом, переносимость между реализациями.


I.5 Использование этого документа

Этот документ описывает главные возможности языка Ада 95 и принципиальные изменения языка Ада 83. Он следует духу документа "принципы языка Ада 83", совмещая описание и объяснение.

Этот документ содержит четыре части. Первая разработана, чтобы дать читателю общую оценку области языка, целей и главных характеристик. Глава II ее выделяет главные изменения - в основном в четырех аспектах обозначенных в I.3. Цель - предоставить технический обзор, иллюстрирующий на примерах главные преимущества Ады 95 перед Адой 83. Глава III, наоборот, рассматривает язык целиком в свободном стиле, вводя новые термины там, где это необходимо.

Вторая и третья части документа продолжают обсуждение. Вторая часть описывает ядро языка; она касается тех важных моментов, что не были затронуты в первой части и дает более детальное описание принципов, включая альтернативы, которые были учтены или отвергнуты. Третья часть, в свою очередь, касается предопределенного окружения и различных специализированных приложений.

Наконец, четвертая часть состоит из трех приложений. Приложение Х подытоживает несовместимости, предоставляя, таким образом, программистам, пишущим на Аде 83 руководство, облегчающее переход на стандарт Ада 95. Приложение Y суммирует главные отличия конечного стандарта от двух предыдущих черновых изданий. Приложение Z подытоживает первичные требования и кратко анализирует, как они реализованы в Аде 95.

Предполагается, что читатель знаком с языком Ада 83. Первую часть следует читать до ознакомления со справочным руководством по Аде 95 (RM95), которое предлагается читать параллельно со второй и третьей частью. Следует также заметить, что все части описывают картину в общем. Подробные детали великолепно изложены в аннотированном справочном руководстве (AARM) - версии RM95, включающей врезки дискуссий в основном на темы, интересные для экспертов по языкам и составителям компиляторов.

Главы в первой части имеют римские номера; главы второй и третьей части пронумерованы цифрами и буквами, соответствующими секциям и приложениям RM95. Приложения четвертой части названы X, Y и Z, чтобы избежать путаницы с приложениями стандарта. Таким образом, все параграфы имеют уникальные номера, что облегчает ссылки на них.