Spec-Zone.ru › Ada 2012
Справочник по Ada 2012

Введение

Это Справочное руководство по Ada.
Другие доступные документы по Ada:
  • Обоснование Ada 2012. В нём содержится введение в изменения и новые функции Ada 2012, а также объяснение их обоснования. Программисты должны ознакомиться с этим обоснованием перед углубленным изучением этого стандарта. Также доступны обоснования Ada 83, Ada 95 и Ada 2005.
  • Этот абзац был удален.
  • Разъясненное Справочное руководство по Ada (AARM). AARM содержит весь текст этого международного стандарта, плюс различные пояснения. Он предназначен прежде всего для разработчиков компиляторов, авторов тестовых нагрузок и других лиц, желающих изучить тонкие детали. Пояснения включают подробное обоснование отдельных правил и объяснение некоторых более сложных взаимодействий между правилами.
Цели разработки
Ada изначально разрабатывалась с тремя основными целями: надёжность и сопровождаемость программ, программирование как деятельность человека и эффективность. Пересмотр языка в 1995 году был предназначен для обеспечения большей гибкости и расширяемости, дополнительного управления управлением памятью и синхронизацией, а также стандартизированных пакетов, ориентированных на поддержку важных областей применения, сохраняя при этом первоначальный акцент на надёжности, сопровождаемости и эффективности. Это третье издание обеспечивает дополнительную гибкость и добавляет больше стандартизированных пакетов в рамках, предоставленных пересмотром 1995 года.
Необходимость языков, которые способствуют надёжности и упрощают сопровождение, хорошо известна. Поэтому был сделан упор на удобочитаемость программы по сравнению с лёгкостью написания. Например, правила языка требуют явного объявления переменных программ и указания их типа. Поскольку тип переменной неизменен, компиляторы могут гарантировать, что операции с переменными совместимы с предполагаемыми свойствами объектов типа. Кроме того, были избегнуты подверженные ошибкам обозначения, и синтаксис языка избегает использования закодированных форм в пользу более похожих на английские конструкций. Наконец, язык поддерживает раздельную компиляцию программных единиц таким образом, который способствует разработке и сопровождению программы и обеспечивает тот же уровень проверки между единицами, что и внутри единицы.
При проектировании также уделялось внимание программисту-человеку. Прежде всего, была предпринята попытка сохранить относительно небольшое количество базовых концепций, интегрированных согласованным и систематичным образом, избегая при этом опасностей чрезмерной сложности. Дизайн в особенности стремится предоставить конструкции языка, которые интуитивно соответствуют обычным ожиданиям пользователей.
Как и многие другие виды человеческой деятельности, разработка программного обеспечения становится всё более децентрализованной и распределённой. Соответственно, способность собрать программу из независимо созданных программных компонентов продолжает быть центральной идеей в разработке. Концепции пакетов, частных типов и обобщённых единиц напрямую связаны с этой идеей, что имеет последствия во многих других аспектах языка. Сопутствующая проблема — это сопровождение программ, соответствующее изменяющимся требованиям; расширение типов и иерархическая библиотека позволяют изменять программу, сводя к минимуму нарушения существующих проверенных и надёжных компонентов.
Ни один язык не может избежать проблемы эффективности. Языки, которые требуют излишне сложных компиляторов или приводят к неэффективному использованию памяти или времени выполнения, налагают эту неэффективность на все машины и на все программы. Каждая конструкция языка рассматривалась в свете современных методов реализации. Любая предлагаемая конструкция, реализация которой была неясна или требовала чрезмерных ресурсов машины, была отклонена.
Обзор языка
Программа Ada состоит из одной или нескольких программных единиц. Программные единицы могут быть подпрограммами (определяющими исполняемые алгоритмы), пакетами (определяющими коллекции сущностей), задачами (определяющими параллельные вычисления), защищёнными единицами (определяющими операции для согласованного совместного использования данных между задачами) или обобщёнными единицами (определяющими параметризованные формы пакетов и подпрограмм). Каждая программная единица обычно состоит из двух частей: спецификации, содержащей информацию, которая должна быть видима другим единицам, и тела, содержащего детали реализации, которые не обязательно должны быть видны другим единицам. Большинство программных единиц могут быть скомпилированы отдельно.
Это различие между спецификацией и телом, а также возможность компиляции отдельных единиц, позволяет проектировать, писать и тестировать программу как набор в значительной степени независимых программных компонентов.
Программа Ada обычно использует библиотеку программных единиц общего назначения. Язык предоставляет средства, с помощью которых отдельные организации могут создавать собственные библиотеки. Все библиотеки структурированы иерархически; это позволяет логически разложить подсистему на отдельные компоненты. Текст отдельно скомпилированной программной единицы должен указывать библиотечные единицы, которые она требует.
Программные единицы
Подпрограмма является основной единицей для выражения алгоритма. Существуют два вида подпрограмм: процедуры и функции. Процедура — это способ вызова последовательности действий. Например, она может считывать данные, обновлять переменные или выводить данные. Она может иметь параметры для обеспечения контролируемого способа передачи информации между процедурой и точкой вызова. Функция — это способ вызова вычисления значения. Она похожа на процедуру, но дополнительно возвращает результат.
Пакет — это основная единица для определения коллекции логически связанных сущностей. Например, пакет можно использовать для определения набора объявлений типов и связанных операций. Части пакета могут быть скрыты от пользователя, тем самым позволяя получить доступ только к логическим свойствам, выраженным в спецификации пакета.
Единицы подпрограмм и пакетов можно компилировать отдельно и организовывать в иерархии родительских и дочерних единиц, обеспечивая точный контроль над видимостью логических свойств и их детальной реализации.
Единица задачи — это основная единица для определения задачи, последовательность действий которой может выполняться одновременно с действиями других задач. Такие задачи могут быть реализованы на многокомпьютерных системах, многопроцессорных системах или с чередованием выполнения на одном процессоре. Единица задачи может определять либо одну выполняющую задачу, либо тип задачи, позволяющий создавать любое количество аналогичных задач.
Защищённая единица — это основная единица для определения защищённых операций для согласованного использования данных, разделяемых между задачами. Автоматически обеспечивается простая взаимная исключаемость, а более сложные протоколы совместного использования могут быть определены. Защищённая операция может быть либо подпрограммой, либо входом. Защищённый вход определяет булево выражение (барьер входа), которое должно быть истинным, прежде чем будет выполнено тело входа. Защищённая единица может определить один защищённый объект или тип защищённого объекта, позволяющий создать несколько подобных объектов.
Объявления и операторы
Тело программной единицы обычно содержит две части: раздел объявлений, который определяет логические сущности, используемые в программной единице, и последовательность операторов, которая определяет выполнение программной единицы.
Раздел объявлений связывает имена с объявленными сущностями. Например, имя может обозначать тип, константу, переменную или исключение. Раздел объявлений также вводит имена и параметры других вложенных подпрограмм, пакетов, задач, защищённых единиц и обобщённых единиц, которые будут использоваться в программной единице.
Последовательность операторов описывает последовательность действий, которые должны быть выполнены. Операторы выполняются последовательно (если передача управления не вызывает продолжения выполнения с другого места).
Оператор присваивания изменяет значение переменной. Вызов процедуры вызывает выполнение процедуры после сопоставления любых фактических параметров, предоставленных при вызове, с соответствующими формальными параметрами.
Операторы case и if позволяют выбирать заключённую последовательность операторов на основе значения выражения или условия.
Оператор цикла предоставляет базовый механизм итерации в языке. Оператор цикла указывает, что последовательность операторов должна выполняться многократно, как предписано схемой итерации, или пока не будет встречен оператор выхода.
Оператор блока включает последовательность операторов, предваряемых объявлением локальных сущностей, используемых операторами.
Некоторые операторы связаны с одновременным выполнением. Оператор задержки задерживает выполнение задачи на указанный период времени или до указанного момента времени. Оператор вызова входа записывается как оператор вызова процедуры; он запрашивает операцию для задачи или защищённого объекта, блокируя вызывающего, пока операция не может быть выполнена. Вызываемая задача может принять вызов входа, выполнив соответствующий оператор принятия, который определяет действия, которые должны выполняться в рамках встречи с вызывающей задачей. Вызов входа для защищённого объекта обрабатывается, когда соответствующий барьер входа вычисляется как истинный, после чего выполняется тело входа. Оператор перестановки позволяет предоставлять услугу в виде ряда связанных действий с управлением приоритетами. Одна форма оператора select позволяет выборочное ожидание одного из нескольких альтернативных встреч. Другие формы оператора select позволяют условные или временные вызовы входа и асинхронную передачу управления в ответ на некоторое триггерное событие.
Выполнение программной единицы может столкнуться с ошибочными ситуациями, в которых нормальное выполнение программы не может быть продолжено. Например, арифметическое вычисление может превысить максимально допустимое значение числа или может быть предпринята попытка доступа к элементу массива с использованием неправильного индексного значения. Для обработки таких ситуаций операторы программной единицы могут быть текстово дополнены обработчиками исключений, которые определяют действия, которые должны быть предприняты при возникновении ошибочной ситуации. Исключение можно явно вызвать оператором raise.
Типы данных
Каждый объект в языке имеет тип, который характеризует набор значений и набор применимых операций. Основные классы типов — это элементарные типы (включающие перечисления, числовые и типы доступа) и составные типы (включающие типы массивов и записей).
Тип перечисления определяет упорядоченный набор различных литералов перечисления, например, список состояний или алфавит символов. Типы перечисления Boolean, Character, Wide_Character и Wide_Wide_Character определены заранее.
Числовые типы предоставляют возможность выполнения точных или приближенных числовых вычислений. Точные вычисления используют целые типы, которые обозначают наборы последовательных целых чисел. Приближенные вычисления используют либо типы с фиксированной точкой с абсолютными границами ошибки, либо типы с плавающей точкой с относительными границами ошибки. Числовые типы Integer, Float и Duration определены заранее.
Составные типы позволяют определять структурированные объекты с взаимосвязанными компонентами. К составным типам языка относятся массивы и записи. Массив — это объект с индексированными компонентами одного типа. Запись — это объект с именованными компонентами, возможно, разных типов. Типы задач и защищенные типы также являются формами составных типов. Типы массивов String, Wide_String и Wide_Wide_String определены заранее.
Типы записей, задач и защищенных типов могут иметь специальные компоненты, называемые дискриминантами, которые параметризуют тип. Внутри типа записи могут быть определены структуры вариантов записей, зависящие от значений дискриминантов.
Типы доступа позволяют создавать связанные структуры данных. Значение типа доступа представляет ссылку на объект, объявленный как алиас, или на объект, созданный путем вычисления аллокатора. Несколько переменных типа доступа могут указывать на один и тот же объект, а компоненты одного объекта могут указывать на тот же или другие объекты. Как элементы таких связанных структур данных, так и их связь с другими элементами могут изменяться во время выполнения программы. Типы доступа также позволяют хранить ссылки на подпрограммы, передавать их в качестве параметров и, в конечном итоге, разыменовывать их как часть косвенного вызова.
Приватные типы позволяют ограничивать представление типа. Приватный тип может быть определен в пакете, чтобы только логически необходимые свойства были видны пользователям типа. Полные структурные детали, которые внешне не имеют значения, доступны только внутри пакета и любых дочерних модулей.
Из любого типа можно определить новый тип путем вывода. Тип вместе с его производными (прямыми и косвенными) образует класс производных. Можно определить операции, относящиеся ко всему классу, которые принимают в качестве параметра операнд любого типа в классе производных. Для типов записей и приватных типов производные могут быть расширениями родительского типа. Типы, поддерживающие эти возможности объектно-ориентированного программирования — операции для всего класса и расширение типов — должны быть помечены, чтобы конкретный тип операнда в классе производных можно было определить во время выполнения. Когда операция помеченного типа применяется к операнду, чье конкретный тип неизвестен до времени выполнения, выполняется неявное диспетчерирование на основе метки операнда.
Типы интерфейсов предоставляют абстрактные модели, из которых могут быть составлены и получены другие интерфейсы и типы. Это обеспечивает надежную форму множественного наследования. Типы интерфейсов также могут быть реализованы типами задач и защищенными типами, позволяя таким образом объединить одновременную обработку и наследование.
Понятие типа дополняется понятием подтипа, благодаря которому пользователь может ограничить набор допустимых значений типа. Подтипы могут использоваться для определения поддиапазонов скалярных типов, массивов с ограниченным набором значений индексов, записей и приватных типов с определенными значениями дискриминантов.
Другие возможности
Операторы аспектов могут использоваться для указания сопоставления между типами и функциями базовой машины. Например, пользователь может указать, что объекты данного типа должны представляться заданным количеством битов или что компоненты записи должны представляться с помощью заданной структуры хранения. Другие функции позволяют контролируемо использовать низкоуровневые, непортобельные или зависящие от реализации аспекты, включая прямое вставку машинного кода.
Предопределенная среда языка предоставляет средства ввода-вывода и другие возможности посредством стандартных пакетов библиотек. Ввод-вывод поддерживается для значений, определенных пользователем, а также для предопределенных типов. Предоставляются также стандартные средства представления значений в виде отображения.
Предопределенные стандартные пакеты библиотек предоставляют функции, такие как обработка строк, контейнеры различных видов (вектора, списки, карты и т. д.), математические функции, генерация случайных чисел и доступ к среде выполнения.
Специализированные приложения определяют дополнительные предопределенные пакеты библиотек и функции с акцентом на такие области, как планирование в реальном времени, обработка прерываний, распределенные системы, численные вычисления и системы высокой надежности.
Наконец, язык предоставляет мощный способ параметризации программных модулей, называемый генерическими программными модулями. Генерические параметры могут быть типами и подпрограммами (а также объектами и пакетами), и таким образом позволяют определять общие алгоритмы и структуры данных, применимые ко всем типам данного класса.
Изменения языка
Абзацы с 44 по 57 были удалены, так как они описывали отличия от первого издания Ada (Ada 83).
Этот международный стандарт заменяет второе издание 1995 года. Он изменяет предыдущее издание, внося изменения и дополнения, которые улучшают возможности языка и надежность программ, написанных на этом языке. Это издание включает изменения из поправки 1 (ISO/IEC 8652:1995:AMD 1:2007), которые были разработаны для повышения переносимости программ, взаимодействия с другими языками, а также объектно-ориентированных и системных возможностей в реальном времени.
Включены значительные изменения, возникшие в поправке 1:
  • Поддержка текстовых программ расширена, чтобы охватить весь репертуар ISO/IEC 10646:2003. Поддержка выполнения теперь включает 32-битный набор символов. См. подпункты 2.1, 3.5.2, 3.6.3, A.1, A.3 и A.4.
  • Модель объектно-ориентированного программирования была улучшена за счет добавления механизма интерфейсов, который обеспечивает множественное наследование и дополнительную гибкость для расширения типов. См. подпункты 3.4, 3.9 и 7.3. Также добавлена альтернативная запись для вызова операций, более похожая на используемую в других языках. См. подпункт 4.1.3.
  • Типы доступа были дополнительно расширены, чтобы объединить свойства, такие как возможность доступа к константам и исключение нулевых значений. См. раздел 3.10. Теперь разрешены анонимные типы доступа, и введены анонимные типы доступа к подпрограммам. См. подпункты 3.3, 3.6, 3.10 и 8.5.1.
  • Управление структурой и видимостью было улучшено, чтобы разрешить взаимно зависимые ссылки между модулями и более точный контроль доступа из приватной части пакета. См. подпункты 3.10.1 и 10.1.2. Кроме того, ограниченные типы стали более полезными благодаря предоставлению агрегатов, констант и конструкторских функций. См. подпункты 4.3, 6.5 и 7.5.
  • Предопределенная среда расширена, чтобы включить дополнительные операции времени и календаря, улучшенную обработку строк, полную библиотеку контейнеров, управление файлами и каталогами и доступ к переменным среды. См. подпункты 9.6.1, A.4, A.16, A.17 и A.18.
  • Два из приложений специальных потребностей были значительно улучшены:
Приложение систем реального времени теперь включает профиль Ravenscar для систем высокой надежности, дополнительные политики диспетчеризации, такие как круговая очередь и Earliest Deadline First, поддержку событий тайминга и поддержку управления использованием времени процессора. См. подпункты D.2, D.13, D.14 и D.15.
Приложение по численным методам теперь включает поддержку векторов и матриц с плавающей точкой и комплексными числами, как ранее определялось в ISO/IEC 13813:1997, а также дополнительные базовые операции линейной алгебры. См. подпункт G.3.
  • Общую надежность языка повысили ряд улучшений. Они включают новый синтаксис, который обнаруживает случайное переопределение, а также псевдокоманды для создания утверждений и лучшего управления подавлением проверок. См. подпункты 6.1, 11.4.2 и 11.5.
Кроме того, это третье издание включает усовершенствования, направленные на решение двух важных проблем: специфических проблем многопроцессорных архитектур и необходимости дальнейшего повышения возможностей утверждений для обеспечения корректности. Также были внесены дополнительные изменения и дополнения, которые улучшают возможности языка и надежность программ, написанных на этом языке.
Ниже представлены значительные изменения по сравнению с изданием 1995 года, измененным поправкой 1:
  • Введен новый синтаксис (спецификация аспектов), чтобы более структурированно задавать свойства для различных сущностей, чем через псевдокоманды. См. подпункт 13.1.1.
  • Концепция утверждений, представленная в издании 2005 года, расширена возможностью указывать предварительные и заключительные условия для подпрограмм, а также инварианты для частных типов и интерфейсов. Понятие ограничений при определении подтипов дополнено предикатными подтипами, которые позволяют указывать подмножества, отличные от простых диапазонов. Все эти свойства указываются с помощью спецификаций аспектов. См. подпункты 3.2.4, 6.1.1 и 7.3.2.
  • Вводятся новые формы выражений. Это выражения if, case, квантифицированные выражения, выражения-функции и выражения raise. Помимо полезности для программирования в целом, избегая введения ненужных присваиваний, они особенно ценны в условиях и инвариантах, поскольку позволяют избежать необходимости введения вспомогательных функций. См. подпункты 4.5.7, 4.5.8, 6.8 и 11.3. Тесты на принадлежность также стали более гибкими. См. подпункты 4.4 и 4.5.2.
  • В параметры подпрограмм внесены ряд изменений. Теперь функции могут иметь параметры всех режимов. Для уменьшения последствий (и, в самом деле, существующих) проблем с непреднамеренной зависимостью от порядка введены правила для уменьшения алиасинга. Параметр теперь может быть явно помечен как алиасированный, а тип параметра может быть неполным в определенных обстоятельствах. См. подпункты 3.10.1, 6.1 и 6.4.1.
  • Использование типов доступа стало более гибким. Улучшены правила доступности и некоторые преобразования. См. подпункты 3.10.2, 4.5.2, 4.6 и 8.6. Кроме того, обеспечен лучший контроль над пулами памяти. См. подпункт 13.11.4.
  • Приложение «Системы реального времени» теперь включает средства для определения областей процессоров и назначения задач им. Улучшены средства планирования и бюджетирования. См. подпункты D.10.1, D.14 и D.16.
  • В стандартную библиотеку внесены ряд важных улучшений. К ним относятся пакеты для преобразования между строками и кодировками UTF, а также функции классификации для широких и широко широких символов. Для локализации используется пакет, предоставляющий информацию о локали. См. подпункты A.3, A.4.11 и A.19. Библиотека контейнеров расширена, включив ограниченные формы существующих контейнеров и новые контейнеры для неопределённых объектов, многопутевых деревьев и очередей. См. подпункт A.18.
  • Наконец, добавлены некоторые функции, прежде всего для облегчения использования контейнеров, такие как возможность итерироваться по всем элементам контейнера без необходимости кодирования итерации. Их также можно использовать для итерации по массивам и в квантифицированных выражениях. См. подпункты 4.1.5, 4.1.6, 5.5.1 и 5.5.2.
