Binding has to do with giving names to things (or values) in a given well delimited context. Assignment is about storing things (or values) in some location (a variable). Another assignment can replace a previous value with a new one. Valuation consist in binding all the identifiers of a formal text with something (with a value). In mathematics these identifiers are often called variables, which causes a confusion with the concept of variable (i.e. memory storage) in computer science.
Trying to give more intuitive details
Name binding attaches a meaning to identifiers within some part (called scope) of the concerned mathematical or programming text. This meaning can indeed be seen as a value in some domain when the text is interpreted.
WhenBinding is attaching a name to some value that does not change within the scope of the name. An example is a legal documents stating that "for the purpose of this document, Mr. Brown, and the Smith family shall be called the beneficiary.
" The scope is the legal document. And everywhere in the document, the use of the word beneficiary
means Mr. Brown, and the Smith family. You can see it as a definition of a local terminology. It has to do with giving names to things. Binding is about speaking, reading or writing. It is not about executing or moving values around: that corresponds to assignment.
A variable may be seen as a chunk of memory that can contain a value,
When you have a variable, you can change the value contained in this variable
contains with an assignment. If foo
is bound to (or denotes) a variable in
the current scope, you can assign a value to foo
, i.e. to the
variable denoted by foo
, or read the value contained in that
variable. And you can change that value with a new assignment.