Abstraction
Much of the development work in computer science consists of attempting to minimise effort by maximising the reuse of work. This is commonly done through the process of reification of abstraction. Reification consists of building frameworks, with useful building blocks which can then be reused in a variety of different instances and example applications.From a database point of view, this means setting up data structures, often relational, which closely model real world unchanging entities, thereby allowing those constant data structures to be reused whenever required.
The cost of using the abstracted reifications
is the cost of learning about them, and then the cost of modying processes around them. Generally, as time has progressed, more and more abstraction has been found to be efficient. Discussion on slashdot on the appropriateness of "frameworks" and "architectures" is worth reading. There is a feeling that too much jargon is getting in the way of doing the job correctly."Intuitiveness", error managment and implementation support
are critical components to well-developed abstractions, if we are to maximise efficiency."Intuitiveness" - how to define...
Breakthough technology with regard to abstraction, must therefore allow a type of abstraction hitherto not collected or reified, or give an extra impetus to existing abstractions, for example, Object oriented abstractions started back in the 1960s, though only in the last 10 years have become widespread.
Creating generalities out of the particular instances.
One of the key skills of a modern systems analyst is to understand the best ways to make abstractions, in order to provide efficient models of the world. An efficient model generally has the properties of being UNDERSTANDABLE, and COMPACT.
Understandability and compactness are two characteristics which are related
Three basic types of abstraction are:
Process / Procedure abstraction
Data abstraction
Object-orientation abstraction
Parody and Spoof Abstraction
Finally, abstraction can be spoofed, as in the language parody INTERCAL and C-INTERCAL which are designed to be as unreadable and uninformative as possible: "taking information hiding to the extreme".Whitespace
http://compsoc.dur.ac.uk/whitespace/index.php "...Any non whitespace characters are ignored; only spaces, tabs and newlines are considered syntax. "ACM Special Interest Group on Programming Languages - http://www.acm.org/sigplan/
Software Engineering Notes - http://www.acm.org/sigsoft/SEN/sentoc.html