value-type, reference-type, pointer-type
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 27.10.04 09:55
Оценка: :)
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.
Другое дело, что не надо путать два разных понятия УКАЗАТЕЛЬ и АДРЕС. Указатель — это одно, а адрес, адресное пространство и адресная арифметика — это совершенно другое.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.