Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Abstraction (computer science)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Rationale== {{Quote box|quote=The essence of abstraction is preserving information that is relevant in a given context, and forgetting information that is irrelevant in that context.|source=β [[John Guttag|John V. Guttag]]<ref>{{Cite book |last1=Guttag |first1=John V. |date=18 January 2013 |title=Introduction to Computation and Programming Using Python |edition=Spring 2013 |publisher=The MIT Press |location=Cambridge, Massachusetts |isbn=978-0262519632}}</ref>|width=25%}} Computing mostly operates independently of the concrete world. The hardware implements a [[model of computation]] that is interchangeable with others.<ref>{{Cite journal |last1=Floridi |first1=Luciano |date=September 2008 |title=The Method of Levels of Abstraction |url=http://link.springer.com/10.1007/s11023-008-9113-7 |journal=Minds and Machines |language=en |volume=18 |issue=3 |pages=303β329 |doi=10.1007/s11023-008-9113-7|hdl=2299/2998 |s2cid=7522925 |issn=0924-6495|hdl-access=free}}</ref> The software is structured in [[software architecture|architecture]]s to enable humans to create the enormous systems by concentrating on a few issues at a time. These architectures are made of specific choices of abstractions. [[Greenspun's tenth rule]] is an [[aphorism]] on how such an architecture is both inevitable and complex. Language abstraction is a central form of abstraction in computing: new artificial languages are developed to express specific aspects of a system. ''[[Modeling languages]]'' help in planning. ''[[Computer language]]s'' can be processed with a computer. An example of this abstraction process is the generational development of [[programming language]] from the [[first-generation programming language]] ([[machine language]]) to the [[second-generation programming language]] ([[assembly language]]) and the [[third-generation programming language]] ([[high-level programming language]]). Each stage can be used as a stepping stone for the next stage. The language abstraction continues for example in [[scripting language]]s and [[domain-specific language]]s. Within a programming language, some features let the programmer create new abstractions. These include [[subroutine]]s, [[Modular programming|modules]], [[Polymorphism (computer science)|polymorphism]], and [[software component]]s. Some other abstractions such as [[software design pattern]]s and [[software architecture#Architectural styles and patterns|architectural styles]] remain invisible to a [[Translator (computing)|translator]] and operate only in the design of a system. Some abstractions try to limit the range of concepts a programmer needs to be aware of, by completely hiding the abstractions they are built on. The software engineer and writer [[Joel Spolsky]] has criticized these efforts by claiming that all abstractions are ''[[leaky abstraction|leaky]]'' β that they can never completely hide the details below;<ref>{{cite web |url=http://www.joelonsoftware.com/articles/LeakyAbstractions.html |title=The Law of Leaky Abstractions |last1=Spolsky |first1=Joel |date=11 November 2002 |author1-link=Joel Spolsky}}</ref> however, this does not negate the usefulness of abstraction. Some abstractions are designed to inter-operate with other abstractions β for example, a programming language may contain a [[foreign function interface]] for making calls to the lower-level language.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)