Jump to content

Косвенность

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

Другим важным примером является система доменных имен , которая позволяет использовать такие имена, как en.wikipedia.org использоваться на местесетевых адресов, таких как 208.80.154.224. Переход от удобочитаемых имен к сетевым адресам означает, что ссылки на веб-страницу становятся более запоминающимися, и ссылки не нужно менять при перемещении веб-сайта на другой сервер.

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

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

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

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

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

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

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

См. также

[ редактировать ]
  1. ^ Спинеллис, Диомидис (2007). «Другой уровень косвенности». В Ораме, Энди; Уилсон, Грег (ред.). Красивый код: ведущие программисты объясняют, как они думают . Севастополь, Калифорния: О'Рейли и партнеры. стр. 279–291.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 16a85fe3b3260471dc93c182aea27e1f__1720024860
URL1:https://arc.ask3.ru/arc/aa/16/1f/16a85fe3b3260471dc93c182aea27e1f.html
Заголовок, (Title) документа по адресу, URL1:
Indirection - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)