Skip to content
Main menu
  • Main page
  • Discover
  • Unexpected connections
  • Topics
  • Random article
  • Search
Your library
  • Saved articles
  • Recent discoveries
  • Rabbit-hole trails
Topic areas
  • Computer Science
  • Mathematics
  • Physics
  • Engineering
  • Biology
  • Economics
  • Curiosities
WikiholeDeeper into Wikipedia
EnglishEN
  • Saved
  • History

  • Article text and media come live from Wikipedia via the official MediaWiki API and are available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. Each article links to its source and revision.
  • WikiHole is an independent project and is not affiliated with the Wikimedia Foundation.
  • How ranking works
  • All topics
  • Reading history
  • Random article
  • MediaWiki API

Abstraction layer

  • Article
  • Rabbit hole
  • Read
  • View history
Tools
Actions
  • Read
  • View history
General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
2 min
Topic
Computer Science
Quality
Start-class
Views
885 in 14 days
Last edited
24 Sept 2026
Print/export
  • Printable version
In other projects
  • Wikidata item
From Wikipedia, the free encyclopedia
Rabbit hole:
  1. Abstraction layer

In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL, and other graphics libraries, which allow the separation of concerns to facilitate interoperability and platform independence.

In computer science, an abstraction layer is a generalization of a conceptual model or algorithm, 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 design pattern 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.1

A layer is considered to be on top of another if it depends 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 different part of the needs of digital communications, thereby reducing the complexity of the associated engineering solutions.

A famous aphorism of David Wheeler is, "All problems in computer science can be solved by another level of indirection."2 This is often deliberately misquoted with "abstraction" substituted for "indirection." It is also sometimes misattributed to Butler Lampson. Kevlin Henney's corollary to this is, "...except for the problem of too many layers of indirection."3

Loading the rest of the article…

Recent changes

Rabbit hole

Where Abstraction layer leads. Every connection below has a source: a link in this article, a shared Wikipedia category, or CirrusSearch text similarity. Articles already on your trail are left out.

Contents
  • (Top)
  • Computer architecture
  • Input and output
  • Graphics
  • See also
  • References
  • Recent changes
  • Rabbit hole
Contents
Contents7 sections
  • (Top)
  • Computer architecture
  • Input and output
  • Graphics
  • See also
  • References
  • Recent changes
  • Rabbit hole

Computer architecture

In a computer architecture, a computer system is usually represented as consisting of several abstraction levels, such as:

  • software
  • programmable logic
  • hardware

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 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 between low-level programming languages like VHDL, machine language, assembly language and a compiled language, interpreter, or script language.4

Input and output

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

Graphics

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 plotter are different from the device commands for a CRT monitor, but the graphics library hides the implementation and device-dependent details by providing an abstract interface that provides a set of primitives that are generally useful for drawing graphical objects.

See also

  • Application programming interface (API)
  • Application binary interface (ABI)
  • Compiler, a tool for abstraction between source code and machine code
  • Hardware abstraction
  • Information hiding
  • Layer (object-oriented design)
  • Namespace violation
  • Protection ring
  • Operating system, an abstraction layer between a program and computer hardware
  • Software engineering

References

  1. 1Hohpe, Gregor (March 9, 2012). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Addison-Wesley Signature Series (Fowler)). Addison-Wesley Professional. ISBN 978-0321200686.
  2. 2Spinellis, Diomidis (2007). "Chapter 17. Another Level of Indirection". Beautiful Code: Leading Programmers Explain How They Think. Sebastopol, CA: O'Reilly and Associates. pp. 279–291. Archived from the original on Mar 6, 2024.
  3. 3Henney, Kevlin [@kevlinhenney] (September 3, 2012). "@drunkcod Yes, that's my corollary :^)" (Tweet). Archived from the original on Mar 29, 2022 – via Twitter.
  4. 4Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0.
Study aids for Abstraction layer

Terminology

abstraction level
In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem.

Terms the article defines in bold, quoted in context.

Categories:
  • Computer architecture
  • Abstraction

625 words · 4 references · revision 1376530207 · CC BY-SA 4.0

General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
2 min
Topic
Computer Science
Quality
Start-class
Views
885 in 14 days
Last edited
24 Sept 2026

Key concepts

  • Computing1
  • OSI model1
  • Network protocol1
  • OpenGL1
  • Graphics libraries1
  • Separation of concerns1
  • Interoperability1
  • Platform independence1
  • Conceptual model (computer science)1
  • Algorithm1

The articles this one links to most, weighted towards the introduction.

Print/export
  • Printable version
In other projects
  • Wikidata item
Created
4 Apr 2004
History
252 edits
164 contributors
No edits in the last 30 days
Last edited
24 Sept 2026

252 revisions in total · 164 contributors

  1. 24 Sept 2026, 18:41 UTCComp.archNo edit summary+24diff
  2. 28 Jul 2026, 16:02 UTCKvnggrammar−1diff
  3. 30 Jun 2026, 00:36 UTCPrivatechefmhyperlinked 'operating system'+4diff
  4. 21 Mar 2026, 14:35 UTCKvngce for clarity and grammar+3diff
  5. 21 Feb 2026, 01:41 UTCTemporary accountTypo0diff
  6. 4 Jan 2026, 17:29 UTCKvngmgramar+6diff
  7. 7 Dec 2025, 22:52 UTCPeaceraymRollback edit(s) by ~2025-38815-57 (talk): test edits (RW 16.1)−3,304diff
  8. 7 Dec 2025, 16:24 UTCTemporary accountrevertedNo edit summary+3,304diff

View full revision history

Created
4 Apr 2004
History
252 edits
164 contributors
No edits in the last 30 days
Last edited
24 Sept 2026

Go deeper: linked from this article

  • Listed under See also

    Protection ring

    Layer of protection in computer systems

    In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults (by improving fault tolerance) and malicious behavior (by providing computer security).

    12 min readGo deeper
  • Listed under See also

    Software engineering

    Engineering approach to software development

    Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining software applications.

    22 min readGo deeper
  • Listed under See also

    Compiler

    Software that translates code from one programming language to another

    In computing, a compiler is software that translates computer code written in one programming language (the source language) into another language (the target language).

    25 min readGo deeper
  • Linked from the introduction

    Interoperability

    Ability of systems to work with each other

    Interoperability is a characteristic of a product or system to work with other products or systems.

    17 min readGo deeper
  • Listed under See also

    Operating system

    Software that manages computer hardware resources

    An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs.

    26 min readGo deeper
  • Linked from the introduction

    OSI model

    Reference model for network communication

    The Open Systems Interconnection (OSI) model is a reference model published in 1984 by the International Organization for Standardization (ISO) that "provides a common basis for the coordination of…

    22 min readGo deeper
  • Linked from the introduction

    Computing

    Activity involving calculations or computing machinery

    Computing is any goal-oriented activity that requires, benefits from, or creates computing machinery.

    19 min readGo deeper
  • Linked from the introduction

    Algorithm

    Sequence of operations for a task

    In mathematics and computer science, an algorithm is a finite sequence of mathematically rigorous instructions, typically used to solve a class of specific problems or to perform a computation.

    25 min readGo deeper
  • Linked from the introduction

    Communication protocol

    System for exchanging messages between computing systems

    A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information.

    24 min readGo deeper
  • Listed under See also

    API

    Connection between computers or programs

    An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software.

    18 min readGo deeper
  • Listed under See also

    Application binary interface

    Interface to software defined in terms of in-process, machine code access

    An application binary interface (ABI) is an interface exposed by software that is defined for in-process machine code access. Often, the exposing software is a library, and the consumer is a program.

    6 min readGo deeper
  • Linked from the introduction · Recommended 1 time

    Separation of concerns

    Design principle for computer programming

    Separation of concerns (SoC) is a design principle in computer science and software engineering; it holds that a complex problem should be divided into distinct concerns — aspects or issues — that…

    5 min readGo deeper

Adjacent: shared categories and similar text

  • Linked in “Computer architecture”

    Programmable logic device

    Reconfigurable digital circuit element

    A programmable logic device (PLD) is an electronic component used to build reconfigurable digital circuits.

    8 min readGo deeper
  • Linked in “Graphics”

    Cathode ray tube

    Vacuum tube used to display images

    A cathode ray tube (CRT) is a vacuum tube containing one or more electron guns, which emit electron beams, which are directed and controlled to display images on a phosphorescent screen.

    98 min readGo deeper