Языки программирования. Практический сравнительный анализ


Языки программирования. Практический сравнительный анализ - стр. 216


Объект высшего порядка (тип) служит мета-объектом в том же смысле -  характеризует связь объектов низшего порядка (а именно их принадлежность этому конкретному типу).

 

4.12.3. Действия с типами

Что же можно "делать" с таким объектом высшего порядка, как тип данных?

Во-первых, можно (и нужно) получать из одних типов другие, т.е. преобразовывать типы (не объекты данных, а именно типы). Преобразователями типов служат конструкторы типов, с которыми мы уже знакомы. Так, конструктор производного типа преобразует родительский тип в новый тип, в общем случае ограничивая класс значений и сохраняя набор базовых операций. Конструктор регулярного и комбинированного типа  преобразует типы компонент регулярных и комбинированных объектов в новый составной тип. Определяющий пакет представляет собой преобразователь объявленных в нем типов, дополняющий набор их базовых операций. Обратите внимание, все названные преобразователи типов (иногда говорят "типовые функции" с ударением на первом слоге) в язык Ада встроены. Они не только предопределены создателями языка, но и по виду своего вызова отличаются от обычных функций. По смыслу это, конечно, функции, аргументами и результатами которых служат типы. Но синтаксически они функциями не считаются и работают не в период исполнения, как остальные функции, а в период трансляции (т.е. это "статические" функции).

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

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


- Начало -  - Назад -  - Вперед -