
254 Гл. 3. Машинно-ориентированные алгоритмические языки
Тем самым каждой процедуре соответствует некоторый подмас-
сив,
элементы которого (если только они не отвечают чистым
параметрам-результатам или локальным величинам) запол-
няются
должным образом перед вызовом процедуры (и в
ходе
исполнения
замещаются новыми значениями, если только это>
us входные или обыкновенные параметры). Правда, когда
взаимодействует сразу несколько процедур, при таком простом
образе действий потребуются изрядные затраты, связанные с
удалением и возвратом значений в память.
Отдельные индексы введенной таким образом памяти назы-
ваются
(относительными)
адресами,
и соответственно мы гово-
рим
об
адресуемой
памяти.
В
случае
рекурсивных процедур вроде
quicksort
для каждого-
воплощения
потребуется своё собственное место в памяти —
для локально описанных промежуточных результатов, перемен-
ных, массивов, а также обыкновенных параметров. Необходимое
для этого „динамическое распределение памяти", включающее
в
себя некоторую специальную обработку
('call
by
reference'
1
)
упоминавшихся в 3.6.1 вычисляемых переменных, мы обсудим
лишь
в гл. 5.
Применение
же описанного выше
статического
распределе-
ния
памяти
ограничивается случаем итеративных программ и.
массивов с постоянным диапазоном индексов. Оно часто исполь-
зуется для малых машин.
3.6.4.2
Более эффективный способ распределения памяти, который
не
только сокращает издержки на переброски в памяти, но п
экономит
сами элементы памяти, основан па совместном поль-
зовании
памятью из окружения вызова—он принимает в рас-
чёт паразитический характер параметров-переменных (см.
3.5)..
Соответствующая машинная реализация организует при вызове
процедуры передачу фактических значений параметров особым
переменным процедуры. А именно, в
случае
обыкновенных па-
раметров значения в форме объектов передаются обыкновен-
ным
переменным, а в
случае
параметров-переменных значения.
в
форме
ссылок,
т. е. адресов, передаются специальным пере-
менным,
называемым
переменными
связи.
Предусматриваются
особые меры для того, чтобы возможным было присваивание
и
такой индексированной переменной, индекс которой вычис-
ляется, т. е. переменной, которая является значением некоторой
переменной
связи
(косвенная
адресация,
X. Шехер, 1955 г.).
„Вызов ссылкой" (англ.). —
Прим.
перев.