Indirection

редактировать

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

Обзор

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

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

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

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

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

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

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

См. Также

Ссылки

Последняя правка сделана 2021-05-24 14:06:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте