Rationale for Ada 2005: Access types

RUSTOP
BACKNEXT

ENG

1. Overview of changes

@ The WG9 guidance document [1] does not specifically mention access types as an area needing attention. Access types are, of course, more of a tactical detail than a strategic issue and so this is not surprising.

@ However, the guidance document strongly emphasizes improvements to object oriented programming and the use of access types figures highly in that area. Indeed one of the motivations for changes was to reduce the number of explicit access type conversions required for OOP.

@ The guidance document also asks for "improvements that will remedy shortcomings in Ada". The introduction of anonymous access-to-subprogram types comes into that category in the minds of many users.

@ The following Ada issues cover the relevant changes and are described in detail in this paper:

@ These changes can be grouped as follows.

@ First, there is a general orthogonalization of the rules regarding whether the designated type is constant and whether the access subtype includes null (231, part of 404, part of 423).

@ A major change is the ability to use anonymous access types more widely (230, part of 318, 385, 392, part of 404, 406, part of 416, part of 420). This was found to require some redefinition of the rules regarding the use of a type name within its own definition (382). Access discriminants are now also permitted with nonlimited types (402).

@ The introduction of anonymous access-to-subprogram types enables local subprograms to be passed as parameters to other subprograms (254, 409). This has been a feature of many other programming languages for over 40 years and its omission from Ada has always been both surprising and irritating and forced the excessive use of generics.

@ Finally there are some corrections to the rules regarding changing discriminants which prevent attempting to access components of variants that do not exist (363). There is also a change to the rules concerning type conversions and discriminants to make them symmetric (384).

Rationale for Ada 2005: Access types

@ENGRUSTOPBACKNEXT

1. Обзор изменений

@ Руководящий документ [1] WG9 не рассматривает ссылочные типы как область, нуждающуюся во внимании. Т.к. ссылочные типы больше тактический инструмент чем стратегический.

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

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

@ Приведём список проблем Ады связанных с вышеперчисленными изменениями которые будем рассматривать в этой статье:

@ Эти изменения могут быть группированы следующим образом.

@ Сначала, есть общее ортогональное правило относительно того, является ли определяемый тип константным и разрешает ли ссылочный подтип пустой указатель (231, часть 404, часть 423).

@ Главное изменение - возможность использовать анонимные ссылочные типы более широко (230, часть 318, 385, 392, часть 404, 406, часть 416, часть 420). Это потребовало некоторого переопределения правил использования имени типа в пределах его собственного определения (382). Ссылочные дискриминанты теперь также разрешаются с неограниченными типами (402).

@ Введение анонимных ссылочных типов к подпрограмме дает возможность локальным подпрограммам быть переданными в качестве параметра для других подпрограмм (254, 409). Эта возможность была во многих других языках программирования в течение более чем 40 лет, и её отсутствие в Аде всегда и удивляло и раздражало и вызвало чрезмерное использование generics.

@ Наконец, есть некоторые исправления правил связаннх дискриминантами, которые предотвращают попытки обратиться к компонентам вариантов, которых не существует (363). Есть также изменения к правилам преобразований типов и дискриминантов, чтобы сделать их симметричными (384).

@ ENG RUS

TOP BACK NEXT

2010-10-24 00:26:53

. .