Topic: language flexibility

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

natural language

design for change
dynamic vs. static data type
generic operations and polymorphism
grammar modification
identifying program modules
in-line machine code
language extension via macros
loosely structured data
meaning of words
non-constraining system
orthogonal extension and cartesian products
programming language design
resourceful, redundant systems for reliability
reusable programming


A language should be universal, allowing any idea to be communicated. A programming language needs to describe any kind of data, any sequence of machine operations, any user interface, and any programming chore. It must have this flexibility, while being simple enough for machine processing. High-level languages fail this criterion. They limit users to a primitive set of data types and language operations. They preemptively define many trivial decisions before a program is written. (cbb 5/80)

Flexibility must be designed for from the start. It can not be added latter; possibly because it is fundamentally in conflict with efficiency and system. Macro processors can add some flexibility. (cbb 1/90)

Subtopic: what is flexibility up

QuoteRef: gilbT_1977 ;;164 "flexibility is useful complexity
Quote: measure language effectiveness by counting the modifications needed to satisfy a user's needs and to effect change during evolution [»blumBI_1985]
Quote: a functionally rich system is not orthogonal; there are multiple ways to achieve a result
Quote: a program is a complex combination of diverse materials that must undergo continuous modification; how can they be supple [»smitDR11_1985]
Quote: language should define the essential semantics of a construct with multiple, equivalent, implementations [»shawM3_1980]

Subtopic: flexibility is key up

Quote: flexibility is a fundamental consideration of language design; it should be planned for from the start [»halpMI1_1968]
Quote: can program in Smalltalk anything that the user can do; e.g., create automatic, intelligent editors; came from Lisp [»goldA10_1995]
Quote: the naming systems for programming languages are inflexible [»backJ_1972]
Quote: a language should be able to represent any information known by the user that is useful to the compiler [»maclBJ_1987]
Quote: FORTRAN designed to express any numerical procedure [»backJW_1957]
Quote: an encyclopedic system must be enormously flexible to transform knowledge into understanding [»kochM_1967]
Quote: flexibility is a fundamental consideration of language design; it should be planned for from the start [»halpMI1_1968]

Subtopic: system clay up

Quote: a Smalltalk user should be able to rapidly change the conceptual model of a system without strong technical skills; needed for simulation [»goldA10_1995]
Quote: Hypertext is clay [»vandA7_1988]
QuoteRef: cbb_1973 ;;11/30/73 want a language which is locally definable (i.e. continuous) but no where differentiable
QuoteRef: cbb_1973 ;;7/21/79 what I really want is the ability to define arbitrary sequences of relocatable code

Subtopic: pre-emptive language design up

Quote: pre-emptive language design makes many trivial decisions before a program is even written [»shawM3_1980]
Quote: programming language designers have made unnecessary, pre-emptive decisions about the nature of various features; e.g., array implementation [»shawM3_1980]
Quote: language design, especially by committees, includes doubtful features under the argument that they can be ignored by non-users [»ritcDM7_1978c]
Quote: more efficient code if don't overspecify the language; e.g., include a pseudo-op for branch with equal case unspecified [»dewaRB1_1977]
Quote: von Neumann languages provide an immense framework and limited changeable parts [»backJ8_1978a]

Subtopic: radical change of working applications up

Quote: a radically tailorable system allows a wide range of different applications by modifying a working application; e.g., spreadsheets [»maloTW11_1992]

Subtopic: flexibility vs. efficiency up

Quote: flexibility and efficiency are fundamentally in conflict

Subtopic: flexibility and namespaces up

Quote: inflexible namespaces lead to conflicts; avoid flat namespaces requiring conventions, package conflicts, restricted scoping, static services [»acheF9_2000]

Subtopic: flexibility within a domain up

Quote: a successful, flexible manufacturing system is only flexible within its repertoire [»whitDE4_1986]
Quote: PROMIS explicitly defines options for flexible decision making [»waltPL11_1979]

Subtopic: flexibility via macros up

Quote: a macro processor adds flexibility to a base language; allows alteration, delayed binding, and extensions [»browPJ_1974]
Quote: a macro processor allows alteration of a general programming language to fit specific needs; e.g., knitting and crop-rotation [»browPJ_1974]
Quote: define macros for anything that may change; allows delayed binding for implementation of the macros [»browPJ_1974]
Quote: every aspect of a program is liable to change, but languages require details to be fixed; use macros

Subtopic: flexibility via slots up

Quote: Self emphasizes concreteness, uniformity, and flexibility: program by copy-and-modify, uniform objects and messages, flexible slot structure [»smitRB10_1995]
Quote: easy to create a new class; decentralized representation with locally defined state

Subtopic: causes of inflexibility up

Quote: data description does not support collections of data; hard to change without impacting applications [»coddEF6_1970]
Quote: avoid representational dependencies in data; e.g., ordering, indexing, and access path

Related Topics up

Group: natural language   (16 topics, 539 quotes)
Group: systems   (17 topics, 530 quotes)

Topic: design for change (76 items)
Topic: dynamic vs. static data type (24 items)
Topic: generic operations and polymorphism (67 items)
Topic: grammar modification (10 items)
Topic: identifying program modules (26 items)
Topic: in-line machine code (5 items)
Topic: language extension via macros (23 items)
Topic: loosely structured data (20 items)
Topic: meaning of words (21 items)
Topic: non-constraining system (25 items)
Topic: orthogonal extension and cartesian products (11 items)
Topic: programming language design (53 items)
Topic: resourceful, redundant systems for reliability (38 items)
Topic: reusable programming
(77 items)

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