25:
350:
could point to the specific numbers being used for a particular problem. The simple example has its limitation as there are infinitely many real numbers. In various other parts of symbolic programming there are only so many symbols. So to move on to a more significant example, in logic the formula
272:
are usually implemented using indirection, because otherwise if a value of a data type can contain the entirety of another value of the same data type, there is no limit to the size a value of this data type could need.
168:. The indirection from human-readable names to network addresses means that the references to a web page become more memorable, and links do not need to change when a web site is relocated to a different server.
133:) is a way of referring to something using a name, reference, or container instead of the value itself. The most common form of indirection is the act of manipulating a value through its
266:, most variable references require a level of indirection: first the type of the variable is checked for safety, and then the pointer to the actual value is dereferenced and acted on.
336:
276:
When doing symbolic programming from a formal mathematical specification the use of indirection can be quite helpful. To start with a simple example the variables
189:
204:
256:
185:
240:
108:
485:
200:
to this aphorism, and the original conclusion from
Wheeler, is "...except for the problem of too many layers of indirection."
490:
422:
142:
46:
89:
427:
61:
42:
232:
68:
35:
495:
219:(6) It is easier to move a problem around (for example, by moving the problem to a different part of the overall
252:
75:
458:
138:
291:
57:
149:. In some older computer architectures, indirect words supported a variety of more-or-less complicated
145:. A stored pointer that exists to provide a reference to an object by double indirection is called an
432:
384:
259:
220:
122:
480:
269:
417:
412:
157:
457:
Spinellis, Diomidis (2007). "Another level of indirection". In Oram, Andy; Wilson, Greg (eds.).
193:
188:
goes: "All problems in computer science can be solved by another level of indirection" (the "
236:
208:
150:
82:
437:
181:
134:
474:
244:
248:
338:
can refer to any number. One could imagine objects for various numbers and then
212:
24:
263:
227:(6a) (corollary). It is always possible to add another level of indirection.
197:
177:
395:
there are two levels of indirection here, the first to the set of all
463:. Sebastopol, California: O'Reilly and Associates. pp. 279–291.
391:} means the set of all formulae — so although the reference is to
399:
and then the second to a specific formula for each occurrence of
18:
235:
makes use of indirection extensively, a simple example being
460:
Beautiful Code: Leading
Programmers Explain How They Think
255:
is another classic example of an indirection pattern. In
294:
49:. Unsourced material may be challenged and removed.
330:
164:to be used in place of network addresses such as
239:. Higher-level examples of indirection are the
192:"). This is often deliberately mis-quoted with "
217:
8:
196:" substituted for "level of indirection". A
190:fundamental theorem of software engineering
355:can refer to any formula, so it could be
320:
307:
301:
293:
109:Learn how and when to remove this message
449:
7:
331:{\textstyle z={\sqrt {x^{2}+y^{2}}}}
47:adding citations to reliable sources
14:
156:Another important example is the
23:
34:needs additional citations for
16:Computer programming construct
1:
387:is employed the statement Δ={
205:humorous Internet memorandum
160:which enables names such as
233:Object-oriented programming
137:. For example, accessing a
512:
223:) than it is to solve it.
288:in an equation such as
486:Programming constructs
332:
230:
184:that is attributed to
491:Computing terminology
333:
260:interpreted languages
141:through the use of a
433:Dereference operator
385:set-builder notation
292:
270:Recursive data types
221:network architecture
123:computer programming
43:improve this article
418:Delegation pattern
328:
158:domain name system
326:
194:abstraction layer
119:
118:
111:
93:
503:
496:Unary operations
465:
464:
454:
337:
335:
334:
329:
327:
325:
324:
312:
311:
302:
237:dynamic dispatch
215:, insists that:
167:
163:
162:en.wikipedia.org
151:addressing modes
147:indirection node
114:
107:
103:
100:
94:
92:
51:
27:
19:
511:
510:
506:
505:
504:
502:
501:
500:
471:
470:
469:
468:
456:
455:
451:
446:
409:
316:
303:
290:
289:
241:design patterns
174:
165:
161:
129:(also called a
115:
104:
98:
95:
52:
50:
40:
28:
17:
12:
11:
5:
509:
507:
499:
498:
493:
488:
483:
473:
472:
467:
466:
448:
447:
445:
442:
441:
440:
438:Law of Demeter
435:
430:
425:
420:
415:
408:
405:
403:in the set Δ.
323:
319:
315:
310:
306:
300:
297:
257:strongly typed
229:
228:
182:Butler Lampson
173:
170:
166:208.80.154.224
135:memory address
117:
116:
31:
29:
22:
15:
13:
10:
9:
6:
4:
3:
2:
508:
497:
494:
492:
489:
487:
484:
482:
479:
478:
476:
462:
461:
453:
450:
443:
439:
436:
434:
431:
429:
426:
424:
421:
419:
416:
414:
411:
410:
406:
404:
402:
398:
394:
390:
386:
382:
378:
374:
370:
366:
362:
358:
354:
349:
345:
341:
321:
317:
313:
308:
304:
298:
295:
287:
283:
279:
274:
271:
267:
265:
262:with dynamic
261:
258:
254:
250:
246:
242:
238:
234:
226:
225:
224:
222:
216:
214:
210:
206:
201:
199:
195:
191:
187:
186:David Wheeler
183:
179:
171:
169:
159:
154:
152:
148:
144:
140:
136:
132:
128:
124:
113:
110:
102:
99:February 2022
91:
88:
84:
81:
77:
74:
70:
67:
63:
60: –
59:
58:"Indirection"
55:
54:Find sources:
48:
44:
38:
37:
32:This article
30:
26:
21:
20:
459:
452:
400:
396:
392:
388:
380:
376:
372:
368:
364:
360:
356:
352:
347:
343:
339:
285:
281:
277:
275:
268:
249:proxy server
231:
218:
202:
175:
155:
146:
130:
126:
120:
105:
96:
86:
79:
72:
65:
53:
41:Please help
36:verification
33:
383:, ... When
127:indirection
481:Data types
475:Categories
444:References
264:data types
253:Delegation
69:newspapers
428:Reference
367:, ... or
198:corollary
176:A famous
131:reference
407:See also
247:and the
178:aphorism
172:Overview
139:variable
423:Pointer
243:of the
143:pointer
83:scholar
413:Handle
211:
85:
78:
71:
64:
56:
245:proxy
125:, an
90:JSTOR
76:books
346:and
284:and
213:1925
62:news
209:RFC
180:of
121:In
45:by
477::
379:∨
375:,
363:,
359:,
342:,
280:,
251:.
207:,
203:A
153:.
401:α
397:α
393:α
389:α
381:σ
377:ς
373:π
371:→
369:η
365:δ
361:γ
357:β
353:α
348:z
344:y
340:x
322:2
318:y
314:+
309:2
305:x
299:=
296:z
286:z
282:y
278:x
112:)
106:(
101:)
97:(
87:·
80:·
73:·
66:·
39:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.