Topic: abstraction in programming

topics > computer science > programming > Group: goals for a programming system

data value
program representation
requirement specification

abstraction in programming language
aspect-oriented programming
decomposition of a system into levels
program module as encapsulation
formal methods and languages
handling complexity
hierarchical structures
information hiding
localized understanding
machine independent programming
object-oriented classes
reusable programming
symbolic manipulation of formulas
symbolic representation
transformation of programs
vivid representation of programs
virtual machine
what is a number


An abstraction is the substitution of an ideal form in place of something. It could be the substitution of a variable for a value, a parameter for a variable, a function call for a function. These allow recurring patterns to be stated once and used many times. Abstract forms are recombined by recursive embedding, parameterization, and type declaration. Two important areas are (Topic: value as an abstraction) and (Topic: abstract data type). (cbb 1/90)
Subtopic: importance of abstraction up

Quote: raising the level of programming should be the single most important goal of a language. It has a large effect on productivity
Quote: programming languages deal with abstract objects, contrary to the conventional view that programs are symbol strings plus rules for manipulating these strings; the later yields a macrogenerator without regard to semantics [»straC8_1967]

Subtopic: abstraction as simulation up

Quote: meaningful tasks within the domain of the user's interest should be expressible by a line or two of code in the user's very first program [»eiseM4_1995]
Quote: instead of abstracting physical processes into mathematics, simulate the process with a model [»nygaK10_1983, OK]
Quote: abstraction was successful in Simula because started with simulating the real world [»nygaK10_1983]
QuoteRef: nygaK10_1983 ;;cbb10/25/83 Nygaard helped to invent abstraction in programming field.

Subtopic: abstraction as transformation up

Quote: Codd's relational algebra is like an algebra of punched cards; each card is a record; each step an operator, closed under composition; good abstraction [»grayJ6_2003]

Subtopic: abstraction as compositionality up

Quote: decomposition creates structure while abstraction suppresses detail; data abstraction decomposes a system into domain-specific types that remain relevant over the lifetime of a program
Quote: operational semantics requires execution sequence; must have compositionality or definitions become ad hoc [»degaP6_2001]
Quote: Smalltalk: everything we can describe can be represented by the recursive composition of behavioral building blocks [»kayA3_1993]
Quote: finite automata do not support hierarchical design or concurrency; large, real-time systems are impossible to understand [»benvA9_1991]
Quote: programs are not text; they are hierarchical compositions of computational structures; should be processed as such [»teitT9_1981]
Quote: use customization of existing parts to create software systems in Smalltalk; through composition and refinement [»goldA10_1995]
Quote: prove that each component behaves correctly in isolation when its environment is correct; then proof rule for composition under safety and liveness conditions [»abadM1_1993]
Quote: input and output are basic programming primitives and parallel composition is a fundamental program structure method; use guarded commands [»hoarCA8_1978]
Quote: reuse is difficult because of superstructure to support composition; large units have largest benefit but too specialized; library design is time-consuming; uneven quality control [»boweJP4_1995]
Quote: C++ Standard Template Library is good example of generic programming; data containers for user types; allows composition; compile time conversion of abstract type to concrete structures [»dehnJC4_1998]
Quote: in function-oriented programming, a process is a composition of functions on an input producing an output [»nygaK10_1986]
Quote: combine Petri net theory with a compositional view of systems; like combining Turing machines with lambda-calculus [»milnR1_1993]
Quote: structural operational semantics recovers compositionality through the syntactic structure of the language [»degaP6_2001]
Quote: defines D and D' control structures: basic actions, composition, conditionals, repetitions [»ledgHF11_1975, OK]
Quote: use combinators to find the value of a financial contract; compositional, abstract valuation semantics [»joneSP9_2000]
Quote: Piccola is a composition language for expressing configuration, connectors, coordination, and glue abstractions [»acheF9_2000]

Subtopic: decomposition by type up

Note: a type Turing machine selects transition table by type; allows decomposition [»cbb_1990, OK]

Subtopic: abstraction as language up

Quote: the alphabet (events) for an object simplifies its behavior; e.g., ignore emptying the coin box of a vending machine [»hoarCA_1985]
Quote: design patterns provide a common vocabulary for designers to communicate, document, and explore design alternatives [»gammE7_1993]
Quote: the names/identifiers in a programming language are part of language itself; not manipulated by it [»straC3_1973]
Quote: definitional text should be a line of text, maybe two; encourages effective abstraction [»lingRC6_1975]
Quote: a programming language specifies actions to be executed, and supplies concepts that help with programming [»stroB_1991]
Quote: a programming language should be close to the machine, like C, and close to the problem, like C++

Subtopic: abstraction as naming up

Quote: the central idea of Thesa is abstraction, i.e., the ability to refer to anything by name [»cbb_1973, OK]
Quote: use labels to avoid knowledge of absolute position within a list [»maclBJ_1987]
Quote: an Improv formula gives a calculation and destination for results; may define multiple cells, e.g. Total=Quantity*Cost calculates all Total's [»yageT10_1990]
Quote: direct manipulation needs easily reproducible symbols for entities; text is best, that's its purpose [»diseAA_1986]
Quote: a function is a named part of a program that can be invoked as needed [»stroB_1991]

