A class question
Bruno Desthuilliers
bruno.42.desthuilliers at wtf.websiteburo.oops.com
Mon Oct 29 12:19:18 EDT 2007
Hrvoje Niksic a écrit :
> Bruno Desthuilliers <bruno.42.desthuilliers at wtf.websiteburo.oops.com>
> writes:
>
>> The problem is that your formulation implies (to me at least) that the
>> variable is actually a kind of container for the object.
>
> I really didn't expect it to be read that way, especially since the
> sentence claims that the same instance can reside in several
> variables. If the term variable implied containment, that would not
> be possible because different variables would imply different objects.
>
> To be fair, the OP probably *did* confuse variables with containment,
> and I rot13'ed my hack to avoid unnecessarily prolonging that
> confusion. However, I don't think his confusion is a consequence of
> inaccurate terminology, but of an inaccurate mental model of Python
> objects.
I'd think it has more to do with an inaccurate mental model of Python's
variables - hence my (perhaps useless) corrections.
> When the mental model is correct, the term "variable" works
> as well as any other; when it's incorrect, using different words for
> the same thing is of little help.
This is where our POV differ. IMHO, wording and mental model have a
strong relationship - IOW, incorrect wording leads to incorrect
representation.
>>>> Python's "variables" are name=>object bindings.
>>> No reason to use quotes.
>> Yes, there's one : to mark the difference between Python-like
>> name=>object bindings and C-like labels-on-memory-address variables
>> the latter model being the most commonly known to beginners.
>
> Are you sure about the last part?
Ok, I would not bet my hand on it !-) But the (non appliable) "pass by
value"/"pass by reference" question is still asked often enough here to
be an indication.
> It seems to me that in recent times
> more Python beginners come from a Java background than from a C one.
Java does have "container" variables for primitive types, and even for
"references", Java's variables are more than names - they do hold type
informations too. Now I don't pretend to know how this is really
implemented, but AFAICT, and at least from a cognitive POV, Java's
variables model looks very close to the C/C++ model.
FWIW, I came to Python with a VB/C/Java/Pascal background, and Python
was the first language for which I needed to revise my mental model of
the "variable" concept.
> In any case, "variable" is a sufficiently general concept not to be
> tied to a specific implementation.
I'd say it's like the "type" concept : it's a general concept, but it's
not totally implementation-independant. "Type" doesn't mean exactly the
same thing in static or dynamic languages...
> That the concept of variable
> differs among programming languages is for me not reason enough to
> eschew it.
I didn't mean to imply "variable" was an inappropriate term - just that
it may have a somewhat different meaning wrt/ some others more
mainstream languages. My humble experience is that rewording the whole
concept in terms of name=>object bindings did sometime help in the past.
More information about the Python-list
mailing list