Group: data value
Group: function
Group: program representation
Group: requirement specification
Topic: abstraction
Topic: abstraction in programming language
Topic: aspect-oriented programming
Topic: decomposition of a system into levels
Topic: program module as encapsulation
Topic: formal methods and languages
Topic: handling complexity
Topic: hierarchical structures
Topic: information hiding
Topic: localized understanding
Topic: machine independent programming
Topic: object-oriented classes
Topic: reusable programming
Topic: simulation
Topic: symbolic manipulation of formulas
Topic: symbolic representation
Topic: transformation of programs
Topic: vivid representation of programs
Topic: virtual machine
Topic: what is a number
| |
Summary
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
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
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
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
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
Note: a type Turing machine selects transition table by type; allows decomposition [»cbb_1990, OK]
| Subtopic: abstraction as language
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
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
Note: the primitive concept is the natural numbers, everything else is convention [»cbb_1990, OK]
| Subtopic: abstraction as reference
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
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
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
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
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
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
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
Quote: principles of structuring -- transparency of meaning and purpose, recursive application, narrow interface, manifestness of structure [»hoarCA_1974]
| Subtopic: frame as abstraction
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
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 [»smaaB2_2006]
|
Related Topics
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)
|