Topic: early vs. late binding

topics > Group: naming

binding of names to objects
data types are not needed
dynamic type checking
dynamic vs. static data type
environment variables
generic operations and polymorphism
just-in-time compilation
type reflection and introspection


In early binding, a logical name is assigned a physical address. In late binding, the association between logical and physical address is made on demand. Early binding is typically more efficient. Late binding allows greater flexibility.

Late binding is helpful for upgrading software in place. A new use receives the new definition, while old uses continue to use the old definition.

Progress in software often concerns late-binding. Interpreters typically use late binding. (cbb 12/00)

Subtopic: early vs. late up

Quote: use early binding for performance and late binding when early binding becomes invalid [»oppeDC7_1983]
Quote: classify parameters by likelihood of change and cost of variability; use run-time variables if low cost, system configuration variables if unlikely to change [»britKH3_1981]
Quote: instead of compile-time or run-time binding, Subtext binds immediately; changes are globally replicated with recomputation as needed [»edwaJ10_2005]
Quote: Subtext achieves functional abstraction without hiding meaning behind the delayed binding of indirect reference

Subtopic: advantages of late binding up

Quote: progress in software often concerns late-binding; e.g., index registers, behaviors instead of state/processes, portability, distributed systems [»kayAC_1996]
Quote: a user profile contains names of mail and file servers instead of addresses; allows relocation of servers [»oppeDC7_1983]
Quote: use abbreviations to indicate dialing information, allows the same phone number to be stored at every site; e.g., nyc or boston [»nowiDA8_1978]
Quote: usually implement run-time binding of data descriptor to internal representation by interpretation; used in IMS, INGRES, etc. [»baroAJ3_1982]

Subtopic: late binding for flexibility, change up

Quote: dynamic binding of names to addresses allows graceful adaptation to changes [»oppeDC7_1983]
Quote: because of Java's late binding it is easy to change methods and private variables; just need to retain old methods or their type signatures [»goslJ6_1997]
Quote: without late binding, newly defined components may not work with inherited operations; needed for incremental development [»taivA9_1996]
Quote: command languages use late binding for flexibility; typically at execution [»frasCW6_1983]

Subtopic: exception handling up

Quote: CLR exception handlers may be typed (catch on type match), filtered (catch on true evaluation), termination (always called on exception cleanup); late binding

Subtopic: advantages of early binding up

Quote: parametric polymorphism is better than dynamic approaches; errors caught at compile time; invariants expressed in types; fewer conversions, avoids run-time type checks [»kennA6_2001]

Subtopic: use constants to avoid lookups up

Quote: instead of using run-time look up of property names, SUIT uses C constants [»pausR10_1992, OK]

Related Topics up

Topic: binding of names to objects (19 items)
Topic: data types are not needed (8 items)
Topic: dynamic type checking (43 items)
Topic: dynamic vs. static data type (24 items)
Topic: environment variables (5 items)
Topic: generic operations and polymorphism (67 items)
Topic: interpreter (59 items)
Topic: just-in-time compilation (20 items)
Topic: namespace (19 items)
Topic: type reflection and introspection
(28 items)

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