Косвенное обращение - Indirection

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

Обзор

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

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

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

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

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

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

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

Смотрите также

использованная литература

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