Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В компьютерном программировании , окольный (также называемое разыменованием ) является способность эталонного то используя имя, ссылку или контейнер вместо самого значения. Наиболее распространенная форма косвенного обращения - это манипулирование значением через его адрес в памяти . Например, доступ к переменной с помощью указателя . Сохраненный указатель, который существует для предоставления ссылки на объект путем двойного косвенного обращения, называется узлом косвенного обращения . В некоторых старых компьютерных архитектурах косвенные слова поддерживали множество более или менее сложных режимов адресации .

Обзор [ править ]

Известный афоризм из Лэмпсон гласит: «Все проблемы в информатике могут быть решены с помощью другого уровня косвенности» (в « фундаментальной теореме программной инженерии »). [1] Это часто намеренно неправильно цитируется, когда « уровень абстракции » заменяется на «уровень косвенности». Часто цитируемым следствием этого является «... за исключением проблемы слишком большого количества уровней косвенного обращения».

Юмористический Интернет меморандум , RFC  1925 , настаивает на том, что:

(6) Легче решить проблему (например, переместив ее в другую часть общей сетевой архитектуры ), чем решить ее.

(6а) (следствие). Всегда можно добавить еще один уровень косвенности.

Объектно-ориентированное программирование широко использует косвенное обращение, простой пример - динамическая диспетчеризация . Примеры высшего уровня косвенности являются шаблоны проектирования по доверенности и прокси - сервера . Делегирование - еще один классический пример шаблона косвенного обращения. В строго типизированных интерпретируемых языках с динамическими типами данных для большинства ссылок на переменные требуется уровень косвенности: сначала тип переменной проверяется на безопасность, а затем указатель на фактическое значение разыменовывается и выполняется действие.

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

При выполнении символического программирования на основе формальной математической спецификации использование косвенного обращения может быть весьма полезным. Чтобы начать с простого примера, переменные x , y и z в уравнении, например, могут относиться к любому числу. Можно представить себе объекты для различных чисел, а затем x , y и z могут указывать на конкретные числа, используемые для конкретной задачи. Простой пример имеет свои ограничения, поскольку существует бесконечно много действительных чисел. В различных других частях символического программирования существует ограниченное количество символов. Итак, чтобы перейти к более важному примеру, в логике формула α может относиться к любой формуле, поэтому это может быть β., γ , δ , ... или ηπ , ςσ , ... Когда используется обозначение конструктора множеств, выражение Δ = { α } означает набор всех формул, поэтому, хотя ссылка на α, существует здесь два уровня косвенности, первый - к множеству всех α, а второй - к конкретной формуле для каждого вхождения α в наборе Δ .

См. Также [ править ]

Ссылки [ править ]

  1. ^ Спинеллис, Diomidis (2007). «Другой уровень косвенности». В Ораме, Энди; Уилсон, Грег (ред.). Красивый код: ведущие программисты объясняют, как они думают . Севастополь, Калифорния: O'Reilly and Associates. С. 279–291.