value-type, reference-type, pointer-type
Решил вынести в отдельную ветку обсуждение вопроса о value-type, reference-type и pointer-type.
Начало там:
http://www.rsdn.ru/Forum/Message.aspx?mid=870069&only=1Автор: VladD2
Дата: 27.10.04
В Java работа с объектами осуществляется через reference-type переменные. В C# для ускорения работы придумано хитрое средство под названием boxing/unboxing — упрятывает value-type в reference-type и обратно. И в том и в другом языке pointer-type если и есть, то этим термином названа "низкая" unsafe работа с адресами. Хотелось бы восстановить доброе имя pointer-type. Дело в том, что, например, в оберонах есть все три сорта типов value-type, reference-type и pointer-type, и все они совершенно безопасны (safe) и управляются сборщиком мусора.
TYPE
ValueType = RECORD
a: PointerType;
b: ReferenceType;
END;
ReferenceType = POINTER TO RECORD
a: PointerType;
b: ReferenceType;
c: ValueType;
END;
PointerType = POINTER TO ValueType;
То есть, никакие хитрости boxing/unboxing не нужны если есть обыкновенный безопасный pointer-type управляемый сборщиком мусора. Отсюда нет дискредитации термина УКАЗАТЕЛЬ как чего-то низменного и недостойного safe кода. Указатель — это хорошо и не более опасно чем reference-type.
P.S.
Другое дело, что не надо путать два разных понятия УКАЗАТЕЛЬ и АДРЕС. Указатель — это одно, а адрес, адресное пространство и адресная арифметика — это совершенно другое.