Abstraction layer

layersabstraction levellayerarchitectural layerabstractionlayeredlayer of abstractionabstract interfacelevel of abstractionabstract interfaces
In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem, allowing the separation of concerns to facilitate interoperability and platform independence.wikipedia
150 Related Articles

OSI model

OSIOSI Reference Modellayer 2
Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL and other graphics libraries.
The model partitions a communication system into abstraction layers.

Communication protocol

protocolprotocolscommunications protocol
Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL and other graphics libraries.
At the time the Internet was developed, abstraction layering had proven to be a successful design approach for both compiler and operating system design and, given the similarities between programming languages and communication protocols, the originally monolithic networking programs were decomposed into cooperating protocols.

Cross-platform software

cross-platformPlatform independentmulti-platform
In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem, allowing the separation of concerns to facilitate interoperability and platform independence.
Another approach that is used is to depend on pre-existing software that hides the differences between the platforms—called abstraction of the platform—such that the program itself is unaware of the platform it is running on. It could be said that such programs are platform agnostic.

Computer architecture

architecturearchitecturescomputer design
In a computer architecture, a computer system is usually represented as consisting of several abstraction levels such as:
Macroarchitecture: architectural layers more abstract than microarchitecture

Computer hardware

hardwarepersonal computer hardwaredevice
hardware
The progression from levels of "hardness" to "softness" in computer systems parallels a progression of layers of abstraction in computing.

Hardware abstraction

hardware abstraction layerHALHALs
Hardware abstraction
A hardware abstraction layer (HAL) is an abstraction layer, implemented in software, between the physical hardware of a computer and the software that runs on that computer.

Protection ring

kernel modering 0kernel-mode
Protection ring
This is generally hardware-enforced by some CPU architectures that provide different CPU modes at the hardware or microcode level.

Computing

computer technologycomputercomputational
In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem, allowing the separation of concerns to facilitate interoperability and platform independence.

Separation of concerns

separateSeparationcompletely separate
In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem, allowing the separation of concerns to facilitate interoperability and platform independence.

Interoperability

interoperableinteroperate interoperable
In computing, an abstraction layer or abstraction level is a way of hiding the working details of a subsystem, allowing the separation of concerns to facilitate interoperability and platform independence.

OpenGL

OpenGL 4.5OpenGL 1.3OpenGL 3.3
Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL and other graphics libraries.

Graphics library

graphics librariesgraphics APIgraphic libraries
Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL and other graphics libraries.

Computer science

computer scientistcomputer sciencescomputer scientists
In computer science, an abstraction layer is a generalization of a conceptual model or algorithm, away from any specific implementation.

Conceptual model (computer science)

conceptual modelconceptual modelingModeling
In computer science, an abstraction layer is a generalization of a conceptual model or algorithm, away from any specific implementation.

Algorithm

algorithmscomputer algorithmalgorithm design
In computer science, an abstraction layer is a generalization of a conceptual model or algorithm, away from any specific implementation.

Design pattern

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

Coupling (computer programming)

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

Fundamental theorem of software engineering

Any problem in computer science can be solved with another level of indirectionfamous aphorism
A famous aphorism of David Wheeler is "All problems in computer science can be solved by another level of indirection".

David Wheeler (computer scientist)

David WheelerDavid J. WheelerD. J. Wheeler
A famous aphorism of David Wheeler is "All problems in computer science can be solved by another level of indirection".

Butler Lampson

LampsonButler W. Lampson
It is also sometimes misattributed to Butler Lampson.

Kevlin Henney

Kevlin Henney's corollary to this is, "...except for the problem of too many layers of indirection."

VHDL

very high speed integrated circuits
A distinction can also be made from low-level programming languages like VHDL, machine language, assembly language to a compiled language, interpreter, and script language.

Machine code

machine languagenative codemachine instruction
A distinction can also be made from low-level programming languages like VHDL, machine language, assembly language to a compiled language, interpreter, and script language.

Assembly language

assemblerassemblyassembly code
A distinction can also be made from low-level programming languages like VHDL, machine language, assembly language to a compiled language, interpreter, and script language.