Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

Предисловие

Данный документ является Руководством по Ada. Международный стандарт для языка программирования Ada — ISO/IEC 8652:2023(E). Международный стандарт получен из Руководства по Ada с различными ненормативными изменениями. В частности, Международный стандарт использует другую нумерацию разделов, опускает номера пунктов, исключает раздел «Благодарности» и изменяет различные вводные материалы, такие как титульный лист и предисловие.
Рабочая группа по Ada ISO/IEC JTC 1/SC 22/WG 9, назначенная ISO, отвечает за интерпретацию и поддержание Международного стандарта, а также за создание Технических исправлений по мере необходимости. Техническая работа над Международным стандартом выполняется группой референтов по Ada (ARG) WG 9.
AXE Consultants выпускает Руководство по Ada в консультации с ARG, а также необходимые проекты других документов. Документы ISO/IEC часто перечисляют отдельные изменения, которые необходимо внести в текст стандарта, а не просто обновлять сам документ. Поэтому Международный стандарт часто представлен в нескольких частях, в то время как Руководство по Ada всегда является единым документом.
В июне 2016 года WG 9 утвердила предварительный график подготовки поправки или пересмотра Международного стандарта, с датой поставки не ранее 2018 года. В июле 2019 года WG 9 утвердила дополнительный период проверки и прототипирования для этого пересмотра, продлив дату поставки не ранее конца 2020 года. Проект стандарта был предоставлен WG 9 в июле 2021 года, и стандарт был опубликован как ISO/IEC 8652:2023 в мае 2023 года.
Это Руководство по Ada заменяет издание 2012 года. Оно изменяет предыдущее издание, внося изменения и дополнения, которые улучшают возможности языка и надежность программ, написанных на этом языке.
Значительные изменения в этом издании следующие:
  • Улучшенная поддержка параллельного выполнения предоставляется посредством введения параллельных циклов, параллельных блоков, параллельной итерации контейнеров и параллельного сокращения.
  • Более точное описание интерфейсов подпрограмм поддерживается с помощью новых аспектов Global, Global'Class и Nonblocking. Аспекты Global, в частности, помогают определить, могут ли два фрагмента кода безопасно выполняться параллельно.
  • Теперь аспекты Pre и Post могут быть указаны для типов доступа к подпрограммам и для формальных подпрограмм-генериков; пост-условие для значения по умолчанию инициализации типа может быть указано с помощью нового аспекта Default_Initial_Condition.
  • Поведение многих предопределенных операций контейнера теперь более точно специфицируется с помощью спецификаций Pre и Post вместо описаний на английском языке; вводится ограниченный («стабильный») вид для большинства контейнеров для поддержки более эффективной итерации.
  • Более гибкое использование статических выражений поддерживается за счет введения функций статических выражений, а также с меньшими ограничениями на статические строки.
  • Атрибут Image поддерживается для типов, не являющихся скалярными, и предоставляется пользовательский атрибут Put_Image, определяющий значение атрибута Image для пользовательского типа.
  • Использование числовых и строковых литералов обобщено, чтобы разрешить их использование с другими категориями типов с помощью новых аспектов Integer_Literal, Real_Literal и String_Literal.
  • Массивы и записи-агрегаты сделаны более гибкими: параметры индекса разрешены в агрегате массива для определения компонентов как функции от их индекса массива; дискриминанты могут быть определены более гибко внутри агрегата для типа записи с вариантами.
  • Представлены новые типы агрегатов: дельта-агрегаты для построения нового объекта путем инкрементных обновлений существующего объекта; контейнерные агрегаты для построения объекта типа контейнера путем непосредственного указания его элементов.
  • Для ссылки на целевой объект оператора присваивания в выражении, определяющем его новое значение, предоставлен сокращенный синтаксис, используя символ «@».
  • Представлены выражения Declare, которые позволяют определять и использовать локальные константы или переименования, что позволяет упростить длинное выражение, определив общие части как именованные сущности.
  • Добавлена поддержка легкой итерации с помощью процедурных итераторов.
  • Добавлена поддержка стратегии программирования map-reduce с помощью выражений сокращения.
  • Для конструкций, использующих итераторы любого типа, можно указать фильтр, который ограничивает элементы, производимые итерацией, теми, которые удовлетворяют условию фильтра.
  • Предоставлены предопределенные пакеты, поддерживающие арифметику целых чисел и вещественных чисел с произвольной точностью.
  • Введен профиль Jorvik для поддержки задач жесткого реального времени, которые хотят выйти за рамки ограничений профиля Ravenscar.


Spec-Zone.ru

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