Инструкции по подаче комментариев
Неформальные комментарии к этому международному стандарту можно отправлять по электронной почте на адрес ada-comment@ada-auth.org. При необходимости редактор проекта инициирует процедуру исправления дефектов.
Комментарии должны иметь следующий формат:
!topic Заголовок, обобщающий комментарий
!reference Ada 2012 RMss.ss(pp)
!from Имя автора yy-mm-dd
!keywords Ключевые слова, относящиеся к теме
!discussion

Текст обсуждения
где ss.ss — номер раздела или подраздела, pp — номер абзаца, если применимо, а yy-mm-dd — дата отправки комментария. Дата необязательна, как и строка !keywords.
Пожалуйста, используйте описательное «Тема» в вашем сообщении по электронной почте и ограничьте каждое сообщение одним комментарием.
При исправлении опечаток или внесении незначительных предложений по формулировке, пожалуйста, поместите исправление непосредственно в качестве темы комментария; используйте квадратные скобки [ ] для обозначения текста, который нужно удалить, и фигурные скобки { } для обозначения текста, который нужно добавить, и предоставьте достаточно контекста, чтобы сделать характер предложения очевидным, или предоставьте дополнительную информацию в теле комментария, например:
!topic [c]{C}haracter
!topic его значение не определено
Формальные запросы о толковании и об отчётах о дефектах в данном международном стандарте могут быть представлены в соответствии с директивами ISO/IEC JTC 1 и политикой ISO/IEC JTC 1/SC 22 по толкованию. Национальные организации могут представить Отчёт о дефекте в ISO/IEC JTC 1/SC 22 для решения в соответствии с процедурами JTC 1. Ответ будет предоставлен и, при необходимости, будет выпущен Технический исправительный документ в соответствии с процедурами.
Благодарности за издание Ada 83
Ada — результат коллективных усилий по разработке общего языка программирования для масштабных и систем реального времени.
Программный продукт высокого уровня начался в 1974 году. Требования Министерства обороны США были формализованы в серии документов, которые были подробно рассмотрены службами, промышленными организациями, университетами и иностранными военными ведомствами. Язык Ada был разработан в соответствии с окончательной (1978) формой этих требований, изложенных в спецификации Steelman.
Группа разработки Ada была возглавлена Жан Д. Икбиахом и включала Бернда Криг-Брюкнера, Брайана А. Вичмана, Генри Ф. Ледгарда, Жан-Клода Элиара, Жан-Люпа Гали, Жан-Ремона Абриля, Джона Г.П. Барнса, Майкла Вудгера, Оливье Рубина, Пола Н. Хилфингера и Роберта Фирха.
На различных этапах проекта несколько человек, тесно связанных с командой разработчиков, внесли существенный вклад. К ним относятся Дж.Б. Гуденуф, Р.Ф. Брендер, М.В. Дэвис, Г. Ферран, К. Лестер, Л. МакЛарен, Э. Морель, И.Р. Насси, И.С. Пайл, С.А. Шуман и С.С. Вестал.
Два параллельных проекта, начатых во второй фазе разработки, оказали глубокое влияние на язык. Один — это разработка формального определения с использованием денотационной семантики с участием В. Донзо-Гужа, Г. Кана и Б. Ланга. Другой — разработка тестового переводчика с участием К. Рипкена, П. Булье, П. Кадио, Дж. Холдена, Ж.Ф. Хуэрас, Р.Г. Ланге и Д.Т. Корнхилла. Все усилия были поддержаны усердной помощью Лин Черчилль и Марион Майерс, а также эффективной технической поддержкой Б. Грэвема, У.Л. Хаймердингера и П. Клева. Г.Г. Шмитц выполнял функции руководителя программы.
За пять лет работы над этим проектом было проведено несколько интенсивных недельных обзоров проектов с участием П. Белмонта, Б. Бросгола, П. Коэна, Р. Дьюара, А. Эванса, Г. Фишера, Х. Харте, А.Л. Хидгена, П. Кнуэвена, М. Кроненталя, Н. Ломуто, Э. Плёдередера, Г. Зигмуллера, В. Стэннинга, Д. Таффа, а также Ф. Белца, Р. Конверса, К. Корелла, А.Н. Хаберманна, Дж. Саммета, С. Сквайрса, Дж. Теллера, П. Вегнера и П.Р. Уэтералла.
Несколько человек оказали конструктивное влияние своими комментариями, критикой и предложениями. К ним относятся П. Бринч-Хансен, Г. Гус, К.А.Р. Хоар, Марк Рэйн, У.А. Вульф, а также Э. Боэберт, П. Боннар, Х. Клаузен, М. Кокс, Г. Дизмукс, Р. Ичс, Т. Фроггат, Х. Ганцингер, К. Хьюитт, С. Камин, Р. Котлер, О. Лекерм, Дж.А.Н. Ли, Дж.Л. Мансьон, Ф. Минель, Т. Фини, Дж. Роэрих, В. Шнайдер, А. Сингер, Д. Слозберг, И.С. Ванд, рецензенты Ada-Europe, AdaTech, Afcet, члены группы обзора LMSC и группы Ada Tokyo Study Group.
Эти отзывы и комментарии, многочисленные оценочные отчеты, полученные в конце первой и второй фазы, девятьсот отчетов о проблемах языка, отчетов о тестах и оценках, полученные из пятнадцати различных стран в течение третьей фазы проекта, тысячи комментариев, полученных во время обзора ANSI, а также текущая работа рабочей группы IFIP 2.4 по языкам реализации систем и комитета Purdue Europe LTPL-E, все оказали существенное влияние на окончательное определение Ada.
Военные ведомства и агентства оказали широкую поддержку, включая финансирование, обширные обзоры и бесчисленные индивидуальные вклады членов рабочей группы по языкам высокого уровня и других заинтересованных лиц. В частности, Уильям А. Уайтакер руководил программой на ранних этапах. Дэвид А. Фишер отвечал за успешную разработку и уточнение документов по требованиям языка, которые привели к спецификации Steelman.
Определение языка Ada 83 было разработано компанией Cii Honeywell Bull, а затем Alsys, и Honeywell Systems and Research Center по контракту с Министерством обороны США. Уильям Э. Карлсон, а затем Ларри Э. Друффель, представляли интересы правительства США и эффективно координировали усилия всех участников программы Ada.
Благодарности за издание Ada 95
Этот международный стандарт был подготовлен группой Ada 9X Mapping/Revision Team, базирующейся в Intermetrics, Inc., в состав которой входили: У. Карлсон, руководитель программы; Т. Тафт, технический директор; Дж. Барнс (консультант); Б. Бросгол (консультант); Р. Дафф (Oak Tree Software); М. Эдвардс; К. Гаррити; Р. Хиллард; О. Пази (консультант); Д. Розенфельд; Л. Шафер; У. Уайт; М. Вудгер.
Следующие консультанты проекта Ada 9X внесли свой вклад в специализированные приложения: Т. Бейкер (программирование систем реального времени — SEI, FSU); К. Дритц (численность — Аргоннская национальная лаборатория); А. Гаргаро (распределённые системы — компьютерные науки); Дж. Гуденуф (программирование систем реального времени — SEI); Дж. МакХью (защищённые системы — консультант); Б. Вичман (системы с критическими требованиями безопасности — NPL: Великобритания).
END_OF_DOCUMENT_MARKER
Данная работа регулярно проверялась авторитетными рецензентами Ada 9X и членами группы референтов Ada 9X (XRG): Э. Плоэдерером, председателем рецензентской группы и XRG (Штутгартский университет: Германия); Б. Бардином (Hughes); Дж. Барнсом (консультант: Великобритания); Б. Бреттом (DEC); Б. Бросголом (консультант); Р. Брукардтом (RR Software); Н. Коэном (IBM); Р. Дьюаром (Нью-Йоркский университет); Г. Дизмукесом (TeleSoft); А. Эвансом (консультант); А. Гаргаро (Computer Sciences); М. Герхардтом (ESL); Дж. Гуденаффом (SEI); С. Хейльбруннером (Зальцбургский университет: Австрия); П. Хильфингером (UC/Беркли); Б. Кальльбергом (CelsiusTech: Швеция); М. Камрадом II (Unisys); Дж. ван Катвайком (Делфтский технологический университет: Нидерланды); В. Кауфманом (Россия); П. Крухтеном (Rational); Р. Ландверфом (CCI: Германия); К. Лестером (Портсмутский политехнический институт: Великобритания); Л. Манссоном (TELIA Research: Швеция); С. Мичеллом (Multiprocessor Toolsmiths: Канада); М. Миллсом (ВВС США); Д. Погге (ВМС США); К. Пауэром (Boeing); О. Рубине (Verdix: Франция); А. Строхмеиром (Швейцарский федеральный технологический институт: Швейцария); У. Тейлором (консультант: Великобритания); Дж. Токарем (Tartan); Э. Василиеску (Grumman); Дж. Владик (Prospeks s.r.o.: Чешская Республика); С. Ван Влиерберге (OFFIS: Бельгия).
Другие ценные отзывы, повлиявшие на процесс ревизии, были предоставлены группой Ada 9X по точности языка (Odyssey Research Associates), группами пользователей/внедренцев Ada 9X (AETECH, Tartan, TeleSoft), группой по анализу внедрения Ada 9X (Нью-Йоркский университет) и Ada сообществом в целом.
Особая благодарность Р. Матису, председателю рабочей группы ISO/IEC JTC 1/SC 22 Working Group 9.
Проект Ada 9X был спонсирован Объединенным программным офисом Ada. Кристин М. Андерсон из лаборатории Филипса ВВС (Kirtland AFB, NM) являлась руководителем проекта.
Благодарности за версию Исправления
Редактор [Р. Брукардт (США)] хотел бы поблагодарить многих людей, чья усердная работа и помощь сделали этот выпуск возможным.
Благодарность всем членам рабочей группы ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group, чья работа по созданию и редактированию исправлений формулировок была критически важна для всего процесса. Особо ценный вклад внесли председатель ARG, Э. Плоэдерер (Германия), который поддерживал процесс; Дж. Барнс (Великобритания) и К. Исихата (Япония), чьи чрезвычайно подробные обзоры держали редактора в тонусе; Г. Дизмукес (США), М. Камрад (США), П. Лерой (Франция), С. Мичелл (Канада), Т. Тафт (США), Дж. Токар (США), и другие члены, которых слишком много, чтобы перечислить.
Особая благодарность Р. Даффу (США) за его объяснения предыдущей системы форматирования этих документов во время утомительной конвертации в более современные форматы. Также особая благодарность руководителю ISO/IEC JTC 1/SC 22/WG 9, Дж. Муру (США), без чьей помощи и поддержки Исправление и этот консолидированный справочник не были бы возможны.
Благодарности за версию Изменения 1
Редактор [Р. Брукардт (США)] хотел бы поблагодарить многих людей, чья усердная работа и помощь сделали этот выпуск возможным.
Благодарность всем членам рабочей группы ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group, чья работа по созданию и редактированию исправлений формулировок была критически важна для всего процесса. Особо ценный вклад внесли председатель ARG, П. Лерой (Франция), который поддерживал процесс в графике; Дж. Барнс (Великобритания), чьи внимательные обзоры нашли много опечаток; Т. Тафт (США), который всегда казался иметь предложение, когда мы застревали, и кто также обычно мог оказать ценную услугу, объяснив, почему вещи были такими, какие они есть; С. Бэйрд (США), который обнаружил много неясных проблем с предложениями; и А. Бернс (Великобритания), который продвинул многие предложения по реальному времени до завершения. Другие члены ARG, которые внесли свой вклад: Р. Дьюар (США), Г. Дизмукес (США), Р. Дафф (США), К. Исихата (Япония), С. Мичелл (Канада), Э. Плоэдерер (Германия), Ж.-П. Розен (Франция), Э. Шонберг (США), Дж. Токар (США) и Т. Варданега (Италия).
Особая благодарность Ada-Europe и Ada Resource Association, без чьей помощи и поддержки Поправка и этот консолидированный справочник не были бы возможны. М. Хини (США) заслуживает особой благодарности за его неустанную работу над пакетами контейнеров. Наконец, особая благодарность руководителю ISO/IEC JTC 1/SC 22/WG 9, Дж. Муру (США), который руководил документом через процесс стандартизации.
Благодарности за издание Ada 2012
Редактор [Р. Брукардт (США)] хотел бы поблагодарить многих людей, чья усердная работа и помощь сделали эту ревизию возможной.
Благодарность всем членам рабочей группы ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group, чья работа по созданию и редактированию изменений формулировок была критически важна для всего процесса. Особо ценный вклад внесли председатель ARG, Э. Шонберг (США), который руководил работой; Т. Тафт (США), чьи идеи разрушили много тупиков, как в дизайне, так и в формулировках; Дж. Барнс (Великобритания), чьи внимательные обзоры выявили много редакционных ошибок; С. Бэйрд (США), который неоднократно находил неясные взаимодействия с предложениями, которые мы пропустили. Другие члены ARG, которые существенно внесли свой вклад: А. Бернс (Великобритания), Дж. Казинс (Великобритания), Р. Дьюар (США), Г. Дизмукес (США), Р. Дафф (США), П. Лерой (Франция), Б. Мур (Канада), Э. Плоэдерер (Германия), Ж.-П. Розен (Франция), Б. Томас (США) и Т. Варданега (Италия).
Особая благодарность Ada-Europe и Ada Resource Association, без чьей помощи и поддержки это третье издание стандарта Ada не было бы возможным. Особо следует отметить А. Бенешана (США) за его усилия по устранению неточностей в формулировках. М. Хини (США) также заслуживает упоминания за его усилия по улучшению пакетов контейнеров. Наконец, особая благодарность руководителю ISO/IEC JTC 1/SC 22/WG 9, Дж. Токару (США), который руководил документом через процесс стандартизации.
Благодарности за версию Исправления Ada 2012 1
Редактор [Р. Брукардт (США)] хотел бы поблагодарить многих людей, чья усердная работа и помощь сделали этот выпуск возможным.
Благодарность всем членам рабочей группы ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group, чья работа по созданию и редактированию изменений формулировок была критически важна для всего процесса. Особо ценный вклад внесли председатель ARG, Дж. Казинс (Великобритания), который руководил работой; Т. Тафт (США), у которого, кажется, есть способность разрезать любой гордиев узел, с которым мы сталкиваемся в формулировках; Дж. Барнс (Великобритания), который продолжает находить редакционные ошибки, невидимые большинству; С. Бэйрд (США), который так часто находит неясные взаимодействия, что мы теперь назвали такие вещи в его честь. Другие члены ARG, которые существенно внесли свой вклад: А. Бернс (Великобритания), Р. Дьюар (США), Г. Дизмукес (США), Р. Дафф (США), Б. Мур (Канада), Э. Плоэдерер (Германия), Ж.-П. Розен (Франция), Э. Шонберг (США) и Т. Варданега (Италия).
Наконец, особая благодарность руководителю ISO/IEC JTC 1/SC 22/WG 9, Дж. Токару (США), который руководил документом через процесс стандартизации.
Изменения
Международный стандарт такой же, как эта версия Справочного руководства, за исключением:
  • Этот список изменений не включён в Международный стандарт.
  • Страница «Благодарности» не включена в Международный стандарт.
  • Текст в заголовках и подзаголовках на каждой странице немного отличается в Международном стандарте.
  • Титульная страница(ы) отличается в Международном стандарте.
  • Этот документ отформатирован для бумаги размером 8,5 на 11 дюймов, в то время как Международный стандарт отформатирован для бумаги А4 (210 на 297 мм); следовательно, разрывы страниц находятся в других местах.
  • Пункт «Предисловие» отличается в Международном стандарте.
  • Подпункт «Использование этой версии Руководства по Ada» не включён в Международный стандарт.
  • Номера параграфов не включены в Международный стандарт.
Использование этой версии Руководства по Ada
Данный документ пересмотрен с учётом исправлений, указанных в Техническом исправлении 1 (ISO/IEC 8652:2012/COR.1:2016). Кроме того, исправлены различные редакционные ошибки.
Изменения по отношению к исходному 8652:1995 можно определить по номеру версии, следующему за номером параграфа. Параграфы с номером версии /1 были изменены Техническим исправлением 1 для Ada 95 или были редакционными исправлениями в то время, в то время как параграфы с номером версии /2 были изменены Изменением 1 или были более поздними редакционными исправлениями, а параграфы с номером версии /3 были изменены третьим (2012) изданием стандарта или были ещё более поздними редакционными исправлениями. Параграфы с номером версии /4 изменены Техническим исправлением 1 для Ada 2012 или были редакционными исправлениями в то время. Параграфы, не помеченные таким образом, не изменены Техническим исправлением 1 для Ada 2012, третьим изданием, Изменением 1, Техническим исправлением 1 для Ada 95 или редакционными исправлениями. Номера параграфов неизменённых параграфов совпадают с номерами в издании Руководства по Ada 1995 года. Кроме того, некоторые версии этого документа содержат условные знаки изменения возле номеров параграфов. В местах вставки параграфов номера параграфов имеют вид pp.nn, где pp - номер предыдущего параграфа, а nn - номер вставки. Например, первый параграф, вставленный после параграфа 8, имеет номер 8.1, второй вставленный параграф имеет номер 8.2 и так далее. Удалённые параграфы обозначены текстом Этот параграф был удалён. Удалённые параграфы включают пустые параграфы, которые были пронумерованы в издании Руководства по Ada 1995 года.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API