9.1. СТРУКТУРИРОВАНИЕ ДАННЫХ
489
d) как новые операции согласуются с процедурными средствами данного
языка (в частности,для новых данных необходимо обеспечить механизмы
параметризации, представленные в языке);
Эти вопросы решаются вместе с вопросами размещения конструируемых
данных в памяти. В частности, должны быть определено, считается или нет
указатель на память, где хранится значение нового типа, значением еще од-
ного типа,который автоматически определяется вместе с конструктором (как
в
С/С++
), или указательные значения нужно определять специально (как в
Pascal
).
Способы приведения различны для разных языков, но реально всегда пре-
доставляется возможность их явного задания, например, с помощи указания
имени типа, к которому нужно привести значение. Варианты неявных при-
ведений зависят от того, насколько строг контроль типов в данном языке.
Именно так нужно подходить к конкретным приведениям, предусматрива-
емым в том или ином случае. Концепция, когда ‘все приводится ко всему’,
все еще имеет своих защитников среди ассемблерных программистов, осо-
бенно тех, кто пишет маленькие, автономно работающие и практически не
модифицируемые модули. Но если говорить о надежном коллективном про-
граммировании, то задача строгого контроля типов занимает важное место.
Обсуждая базовые структуры данных и конструкторы, нужно затронуть
вопрос о способах задания литералов и, вообще, изображения значений, как
базовых, так и структурных данных. Разнобой, который при этом демонстри-
руют языки, свидетельствует об отсуствии достаточно обоснованных крите-
риев выбора того или иного решения.
Литералы обладают атрибутом, исключительно существенным для вы-
числений, — фиксированным значением, независимым от контекста. Значе-
ния, а не изображения значений, воспринимаются абстрактным вычислите-
лем, выполняющим программу. Принципиально, что значения как атрибуты
фиксируются уже при реализации языка, которая задает их в соответствии с
возможностями конкретного вычислителя моделировать действия абстракт-
ного вычислителя.
Есть ряд моментов, которые нужно учитывать:
a) Литералы воспринимаются человеком, следовательно, они должны быть
для него понятны. Поэтому в качестве изображений значений использу-
ются числа в привычной нотации,строки,идентификаторы, осмысленные
с точки зрения естественного языка.