Косвенность
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2022 г. ) |
В компьютерном программировании косвенность ) — (также называемая ссылкой это способ ссылки на что-либо с использованием имени, ссылки или контейнера вместо самого значения. Наиболее распространенной формой косвенности является манипулирование значением через его адрес в памяти . Например, доступ к переменной с помощью указателя . Сохраненный указатель, который существует для предоставления ссылки на объект посредством двойной косвенности, называется узлом косвенности . В некоторых старых компьютерных архитектурах косвенные слова поддерживали множество более или менее сложных режимов адресации .
Другим важным примером является система доменных имен , которая позволяет использовать такие имена, как en.wikipedia.org
использоваться на местесетевых адресов, таких как 208.80.154.224
. Переход от удобочитаемых имен к сетевым адресам означает, что ссылки на веб-страницу становятся более запоминающимися, и ссылки не нужно менять при перемещении веб-сайта на другой сервер.
Обзор
[ редактировать ]Знаменитый афоризм Батлера Лэмпсона , приписываемый Дэвиду Уилеру, гласит: «Все проблемы в информатике могут быть решены с помощью другого уровня косвенности» (« фундаментальная теорема разработки программного обеспечения »). [1] Часто это намеренно неправильно цитируют [ кем? ] где « уровень абстракции » заменен на «уровень косвенности». Следствием этого афоризма и первоначальным выводом Уиллера является «... за исключением проблемы слишком большого количества слоев косвенности».
Юмористический интернет-меморандум , RFC 1925 настаивает на том, что:
(6) Проблему легче переместить (например, переместив ее в другую часть общей сетевой архитектуры ), чем решить ее.
- (6а) (следствие). Всегда можно добавить еще один уровень косвенности.
В объектно-ориентированном программировании широко используется косвенность, простым примером является динамическая диспетчеризация . Примерами косвенности более высокого уровня являются шаблоны проектирования прокси прокси - и сервера . Делегирование — еще один классический пример шаблона косвенности. В строго типизированных интерпретируемых языках с динамическими типами данных большинство ссылок на переменные требуют определенного уровня косвенности: сначала тип переменной проверяется на безопасность, а затем указатель на фактическое значение разыменовывается и обрабатывается.
Рекурсивные типы данных обычно реализуются с использованием косвенности, поскольку в противном случае, если значение типа данных может содержать все другое значение того же типа данных, не существует ограничений на размер значения этого типа данных.
При символьном программировании на основе формальной математической спецификации использование косвенности может оказаться весьма полезным. Начнем с простого примера: переменные x , y и z в таком уравнении, как может относиться к любому числу. Можно представить объекты для различных чисел, а затем x , y и z могут указывать на конкретные числа, используемые для конкретной задачи. Простой пример имеет ограничения, поскольку действительных чисел бесконечно много. В различных других частях символьного программирования имеется ограниченное количество символов. Итак, переходя к более важному примеру: в логике формула α может относиться к любой формуле, поэтому это может быть β , γ , δ , ... или η → π , ς ∨ σ , ... Когда построитель множеств обозначения используются : утверждение Δ={ α } означает набор всех формул - поэтому, хотя речь идет об α , здесь есть два уровня косвенности: первый - к множеству всех α , а затем второй - к конкретной формуле для каждой появление α в множестве ∆.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Спинеллис, Диомидис (2007). «Другой уровень косвенности». В Ораме, Энди; Уилсон, Грег (ред.). Красивый код: ведущие программисты объясняют, как они думают . Севастополь, Калифорния: О'Рейли и партнеры. стр. 279–291.