Retning - Indirection
I computerprogrammering er indirection (også kaldet dereferencing ) evnen til at henvise til noget ved hjælp af et navn, reference eller container i stedet for selve værdien. Den mest almindelige form for indirekte er handlingen med at manipulere en værdi gennem dens hukommelsesadresse . For eksempel adgang til en variabel ved hjælp af en markør . En lagret markør, der findes for at give en reference til et objekt ved dobbelt indirektion, kaldes en indirektionsknude . I nogle ældre computerarkitekturer understøttede indirekte ord en række mere eller mindre komplicerede adressetilstande .
Oversigt
En berømt aforis af Butler Lampson lyder: "Alle problemer inden for datalogi kan løses ved et andet niveau af indirekte" (" softwareteknisk grundsætning "). Dette citeres ofte bevidst forkert med " abstraktionslag " erstattet af "indirekte niveau". En ofte citeret følge heraf er, "... bortset fra problemet med for mange lag af indirekte."
Et humoristisk internetnotat , RFC 1925 , insisterer på, at:
(6) Det er lettere at flytte et problem rundt (f.eks. Ved at flytte problemet til en anden del af den overordnede netværksarkitektur ), end det er at løse det.
- (6a) (følge). Det er altid muligt at tilføje et andet niveau af indirekte.
Objektorienteret programmering gør i vid udstrækning brug af indirektion, et simpelt eksempel er dynamisk udsendelse . Eksempler på indirektion på højere niveau er designmønstre for proxy og proxyserver . Delegation er et andet klassisk eksempel på et indirekte mønster. I stærkt typede fortolkede sprog med dynamiske datatyper kræver de fleste variable referencer et niveau af indirektion: først kontrolleres variabeltypen for sikkerhed, og derefter markeres og markeres markøren til den faktiske værdi.
Rekursive datatyper implementeres normalt ved hjælp af indirection, for hvis en værdi af en datatype ellers kan indeholde hele en anden værdi af den samme datatype, er der ingen grænse for størrelsen, en værdi af denne datatype kan have brug for.
Når du laver symbolsk programmering ud fra en formel matematisk specifikation, kan brugen af indirektion være ganske nyttig. For at starte med et enkelt eksempel kan variablerne x , y og z i en ligning referere til et hvilket som helst tal. Man kunne forestille sig objekter til forskellige tal, og derefter kunne x , y og z pege på, at de specifikke tal bruges til et bestemt problem. Det enkle eksempel har sin begrænsning, da der er uendeligt mange reelle tal. I forskellige andre dele af symbolsk programmering er der kun så mange symboler. Så for at gå videre til et mere betydningsfuldt eksempel, kan logikken formlen α referere til enhver formel, så det kan være β , γ , δ , ... eller η → π , ς ∨ σ , ... Når set-builder notation bruges sætningen Δ = { α } betyder sættet af alle formler - så selvom henvisningen er til α, er der to niveauer af indirektion her, det første til sættet af alle α og derefter det andet til en bestemt formel for hver forekomst af α i sættet Δ.