Ада-95. Компилятор GNAT



         

Контекст и видимость


Ошибочное понимание разницы между контекстом (scope) и видимостью (visibility) может вызвать трудности у многих программистов, которые знакомятся с языком программирования Ада.

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

Спецификатор совместности контекста with

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

Это является основным различием от директивы #include семейства языков C

или директивы uses в реализации Паскаль-системы фирмы Borland.

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

Разделение контекста и видимости является важным концептом разработки программного обеспечения.

Однако, следует заметить, что этот концепт редко реализовывается в различных языках программирования.

Примечательно также, что идея пространства имен namespace, принятая в C++, подобна концепции контекста и видимости Ады.

Каждая инструкция и/или каждая конструкция языка имеет объемлющий контекст.

Обычно, контекст легко увидеть в исходном тексте, поскольку контекст имеет какую-либо точку входа (описательная часть declare, идентификатор подпрограммы, идентификатор составного типа, идентификатор пакета...) и какую-либо явную точку завершения.

Как правило, явная точка завершения контекста обозначается с помощью соответствующей инструкции end.

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

Контекст может быть вложенным.

Например, одна процедура может быть описана внутри другой процедуры.

Несколько иначе выглядит ситуация, когда спецификатор совместности контекста with

помещает в контекст какой-либо библиотечный модуль.

В этом случае в контекст помещаются все ресурсы указанного библиотечного модуля, но при этом, спецификатор with




Содержание  Назад  Вперед