Subtopic: abstraction as number up

Note: the primitive concept is the natural numbers, everything else is convention [»cbb_1990, OK]

Subtopic: abstraction as reference up

Quote: within computer memory, only reference and contiguity can express direct relationships [»taivA9_1996]
Quote: Mach's primitive functions allow more complex services and resources to be represented as references to objects

Subtopic: abstraction as reuse up

Quote: abstraction is the essential feature of reuse; otherwise can't tell what an artifact does or how to use it [»krueCW6_1992]
Quote: an abstraction for software is a succinct description without unimportant details [»krueCW6_1992]
Quote: a reuse technology must provide natural, succinct, high-level abstractions that describe artifacts by what they do [»krueCW6_1992]

Subtopic: abstraction as levels up

Quote: programming is achieved by working up from simple requirements to more complex ones; e.g., Fourier analysis via cosine calculations [»turiA3_1951]
Quote: it is better to split up functions into smaller pieces which may be useful for other purposes; abstraction [»wileDS11_1973, OK]
Quote: eliminating redundancies and writing at higher levels of abstraction improved programmer performance [»gibsVR3_1989]
Quote: need intermediate levels between a program's execution and an instruction's execution; about a 10^10 ratio; bricks to walls is maybe 10^3
Quote: have ten orders of magnitude between program execution in hours and instruction execution in a microsecond; must have intermediate levels [»dijkEW10_1972]
Quote: a programmer must bridge a 10^9 ratio in time and space with a single technology; much deeper conceptual hierarchy than ever before [»dijkEW12_1989]
Quote: a programming language should bridge the gap between ideas and computational primitives [»stroB_1994]

Subtopic: physical vs. logical up

Quote: distinguish physical, Clearinghouse servers from logical domain and organizational clearinghouses [»oppeDC7_1983]
Quote: representation abstraction separates logical definition from physical implementation; hides information about a module [»taivA4_1993]
Quote: secure DNS resolver in 10 lines of code; easier to understand than BIND's security policy [»jimT5_2000]

Subtopic: hardware abstraction up

Quote: C-- is an abstraction of computation (expressions), control flow (if), memory (addressing), registers (variables), and procedures; an intermediate language [»joneSP9_1999]

Subtopic: representation vs. abstraction up

Quote: use toggle switches to display Sketchpad's abstractions; e.g., constraint is a circle and code letter with four arms to the constrained variables [»suthIE5_1963]
Quote: with a programming language, deal with mathematical integers instead of bit-patterns and addresses [»straC3_1973]
Quote: real numbers are unrepresentable ideals which are approximated in a computer [»wegnP10_1986, OK]
Quote: commitment of representation decisions is the inverse of abstraction; program derivation is a sequence of commitments [»scheWL9_1983]

Subtopic: relational database as abstraction up

Quote: duplicate rows do not represent distinct objects; a fact is a fact; avoid redundancy [»coddEF_1990]
Quote: domains are the glue that holds a relational database together; shared descriptions; domain integrity, operators, and features
Quote: the results of a database command must be independent of the database organization and access methods [»coddEF_1990]

Subtopic: structured programming as abstraction up

Quote: principles of structuring -- transparency of meaning and purpose, recursive application, narrow interface, manifestness of structure [»hoarCA_1974]

Subtopic: frame as abstraction up

Quote: Piccola abstractions transform a form into another form within an explicit client and server context
Quote: a new situation invokes a frame from memory; includes expectations and assumptions; modify as needed [»winoT_1986]
Quote: frame is a formalization of same-as-except since it accommodates variations [»bassPG7_1987]

Subtopic: problems with abstraction up

Quote: advice on programming, make a plan; a baffling piece of advice that is independent of rules [»turiA3_1951]
Quote: most specifications require verbal reinforcement to resolve ambiguities and questions [»joneTC4_1979]
Quote: current knowledge representation systems are a house of cards built on a low-level foundation with many middle layers [»bobrD1_1977]
Quote: layered abstractions increase the stack data cache footprint, TLB misses, and function call overhead; too many arguments; spectacularly deep call stacks

Related Topics up

Group: data value   (19 topics, 433 quotes)
Group: function   (12 topics, 232 quotes)
Group: program representation   (25 topics, 659 quotes)
Group: requirement specification   (11 topics, 307 quotes)

Topic: abstraction (62 items)
Topic: abstraction in programming language (47 items)
Topic: aspect-oriented programming (2 items)
Topic: decomposition of a system into levels (49 items)
Topic: program module as encapsulation (28 items)
Topic: formal methods and languages (53 items)
Topic: handling complexity (60 items)
Topic: hierarchical structures (46 items)
Topic: information hiding (50 items)
Topic: localized understanding (43 items)
Topic: machine independent programming (13 items)
Topic: object-oriented classes (67 items)
Topic: reusable programming (77 items)
Topic: simulation (35 items)
Topic: symbolic manipulation of formulas (12 items)
Topic: symbolic representation (26 items)
Topic: transformation of programs (27 items)
Topic: vivid representation of programs (22 items)
Topic: virtual machine (13 items)
Topic: what is a number
(55 items)

Updated barberCB 5/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.