> -- AVC писал(а):
> А можно немного подробнее?Например, обязательна ли непрерывность области памяти для строки?Я тоже думал над этим вопросом некоторое время назад (почитывая Дейкстру). Основное удобство непрерывной памяти массива для человека заключено в удобстве обращения к элементам. Есть адрес базы массива (начало), есть размер элемента. Обращение к нужному элементу производится с помощью операции "база + размер * порядковый_номер_ячейки". Если слежение за индексами массива сделать аппаратным, то необходимость в непрерывной области исчезает (или проблема хотя бы уменьшается).

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

Удобнее, чтобы контроллер памяти работал не со значениями адресов, а с переменными. Например, получить значение переменной prog1.var1 или записать значение в переменную prog4.var2[14]. Естественно, prog4.var2 должна иметь тип массив.

А введение в контроллер памяти переменных вида prog3.ptr6 незаметно избавит от необходимости сборки мусора. И вообще, введение указателей в контроллер памяти (а не в процессор, как это сделали в x86) может сократить объём данных, гоняемых между ОЗУ и процессором.