Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems.... , abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time.
The following English definition of abstraction helps to understand how this term applies to Computer Science, IT and Objects - i.e. abstraction is:
Abstraction in mathematics is the process of extracting the underlying essence of a mathematical concept, removing any dependence on real world objects with which it might originally have been connected, and generalising it so that it has wider applications.... in mathematics
Mathematics
Mathematics is the study of quantity, structure, space, change, and related topics of pattern and form. Mathematicians seek out patterns whether found in numbers, space, natural science, computers, imaginary abstractions, or elsewhere.... . The mathematical technique of abstraction begins with mathematical definition
Definition
A definition is a statement of the Meaning of a word or phrase. The term to be defined is known as the definiendum . The words which define it are known as the definiens .... s; this has the fortunate effect of finessing some of the vexing philosophical issues of abstraction
Abstraction
Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose.... .
Discussion
Ask a question about 'Abstraction (computer science)'
Start a new discussion about 'Abstraction (computer science)'
Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems.... , abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time.
The following English definition of abstraction helps to understand how this term applies to Computer Science, IT and Objects - i.e. abstraction is:
a concept or idea not associated with any specific instance
Abstraction in mathematics is the process of extracting the underlying essence of a mathematical concept, removing any dependence on real world objects with which it might originally have been connected, and generalising it so that it has wider applications.... in mathematics
Mathematics
Mathematics is the study of quantity, structure, space, change, and related topics of pattern and form. Mathematicians seek out patterns whether found in numbers, space, natural science, computers, imaginary abstractions, or elsewhere.... . The mathematical technique of abstraction begins with mathematical definition
Definition
A definition is a statement of the Meaning of a word or phrase. The term to be defined is known as the definiendum . The words which define it are known as the definiens .... s; this has the fortunate effect of finessing some of the vexing philosophical issues of abstraction
Abstraction
Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose.... . For example, in both computing and in mathematics, number
Number
A number is a mathematical object used in counting and measurement. A notational symbol which represents a number is called a Numeral system, but in common usage the word number is used for both the abstract object and the symbol, as well as for the numeral for the number.... s are concepts in the programming language
Programming language
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer.... s, as founded in mathematics. Implementation details depend on the hardware and software, but this is not a restriction because the computing concept of number is still based on the mathematical concept.
Roughly speaking, abstraction can be either that of control or data. Control abstraction is the abstraction of actions while data abstraction is that of data structures (e.g. datatypes [vectors & pixels]). Control abstraction in the case of structured programming
Structured programming
Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. It is most famous for removing or reducing reliance on the GOTO Statement .... is the use of subprograms and formatted control flow
Control flow
In computer science control flow refers to the order in which the individual statement , Instruction or function calls of an imperative programming or functional programming computer program are execution or evaluated.... s to simulate desired concepts of surreal features or interactions in reality or abstract world. Data abstraction is to allow for handling data bits in meaningful manners. For example, it is the basic motivation behind datatype. Object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs.... can be seen as an attempt to abstract both data and code.
Rationale
Computing is mostly independent of the concrete world: The hardware implements a model of computation
Model of computation
In computability theory and computational complexity theory, a model of computation is the definition of the set of allowable operations used in computation and their respective costs.... that is interchangeable with others. The software is structured in architecture
Software architecture
The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them.... s to enable humans to create the enormous systems by concentration on a few issues at a time. These architectures are made of specific choices of abstractions. Greenspun's Tenth Rule
Greenspun's Tenth Rule
Greenspun's Tenth Rule of Programming is a common aphorism in computer programming and especially computer programming language circles. It states:... is an aphorism
Aphorism
The word aphorism denotes an original thought, spoken or written in a laconic and easily memorable form.The name was first used in the Aphorisms of Hippocrates.... on how such an architecture is both inevitable and complex.
A central form of abstraction in computing is the language abstraction: new artificial languages are developed to express specific aspects of a system. Modeling languages help in planning. Computer languages can be processed with a computer. An example of this abstraction process is the generational development of programming language
Programming language
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer.... s from the machine language
First-generation programming language
A first-generation programming language is a machine-level programming language.Originally, no translator was used to compile or Assembly language the first-generation language.... to the assembly language
Second-generation programming language
Second-generation programming language is a generational way to categorize assembly languages. The term was coined to provide a distinction from higher level third-generation programming languages such as COBOL and earlier first-generation programming language.... and the high-level language
Third-generation programming language
A third-generation language is a refinement of a second generation programming language. Where as a second generation language is more aimed to fix logical structure to the language, a third generation language aims to refine the usability of the language in such a way to make it more user friendly.... . Each stage can be used as a stepping stone for the next stage. The language abstraction continues for example in scripting language
Scripting language
A scripting language, script language or extension language, is a programming language that allows some control of a single or many Application software.... s and domain-specific programming language
Domain-specific programming language
In software development, a domain-specific language is a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique.... s.
Within a programming language, some features let the programmer create new abstractions. These include the subroutine
Subroutine
In computer science, a subroutine or subprogram is a portion of computer code within a larger computer program, which performs a specific task and is relatively independent of the remaining code.... , the module, and the software component. Some other abstractions such as software design patterns and architectural styles
Software architecture
The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them.... are not visible to a programming language but only in the design of a system.
Some abstractions try to limit the breadth of concepts a programmer needs by completely hiding the abstractions they in turn are built on. Joel Spolsky
Joel Spolsky
Avram Joel Spolsky is a software engineering and writer. He is the author of Joel on Software, a blog on software development targeted mainly at writers of Windows software.... has criticised these efforts by claiming that all abstractions are leaky
Leaky abstraction
A leaky abstraction is a notion applied to implementations of an abstraction. This notion indicates that specific implementation details manifest themselves in a counter-productive way, thus interfering with the abstraction.... — that they are never able to completely hide the details below; however this does not negate the usefulness of abstraction. Some abstractions are designed to interoperate with others, for example a programming language may contain a foreign function interface
Foreign function interface
A foreign function interface is a mechanism by which a program written in one programming language can call routines or make use of services written in another.... for making calls to the lower-level language.
Language features
Programming languages
Different programming languages provide different types of abstraction, depending on the applications for which the language is intended. For example:
An object-oriented programming language is one that allows or encourages, to some degree, object-oriented programming techniques such as Information hiding, Inheritance , module , and Polymorphism .... s such as C++
C++
C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features.... , Object Pascal
Object Pascal
Object Pascal refers to a branch of Object-oriented programming derivatives of Pascal , mostly known as the primary programming language of CodeGear Delphi.... , or Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java .... , the concept of abstraction is itself a declarative statement - using the keyword
Keyword (computer programming)
In computer programming, a keyword is a word or identifier that has a particular meaning to the programming language. The meaning of keywords ? and, indeed, the meaning of the notion of keyword ? differs widely from language to language.... s virtual (in C++
C++
C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features.... ) or abstract (in Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java .... ). After such a declaration, it is the responsibility of the programmer to implement a class
Class (computer science)
In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share.... to instantiate the object
Object (computer science)
In its simplest embodiment, an object is an allocated region of storage. Since programming languages use variable#Computer_programmings to access objects, the terms object and variable are often used interchangeably.... of the declaration.
In functional programming languages, it is common to find abstractions related to functions, such as lambda abstractions (making a term into a function of some variable), higher-order function
Higher-order function
In mathematics and computer science, higher-order functions or functional are function s which do at least one of the following:*take one or more functions as an input... s (parameters are functions), bracket abstraction (making a term into a function of a variable).
In computer science, Linda is a model of coordination and communication among several parallel processes operating upon objects stored in and retrieved from shared, virtual, associative memory.... abstracts the concepts of server and shared data-space to facilitate distributed programming.
Specification methods
There are various methods that have been developed to formally specify software systems. Some known methods are :
Abstract model based method (VDM, Z);
Algebraic techniques (Larch, CLEAR, OBJ, ACT ONE);
Process based techniques (LOTOS, SDL, Estelle);
Trace base techniques (SPECIAL, TAM);
Knowledge based techniques (Refine, Gist).
Specification languages
Specification languages generally rely on abstractions of one kind or another, since specifications are typically defined earlier in a project, and at a more abstract level, than an eventual implementation. The UML
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems.... specification language, for example, allows the definition of abstract classes, which are simply left abstract during the architecture and specification phase of the project.
Control abstraction
Control abstraction is one of the . Computer machines understand operations at the very low level such as moving some bits from one location of the memory to another location and producing the sum of two sequences of bits. Programming languages allow this to be done in the higher level. For example, consider this statement written in a Pascal
Pascal (programming language)
Pascal is an influential imperative programming and Procedural programming programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structure.... -like fashion:
a := (1 + 2) * 5
To a human, this is a fairly simple and obvious calculation ("one plus two is three, times five is fifteen"). However, the low-level steps necessary to carry out this evaluation, and return the value "15", and then assign that value to the variable "a", are actually quite subtle and complex. The values need to be converted to binary representation (often a much more complicated task than one would think) and the calculations decomposed (by the compiler or interpreter) into assembly instructions (again, which are much less intuitive to the programmer: operations such as shifting a binary register left, or adding the binary complement of the contents of one register to another, are simply not how humans think about the abstract arithmetical operations of addition or multiplication). Finally, assigning the resulting value of "15" to the variable labeled "a", so that "a" can be used later, involves additional 'behind-the-scenes' steps of looking up a variable's label and the resultant location in physical or virtual memory, storing the binary representation of "15" to that memory location, etc. etc.
Without control abstraction, a programmer would need to specify all the register/binary-level steps each time she simply wanted to add or multiply a couple of numbers and assign the result to a variable. This duplication of effort has two serious negative consequences: (a) it forces the programmer to constantly repeat fairly common tasks every time a similar operation is needed; and (b) it forces the programmer to program for the particular hardware and instruction set.
Structured programming
Structured programming involves the splitting of complex program tasks into smaller pieces with clear flow control and interfaces between components, with reduction of the complexity potential for side-effects.
In a simple program, this may be trying to ensure that loops have single or obvious exit points and trying, where it's most clear to do so, to have single exit points from functions and procedures.
In a larger system, it may involve breaking down complex tasks into many different modules. Consider a system handling payroll on ships and at shore offices:
The uppermost level may be a menu of typical end user operations.
Within that could be standalone executables or libraries for tasks such as signing on and off employees or printing checks.
Within each of those standalone components there could be many different source files, each containing the program code to handle a part of the problem, with only selected interfaces available to other parts of the program. A sign on program could have source files for each data entry screen and the database interface (which may itself be a standalone third party library or a statically linked set of library routines).
Either the database or the payroll application also has to initiate the process of exchanging data with between ship and shore and that data transfer task will often contain many other components.
These layers produce the effect of isolating the implementation details of one component and its assorted internal methods from the others. This concept was embraced and extended in object-oriented programming.
Data abstraction
Data abstraction is the enforcement of a clear separation between the abstract properties of a data type
Data type
A data type in programming languages is an attribute of a data which tells the computer something about the kind of data it is. This involves setting constraints on the datum, such as what values it can take and what operations may be performed upon it.... and the concrete details of its implementation. The abstract properties are those that are visible to client code that makes use of the data type--the interface to the data type--while the concrete implementation is kept entirely private, and indeed can change, for example to incorporate efficiency improvements over time. The idea is that such changes are not supposed to have any impact on client code, since they involve no difference in the abstract behaviour.
In computing, an abstract data type is a specification of a set of data and the set of operations that can be performed on the data. Such a data type is abstract in the sense that it is independent of various concrete implementations.... called lookup table, where keys are uniquely associated with values, and values may be retrieved by specifying their corresponding keys. Such a lookup table may be implemented in various ways: as a hash table
Hash table
In computer science, a hash table, or a hash map, is a data structure that associates Unique key with value .The primary operation that hash functions support efficiently is a lookup: given a key , find the corresponding value .... , a binary search tree
Binary search tree
In computer science, a binary search tree is a binary tree data structurewhich has the following properties:* Each node has a distinct value.... , or even a simple linear list. As far as client code is concerned, the abstract properties of the type are the same in each case.
Of course, this all relies on getting the details of the interface right in the first place, since any changes there can have major impacts on client code. Another way to look at this is that the interface forms a contract on agreed behaviour between the data type and client code; anything not spelled out in the contract is subject to change without notice.
Languages that implement data abstraction include Ada and Modula-2
Modula-2
Modula-2 is a computer programming language invented by Niklaus Wirth at ETH, around 1978, as a successor to his intermediate language Modula. Modula-2 was implemented in 1980 for the Lilith computer, which was commercialized in 1982 by startup company DISER as MC1 and MC2.... . Object-oriented languages are commonly claimed to offer data abstraction; however, their inheritance
Inheritance (computer science)
In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula.... concept tends to put information in the interface that more properly belongs in the implementation; thus, changes to such information ends up impacting client code, leading directly to the Fragile binary interface problem
Fragile binary interface problem
The fragile binary interface problem or FBI is a shortcoming of certain object orientation language compilers, in which internal changes to an underlying class library can cause descendant libraries or programs to cease working.... .
Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs.... theory, abstraction is the facility to define objects that represent abstract "actors" that can perform work, report on and change their state, and "communicate" with other objects in the system. The term encapsulation
Information hiding
Information hiding in computer science is the principle of hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed.... refers to the hiding of state
State (computer science)
In computer science and automata theory, a state is a unique configuration of information in a program or machine. It is a concept that occasionally extends into some forms of systems programming such as Lexical analysiss and parsers.... details, but extending the concept of data type from earlier programming languages to associate behavior most strongly with the data, and standardizing the way that different data types interact, is the beginning of abstraction. When abstraction proceeds into the operations defined, enabling objects of different types to be substituted, it is called polymorphism. When it proceeds in the opposite direction, inside the types or classes, structuring them to simplify a complex set of relationships, it is called delegation
Delegation (programming)
In object-oriented programming there are two related notions of delegation.* Most commonly, it refers to a programming language feature making use of the method lookup rules for dispatching so-called self-calls as defined by Lieberman in his 1986 paper "Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems".... or inheritance
Inheritance (computer science)
In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula.... .
Various object-oriented programming languages offer similar facilities for abstraction, all to support a general strategy of polymorphism in object-oriented programming, which includes the substitution of one type for another in the same or similar role. Although it is not as generally supported, a configuration or image or package may predetermine a great many of these binding
Binding (computer science)
In computer science, binding is the creation of a simple reference to something that is larger and more complicated and used frequently. The simple reference can be used instead of having to repeat the larger thing.... s at compile-time, link-time, or loadtime. This would leave only a minimum of such bindings to change at run-time.
Self is an Object-oriented programming computer programming programming language based on the concept of Prototype-based programming. It was used mainly as an experimental test system for language design in the 1980s and 1990s.... , for example, there is less of a class-instance distinction, more use of delegation for polymorphism
Polymorphism in object-oriented programming
In simple terms, polymorphism is the ability of one type, A, to appear as and be used like another type, B. In strongly typed languages, this usually means that type A somehow derives from type B, or type A implements an interface that represents type B.... , and individual objects and functions are abstracted more flexibly to better fit with a shared functional heritage from Lisp
Lisp programming language
Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older.... .
Another extreme is C++, which relies heavily on templates
Generic programming
Generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters and was pioneered by Ada which appeared in 1983.... and overloading
Method overloading
Method overloading is a feature found in various programming languages such as Ada , C Sharp , C++, D and Java that allows the creation of several subprograms with the same name which differ from each other in terms of the type of the input and the type of the output of the function.... and other static bindings at compile-time, which in turn has certain flexibility problems.
Although these are alternate strategies for achieving the same abstraction, they do not fundamentally alter the need to support abstract nouns in code - all programming relies on an ability to abstract verbs as functions, nouns as data structures, and either as processes.
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java .... fragment to represent some common farm "animals" to a level of abstraction suitable to model simple aspects of their hunger and feeding. It defines an Animal class to represent both the state of the animal and its functions:
public class Animal extends LivingThing
With the above definition, one could create objects of type Animal and call their methods like this:
thePig = new Animal;
theCow = new Animal;
if (thePig.isHungry)
if (theCow.isHungry)
theCow.moveTo(theBarn);
In the above example, the class Animal is an abstraction used in place of an actual animal, LivingThing is a further abstraction (in this case a generalisation) of Animal.
If a more differentiated hierarchy of animals is required to differentiate, say, those who provide milk from those who provide nothing except meat at the end of their lives, that is an intermediary level of abstraction, probably DairyAnimal (cows, goats) who would eat foods suitable to giving good milk, and Animal (pigs, steers) who would eat foods to give the best meat quality.
Such an abstraction could remove the need for the application coder to specify the type of food, so s/he could concentrate instead on the feeding schedule. The two classes could be related using inheritance
Inheritance (computer science)
In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula.... or stand alone, and varying degrees of polymorphism between the two types could be defined. These facilities tend to vary drastically between languages, but in general each can achieve anything that is possible with any of the others. A great many operation overloads, data type by data type, can have the same effect at compile-time as any degree of inheritance or other means to achieve polymorphism. The class notation is simply a coder's convenience.
Object-oriented design
Decisions regarding what to abstract and what to keep under the control of the coder are the major concern of object-oriented design and domain analysis
Domain analysis
In software engineering, domain analysis, or product line analysis, is the process of analyzing related software systems in a Application domain to find their common and variable parts.... —actually determining the relevant relationships in the real world is the concern of object-oriented analysis or legacy analysis.
In general, to determine appropriate abstraction, one must make many small decisions about scope, domain analysis, determine what other systems one must cooperate with, legacy analysis, then perform a detailed object-oriented analysis which is expressed within project time and budget constraints as an object-oriented design. In our simple example, the domain is the barnyard, the live pigs and cows and their eating habits are the legacy constraints, the detailed analysis is that coders must have the flexibility to feed the animals what is available and thus there is no reason to code the type of food into the class itself, and the design is a single simple Animal class of which pigs and cows are instances with the same functions. A decision to differentiate DairyAnimal would change the detailed analysis but the domain and legacy analysis would be unchanged—thus it is entirely under the control of the programmer, and we refer to abstraction in object-oriented programming as distinct from abstraction in domain or legacy analysis.
In theoretical computer science, formal semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation.... , formal methods
Formal methods
In computer science and software engineering, formal methods are particular kind of mathematically-based techniques for the formal specification, development and formal verification of software and hardware systems.... or abstract interpretation
Abstract interpretation
In computer science, abstract interpretation is a theory of sound approximation of the semantics of computer programs, based on monotonic functions over ordered sets, especially lattice s.... , abstraction refers to the act of considering a less accurate, but safe, definition of the observed program behaviors. For instance, one may observe only the final result of program executions instead of considering all the intermediate steps of executions. Abstraction is defined to a concrete (more precise) model of execution.
Abstraction may be exact or faithful with respect to a property if it is possible to answer a question about the property equally well on the concrete or abstract model. For instance, if we wish to know what the result of the evaluation of a mathematical expression involving only integers +, -, ×, is worth modulo
Modular arithmetic
In mathematics, modular arithmetic is a system of arithmetic for integers, where numbers "wrap around" after they reach a certain value — the modulus.... n, it is sufficient to perform all operations modulo n (a familiar form of this abstraction is casting out nines
Casting out nines
Casting out nines is a sanity check to ensure that hand computations of sums, differences, products, and quotients of integers are correct. By looking at the digital roots of the inputs and outputs, the casting-out-nines method can help one check arithmetic calculations.... ).
Abstractions, however, are not necessarily exact, but one requires that they should be sound. That is, it should be possible to get sound answers from them—even though the abstraction may simply yield a result of undecidability. For instance, we may abstract the students in a class by their minimal and maximal ages; if one asks whether a certain person belongs to that class, one may simply compare that person's age with the minimal and maximal ages; if his age lies outside the range, one may safely answer that the person does not belong to the class; if it does not, one may only answer "I don't know".
The level of abstraction included in a programming language can influence its overall usability
Usability
Usability is a term used to denote the ease with which people can employ a particular tool or other human-made object in order to achieve a particular goal.... . The Cognitive dimensions
Cognitive dimensions
Cognitive dimensions or Cognitive dimensions of notations are design principles for notation#Written_Communications, user interfaces and Programming language theory, described by researcher Thomas R.G.... framework includes the concept of abstraction gradient in a formalism. This framework allows the designer of a programming language to study the trade-offs between abstraction and other characteristics of the design, and how changes in abstraction influence the language usability.
Abstractions are useful when dealing with computer programs, because non-trivial properties of computer programs are essentially undecidable
Undecidable
Undecidable has more than one meaning:In mathematical logic:* A decision problem is called undecidable if no algorithm can decide it, such as for Alan Turing's halting problem; see also under Decidable and Undecidable problem.... (see Rice's theorem
Rice's theorem
In computability theory, Rice's theorem states that, for any non-trivial property of partial functions, there is no general and effective method to decision problem whether an algorithm computes a partial function with that property.... ). As a consequence, automatic methods for deriving information on the behavior of computer programs either have to drop termination (on some occasions, they may fail, crash or never yield out a result), soundness (they may provide false information), or precision (they may answer "I don't know" to some questions).
In computer science, abstract interpretation is a theory of sound approximation of the semantics of computer programs, based on monotonic functions over ordered sets, especially lattice s.... . Model checking
Model checking
In the field of Logic_in_computer_science, model checking refers to the following problem:Given a simplified model of a system, test automatically whether this model meets a given specification.... is generally performed on abstract versions of the studied systems.
Levels of abstraction
A common concept in computer science is levels (or, less commonly, layers) of abstraction, wherein each level represents a different model of the same information and processes, but uses a system of expression involving a unique set of objects and compositions that are applicable only to a particular domain.
Each relatively abstract, "higher" level builds on a relatively concrete, "lower" level, which tends to provide an increasingly "granular" representation. For example, gates build on electronic circuits, binary on gates, machine language on binary, programming language on machine language, applications and operating systems on programming languages. Each level is embodied, but not determined, by the level beneath it, making it a language of description that is somewhat self-contained.
Database systems
Since many users of database systems are not deeply familiar with computer data structures, database developers often hide complexity through the following levels:
Physical level: The lowest level of abstraction describes how the data is actually stored. The physical level describes complex low-level data structures in detail.
Logical level: The next higher level of abstraction describes what data are stored in the database, and what relationships exist among those data. The logical level thus describes an entire database in terms of a small number of relatively simple structures. Although implementation of the simple structures at the logical level may involve complex physical level structures, the user of the logical level does not need to be aware of this complexity. Database administrators, who must decide what information to keep in a database, use the logical level of abstraction.
View level: The highest level of abstraction describes only part of the entire database. Even though the logical level uses simpler structures, complexity remains because of the variety of information stored in a large database. Many users of a database system do not need all this information; instead, they need to access only a part of the database. The view level of abstraction exists to simplify their interaction with the system. The system may provide many views for the same database.
Design is used both as a noun and a verb. The term is often tied to the various applied arts and engineering . As a verb, "to design" refers to the process of originating and planning for a product, structure, system, or component with intention.... of different levels of abstraction can
simplify the design considerably, and
enable different role players to effectively work at various levels of abstraction.
Systems design is the process or art of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements.... and business process design
Business process modeling
Business Process Modeling in systems engineering and software engineering is the activity of process modeling of an enterprise, so that the current process may be analyzed and improved in future .... . Some design processes specifically generate designs that contain various levels of abstraction.
In computer programming, abstraction inversion is an anti-pattern arising when users of a construct need functions implemented within it but not exposed by its interface.... for an anti-pattern of one danger in abstraction
In computing, an abstract data type is a specification of a set of data and the set of operations that can be performed on the data. Such a data type is abstract in the sense that it is independent of various concrete implementations.... for an abstract description of a set of data
In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing.... for an abstract description of a computational procedure
Bracket abstraction for making a term into a function of a variable
Data modeling in software engineering is the process of creating a data model by applying formal data model descriptions using data modeling techniques.... for structuring data independent of the processes that use it
Greenspun's Tenth Rule of Programming is a common aphorism in computer programming and especially computer programming language circles. It states:... for an aphorism about an (the?) optimum point in the space of abstractions
In mathematics and computer science, higher-order functions or functional are function s which do at least one of the following:*take one or more functions as an input... for abstraction of functions as parameters
Lambda abstraction for making a term into a function of some variable
Refinement for the opposite of abstraction in computing
Structure and Interpretation of Computer Programs is a textbook published in 1985 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman.... (Second edition). The MIT Press (See )