Knowledge (XXG)

Indirection

Source 📝

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:.

Index


verification
improve this article
adding citations to reliable sources
"Indirection"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computer programming
memory address
variable
pointer
addressing modes
domain name system
aphorism
Butler Lampson
David Wheeler
fundamental theorem of software engineering
abstraction layer
corollary
humorous Internet memorandum
RFC
1925
network architecture
Object-oriented programming
dynamic dispatch
design patterns

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.