Knowledge

Abstraction layer

Source 📝

187:
to a device at the application level, the program calls a function to open the device, which may be a real device such as a terminal or a virtual device such as a network port or a file in a file system. The device's physical characteristics are mediated by the operating system which in turn presents an abstract interface that allows the programmer to read and write bytes from/to the device. The operating system then performs the actual transformation needed to read and write the stream of bytes to the device.
85:, away from any specific implementation. These generalizations arise from broad similarities that are best encapsulated by models that express similarities present in various specific implementations. The simplification provided by a good abstraction layer allows for easy reuse by distilling a useful concept or 195:
Most graphics libraries such as OpenGL provide an abstract graphical device model as an interface. The library is responsible for translating the commands provided by the programmer into the specific device commands needed to draw the graphical elements and objects. The specific device commands for a
153:
Programmable logic is often considered part of the hardware, while the logical definitions are also sometimes seen as part of a device's software or firmware. Firmware may include only low-level software, but can also include all software, including an operating system and applications. The software
186:
In the Unix operating system, most types of input and output operations are considered to be streams of bytes read from a device or written to a device. This stream of bytes model is used for file I/O, socket I/O, and terminal I/O in order to provide device independence. In order to read and write
97:
on it. Every layer can exist without the layers above it, and requires the layers below it to function. Frequently abstraction layers can be composed into a hierarchy of abstraction levels. The OSI model comprises seven abstraction layers. Each layer of the model encapsulates and addresses a
154:
layers can be further divided into hardware abstraction layers, physical and logical device drivers, repositories such as filesystems, operating system kernels, middleware, applications, and others. A distinction can also be made from low-level programming languages like
89:
so that situations, where it may be accurately applied, can be quickly recognized. Just composing lower-level elements into a construct doesn't count as an abstraction layer unless it shields users from its underlying complexity.
102: 337: 207:, but the graphics library hides the implementation and device-dependent details by providing an abstract interface which provides a set of 360: 78: 298: 106: 394: 220: 291:
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Addison-Wesley Signature Series (Fowler))
113:." This is often deliberately misquoted with "abstraction" substituted for "indirection." It is also sometimes misattributed to 98:
different part of the needs of digital communications, thereby reducing the complexity of the associated engineering solutions.
42:
is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the
416: 248: 94: 386: 226: 208: 314: 329: 59: 130: 67: 421: 356: 269: 238: 171: 378: 253: 308: 243: 142: 55: 133:, a computer system is usually represented as consisting of several abstraction levels such as: 390: 294: 167: 163: 147: 263: 204: 201: 159: 74: 63: 47: 258: 175: 121:'s corollary to this is, "...except for the problem of too many layers of indirection." 352: 114: 86: 410: 118: 17: 110: 82: 43: 31: 232: 137: 109:
is, "All problems in computer science can be solved by another level of
364: 197: 51: 155: 266:, an abstraction layer between a program and computer hardware 336:. Sebastopol, CA: O'Reilly and Associates. pp. 279–291. 235:, a tool for abstraction between source code and machine code 334:
Beautiful Code: Leading Programmers Explain How They Think
211:
that are generally useful for drawing graphical objects.
93:
A layer is considered to be on top of another if it
77:, an abstraction layer is a generalization of a 363:from the original on Mar 29, 2022 – via 27:Way of hiding details of a computing subsystem 353:"@drunkcod Yes, that's my corollary :^)" 200:are different from the device commands for a 8: 330:"Chapter 17. Another Level of Indirection" 281: 306: 351:Henney, Kevlin (September 3, 2012). 7: 25: 340:from the original on Mar 6, 2024. 221:Application programming interface 383:Structured Computer Organization 293:. Addison-Wesley Professional. 289:Hohpe, Gregor (March 9, 2012). 249:Layer (object-oriented design) 1: 387:Englewood Cliffs, New Jersey 328:Spinellis, Diomidis (2007). 227:Application binary interface 438: 60:separation of concerns 417:Computer architecture 131:computer architecture 125:Computer architecture 68:platform independence 379:Tanenbaum, Andrew S. 313:: CS1 maint: year ( 270:Software engineering 239:Hardware abstraction 254:Namespace violation 18:Architectural layer 244:Information hiding 143:programmable logic 58:, which allow the 56:graphics libraries 389:: Prentice-Hall. 168:compiled language 164:assembly language 48:network protocols 40:abstraction level 36:abstraction layer 16:(Redirected from 429: 401: 400: 375: 369: 368: 348: 342: 341: 325: 319: 318: 312: 304: 286: 264:Operating system 182:Input and output 160:machine language 79:conceptual model 75:computer science 64:interoperability 21: 437: 436: 432: 431: 430: 428: 427: 426: 407: 406: 405: 404: 397: 377: 376: 372: 350: 349: 345: 327: 326: 322: 305: 301: 288: 287: 283: 278: 259:Protection ring 217: 193: 184: 176:script language 127: 103:famous aphorism 28: 23: 22: 15: 12: 11: 5: 435: 433: 425: 424: 419: 409: 408: 403: 402: 395: 370: 343: 320: 300:978-0321200686 299: 280: 279: 277: 274: 273: 272: 267: 261: 256: 251: 246: 241: 236: 230: 224: 216: 213: 192: 189: 183: 180: 151: 150: 145: 140: 126: 123: 115:Butler Lampson 87:design pattern 62:to facilitate 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 434: 423: 420: 418: 415: 414: 412: 398: 396:0-13-148521-0 392: 388: 384: 380: 374: 371: 366: 362: 358: 354: 347: 344: 339: 335: 331: 324: 321: 316: 310: 302: 296: 292: 285: 282: 275: 271: 268: 265: 262: 260: 257: 255: 252: 250: 247: 245: 242: 240: 237: 234: 231: 228: 225: 222: 219: 218: 214: 212: 210: 206: 203: 199: 190: 188: 181: 179: 177: 173: 169: 165: 161: 157: 149: 146: 144: 141: 139: 136: 135: 134: 132: 124: 122: 120: 119:Kevlin Henney 116: 112: 108: 107:David Wheeler 104: 99: 96: 91: 88: 84: 80: 76: 71: 69: 65: 61: 57: 53: 49: 45: 41: 37: 33: 19: 382: 373: 346: 333: 323: 290: 284: 194: 185: 152: 128: 100: 92: 72: 54:, and other 39: 35: 29: 422:Abstraction 172:interpreter 111:indirection 411:Categories 276:References 209:primitives 309:cite book 83:algorithm 44:OSI model 32:computing 381:(1979). 361:Archived 338:Archived 233:Compiler 215:See also 191:Graphics 148:hardware 138:software 365:Twitter 205:monitor 198:plotter 95:depends 393:  297:  174:, and 52:OpenGL 357:Tweet 229:(ABI) 223:(API) 166:to a 129:In a 34:, an 391:ISBN 315:link 295:ISBN 156:VHDL 66:and 46:for 359:). 202:CRT 105:of 81:or 73:In 38:or 30:In 413:: 385:. 332:. 311:}} 307:{{ 178:. 170:, 162:, 158:, 117:. 101:A 70:. 50:, 399:. 367:. 355:( 317:) 303:. 20:)

Index

Architectural layer
computing
OSI model
network protocols
OpenGL
graphics libraries
separation of concerns
interoperability
platform independence
computer science
conceptual model
algorithm
design pattern
depends
famous aphorism
David Wheeler
indirection
Butler Lampson
Kevlin Henney
computer architecture
software
programmable logic
hardware
VHDL
machine language
assembly language
compiled language
interpreter
script language
plotter

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