Indirection - Indirection

v programování, indirection (také zvaný dereferencování) je schopnost odkazovat na něco pomocí názvu, odkazu nebo kontejneru namísto samotné hodnoty. Nejběžnější formou indirection je akt manipulace s hodnotou prostřednictvím adresa paměti. Například přístup k a proměnná prostřednictvím použití a ukazatel. Uložený ukazatel, který existuje k poskytnutí odkazu na objekt dvojitým nepřímým voláním, se nazývá an směrový uzel. V některých starších počítačových architekturách podporovala nepřímá slova řadu více či méně komplikovaných režimy adresování.

Přehled

Slavný aforismus z David Wheeler jde: „Všechny problémy v počítačové vědě lze vyřešit jinou úrovní přerušení“ („základní věta softwarového inženýrství ").[1]Toto je často záměrně chybně citováno s „abstrakční vrstva „nahrazuje„ úroveň indirection “. Často uváděný důsledek to je: „... až na problém příliš mnoha vrstev nepřátelství.“

Vtipné internetové memorandum, RFC  1925 trvá na tom, že:

(6) Je snazší problém přesunout (například přesunutím problému do jiné části celku) síťová architektura ), než je to vyřešit.

(6a) (důsledek). Vždy je možné přidat další úroveň indirection.

Objektově orientované programování využívá indirection značně, jednoduchý příklad bytí dynamické odesílání. Vyššími úrovněmi indirection jsou designové vzory z proxy a proxy server. Delegace je další klasický příklad vzoru indirection. v silně napsaný tlumočené jazyky s dynamickým typy dat, většina proměnných odkazů vyžaduje úroveň indirection: nejprve je zkontrolován typ proměnné z hlediska bezpečnosti a poté je dereferencován ukazatel na skutečnou hodnotu a bude na něj reagovat.

Rekurzivní datové typy jsou obvykle implementovány pomocí indirection, protože jinak, pokud hodnota datového typu může obsahovat celou jinou hodnotu stejného datového typu, neexistuje žádné omezení velikosti, kterou by hodnota tohoto datového typu mohla potřebovat.

Když děláte symbolické programování z formální matematické specifikace, může být použití indirection docela užitečné. Začneme jednoduchým příkladem proměnných X, y a z v rovnici, jako je může odkazovat na jakékoli číslo. Lze si představit objekty pro různá čísla a potom X, y a z může ukazovat na konkrétní čísla používaná pro konkrétní problém. Jednoduchý příklad má své omezení, protože reálných čísel je nekonečně mnoho. V různých jiných částech symbolického programování existuje pouze tolik symbolů. Chcete-li tedy přejít k významnějšímu příkladu, v logice vzorec α může odkazovat na jakýkoli vzorec, takže by mohl být β, y, δ, ... nebo ηπ, ςσ, ... Když set-builder notace je použito prohlášení Δ={α} znamená množinu všech vzorců - tedy i když je odkaz na α zde jsou dvě úrovně indirection, první ze všech α a poté druhý na konkrétní vzorec pro každý výskyt α v sadě Δ.

Viz také

Reference

  1. ^ Spinellis, Diomidis (2007). "Další úroveň indirection". V Oram, Andy; Wilson, Greg (eds.). Krásný kód: Přední programátoři vysvětlí, jak uvažují. Sebastopol, Kalifornie: O'Reilly and Associates. str. 279–291.