A binding is an association between an attribute and an entity, such as
between a variable and its type or value, or between an operation and a symbol.
The time at which a binding takes place is called binding time. Binding
and binding times are prominent concepts in the semantics of programming
languages. Bindings can take place at language design time, language implementation
time, compile time, load time, link time, or run time. For example,
the asterisk symbol (*) is usually bound to the multiplication operation at
language design time. A data type, such as int in C, is bound to a range of
possible values at language implementation time. At compile time, a variable
in a Java program is bound to a particular data type. A variable may be bound
to a storage cell when the program is loaded into memory. That same binding
does not happen until run time in some cases, as with variables declared
in Java methods. A call to a library subprogram is bound to the subprogram
code at link time.