Tuesday, January 1, 2008


In computer science, 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:
The concept is by analogy with abstraction in mathematics. The mathematical technique of abstraction begins with mathematical definitions; this has the fortunate effect of finessing some of the vexing philosophical issues of abstraction. For example, in both computing and in mathematics, numbers are concepts in the programming languages, 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. For example, control abstraction in structured programming is the use of subprograms and formatted control flows. Data abstraction is to allow for handling data bits in meaningful manners. For example, it is the basic motivation behind datatype. Object-oriented programming can be seen as an attempt to abstract both data and code.

Rationale

Language features

Main article: Programming language Programming languages

Main article: Specification language Specification languages

Main article: Control flowAbstraction (computer science) Control abstraction

Main article: Structured programming Structured programming

Main article: Abstract data type Data abstraction

Main article: Object (computer science) Object-oriented design
When discussing formal semantics of programming languages, formal methods or abstract interpretation, 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 n, it is sufficient to perform all operations modulo n (a familiar form of this abstraction is casting out nines).
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".
Abstractions are useful when dealing with computer programs, because non-trivial properties of computer programs are essentially undecidable (see Rice's theorem). 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).
Abstraction is the core concept of abstract interpretation. Model checking is generally performed on abstract versions of the studied systems.

Considerations

Main article: Abstraction layer Levels of abstraction

Main article: Database management system Database systems
The ability to provide a design of different levels of abstraction can
This can be used in both system and business process design. Some design processes specifically generate designs that contain various levels of abstraction.

simplify the design considerably, and
enable different role players to effectively work at various levels of abstraction. Abstraction (computer science) See also
This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.

Abelson, Harold, Gerald Jay Sussman with Julie Sussman. (1996) ISBN 0-262-01153-0 Structure and Interpretation of Computer Programs (Second edition). The MIT Press (See [1])
Joel Spolsky. The Law of Leaky Abstractions. 2002-11-11.

No comments: