Group: goals for a programming system

topics > computer science > Group: programming

abstraction in programming
declarative vs. procedural representation
design for change
error safe systems
handling complexity
incremental development
language flexibility
localized understanding
machine independent programming
minimal language systems
no need for efficiency
non-constraining system
orthogonal extension and cartesian products
resourceful, redundant systems for reliability
reusable programming
software portability
spatial vs. temporal representation
understanding systems
uniform language systems
vivid representation of programs
program design
Thesa programming system

ease of learning
ease of use
extensible languages
hardware vs. software
interactive response time
open systems
program source as truth
programming language design
software components
software tools
source-rich system
symbolic representation


The main goals of a programming system are efficiency, simplicity, and reliability. Efficiency covers a broad area because of a system's many clients. Programs should be quick to design, write, execute, test, use, understand, modify, and port. Much of efficiency and reliability comes from simplicity of representation. The representation should be uniform, modular, reusable, self-documenting, and shallowly nested. Since programs simulate reality, the representation should be clearly related to reality. (cbb 12/89)
Subtopic: bugs up

Quote: programming is difficult because it is almost impossible to avoid blunders; main difficulty in using computers [»glenAE2_1953]

Subtopic: throughput vs. learning new things up

Quote: the paramount goal for users is throughput; this conflicts with learning new procedures for doing things [»carrJM_1987]
Quote: a programming language should plan for growth; start small; a pattern for defining patterns for real work [»steeGL10_1998]
Quote: small languages such as Scheme and Pascal are insufficient for today's world of graphical interfaces, mobile code, client/server, multithreaded, and multi-language [»steeGL10_1998]

Subtopic: efficient use, speed, and change up

Quote: rules for a minimalist UI -- no wasted actions, no retyping, automation, defaults; smallest actions do the most useful things; no pop-up menus, no keyboard necessary [»pikeR6_1991a]
Quote: Cedar goal of under five seconds for minor program changes; makes programming think-bound [»teitW3_1985]
QuoteRef: bateD_1976 ;;23 Hunke: minimum human effort to use, min. machine effort to perform, min effort to change, min. perturbation (robustness-even to overwrites)
Quote: users should only pay for what they use; overhead should be minimal [»maclBJ_1987]
Quote: the primary purpose of a programming language is to help the programmer [»hoarCA_1974]
Quote: C++ is a general purpose programming language for enjoyable programming by serious programmers [»stroB_1991]
Quote: a programming language must be useful to the average programmer using an average computer [»stroB_1994]
Quote: most programming is mundane; done on low-powered computers with dated operating systems and tools
Quote: in 30 years, the size of software increased less than 100x while computing power increased 1,000,000x [»holzGJ11_2002]
Quote: should a programming language be small (easy to learn) or large (easy to use)? [»steeGL10_1998]

Subtopic: understanding up

Quote: software characteristics: understand, complete, concise, portable, consistent, maintain, test, use, reliable, structured, efficient [»boehBW_1978]
Quote: Simula designed as a language for system description, understanding, and simulation [»nygaK10_1986]
Quote: a program should be abstract, structured, modular, concise, and verifiable [»chinRS3_1991]
Quote: even though software is correct and efficient, it may be difficult to understand, modify, use, and integrate [»boehBW_1976]
Quote: a programming language should bridge the gap between ideas and computational primitives [»stroB_1994]
Quote: raising the level of programming should be the single most important goal of a language. It has a large effect on productivity

Subtopic: communication up

Note: want a rich language for expressing program+data, i.e., bits; both programs and data are easy, it is the rich language that is hard [»cbb_1990, OK]
Quote: programming languages are communication media with computers; semantics should be similar [»wirtN1_1966]
Quote: Zuse envisaged a universal language for conversing with computers; Esperanto was too colloquial and Carnap's ideas were too mathematical; need something in between [»zuseK_1984]
Quote: a thought that seems primitive in our minds is not primitive in a programming language [»steeGL10_1998]

Subtopic: simplicity and reliability up

Quote: do not lose information [»cbb_1990, OK]
Quote: a system should be simple, reliable, and honest
Quote: PL360 is a simple, readable, recursive, symbolic machine language for IBM 360 computers; improves program structure and style [»wirtN1_1968]
Quote: design and development are a series of decisions; effect later decisions [»parnDL8_1971]
Quote: Tcl can define a button with a single line. The same button takes 7 lines of code in Java and 25 lines in C++/MFC [»oustJK3_1998]
Quote: it is hard for a program to guarantee uniqueness, data type consistency, and initialization [»stroB_1994]
QuoteRef: wegbB_1971 ;;255 basic ideas- extension mechanisms, sustained variability (i.e. can modify system behavior), bootstrapping, uniformity
Note: a programming language should minimize conditional code; e.g., Turing machines are all conditional [»cbb_1990, OK]

Subtopic: all of the above up

Quote: a design should be well structured, simple, efficient, adequate, flexible, practical, implementable, and standardized [»parnDL8_1985]
Quote: Dylan aimed for interactive development like Lisp or Smalltalk, while generating small, fast programs like static development environments; combine flexibility with efficiency [»dumaJ6_1995]
QuoteRef: dod12_1977 ;;40 general design criteria: generality only as needed, reliability, maintainability (read more important than write), efficiency, simplicity, implementability, machine independence, formal definition.
QuoteRef: rossDT5_1975 ;;17 goals of software engineering: modifiability, efficiency, reliability, understandability
QuoteRef: rossDT5_1975 ;;17 important principles: modular (small independent pieces) abstraction (just essential properties), hiding (making inessential information inaccessible), localization (related items in same place), uniform, complete (all cases), conformability, [p.19] hierarchical decomposition
Note: the goals of a programming system are size, speed, cycle time, and understandability

Subtopic: other goals up

Quote: include freedom from bias among the criteria used to judge a system; helps avoid injustices [»frieB7_1996]
Note: goal is a radical improvement in code generation using a publicly developed database [»cbb_1990, OK]

Group: goals for a programming system up

Topic: abstraction in programming (67 items)
Topic: declarative vs. procedural representation (54 items)
Topic: design for change (76 items)
Topic: efficiency (96 items)
Topic: error safe systems (76 items)
Topic: handling complexity (60 items)
Topic: incremental development (74 items)
Topic: language flexibility (34 items)
Topic: localized understanding (43 items)
Topic: machine independent programming (13 items)
Topic: minimal language systems (12 items)
Topic: no need for efficiency (28 items)
Topic: non-constraining system (25 items)
Topic: orthogonal extension and cartesian products (11 items)
Topic: resourceful, redundant systems for reliability (38 items)
Topic: reusable programming (77 items)
Topic: software portability (43 items)
Topic: spatial vs. temporal representation (21 items)
Topic: understanding systems (48 items)
Topic: uniform language systems (25 items)
Topic: vivid representation of programs
(22 items)

Related Topics up

Group: program design   (13 topics, 454 quotes)
Group: systems   (17 topics, 530 quotes)
Group: Thesa programming system   (11 topics, 561 quotes)

Topic: ease of learning (38 items)
Topic: ease of use (47 items)
Topic: extensible languages (71 items)
Topic: hardware vs. software (15 items)
Topic: interactive response time (32 items)
Topic: open systems (33 items)
Topic: program source as truth (17 items)
Topic: programming language design (53 items)
Topic: software components (11 items)
Topic: software tools (20 items)
Topic: source-rich system (27 items)
Topic: symbolic representation
(26 items)

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