Dick Moores wrote:
> At 04:57 AM 7/17/2007, you wrote:
>> A recent comp.lang.python thread has a good explanation of Python's
>> assignment semantics:
>> http://groups.google.com/group/comp.lang.python/browse_thread/thread/56e7d62bf66a435c/
>>  
> 
> 
> Kent,
> 
> Yes, interesting. But could you explain what you mean by "assignment 
> semantics"?  Semantics: < 
> http://dictionary.reference.com/search?q=semantics>
> I have trouble relating semantics to programming.

Semantics: The study or science of meaning in language.

In other words, what does it mean to say
   a = b
in Python?

Syntax is like spelling and grammar rules - if you understand syntax, 
you can write a program that will compile and run. But without 
understanding what the various programming constructs actually mean, you 
will have trouble writing a program that does something useful.

I think to write correct programs in any language, you must have a 
correct mental model of what the program is doing, where by 'correct' I 
mean a model that is consistent with the actual behaviour of the program.

Programmers coming from a background in C and C++ have a mental model of 
variables as containers for values. This model works in those languages, 
where variables correspond to memory locations and assignment copies a 
value from one location to another. It doesn't work in Python, where 
variables are names for values and assignment creates another name for 
the same value without copying. To write correct Python programs you 
have to have a different model for what variables are and how they 
behave. We regularly see questions on this list from people who are 
confused by assignment because they are using a faulty model.

So "what does it mean?" might be interpreted as "what is a useful model 
of this operation that allows me to understand and predict its 
behaviour?", and "assignment semantics" is a shortcut for saying "a 
useful model of assignment that allows me to understand and predict its 
behaviour."

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to