A name is something we use to refer
to something else. In real life, a person, place, or
thing.
Names in programming languages usually consist of
letters and digits.
Sometimes, we also think of + as a name,
particularly in languages where you can declare
user-defined operators.
Names can refer to: types, procedures, modules,
constants, variables, exceptions, classes,...
Names are also used to abstract
away from details: by writing a stack module,
naming it Stack, the programmer can forget
about the details of the implementation, and just
use the name from now on.
By binding we mean the act of
associating a name with that thing which it
names.
For example, you can say: ``From now on, I will
call this chair Chairy.'' Then, whenever you talk
about Chairy, everyone knows which chair you refer to: