* Duncan Booth:
"Alf P. Steinbach" <al...@start.no> wrote:

A copyable reference is a pointer. That is, a "pointer", in e.g. the
Java sense, and in the general language independent sense, means a copyable
  reference  -- as illustrated e.g. in the Stanford computer science
101 course page I referred you to earlier, with C versus Java pointers illustrated in the concrete.

The fact that C style pointers are used internally is an detail of the CPython implementation.

Your statement seems pretty irrelevant to anything.

It's almost hilarious, quoting a single paragraph about how irrelevant the C pointer is, and responding with something like that.

Do you understand that you're restating (in the form of exemplifying) what you're quoting?


In CPython objects once created remain in the same memory location (and their id is their address). Compare that to IronPython where the objects themselves can move around in memory so they have no fixed address. Try comparing the IronPython implementation to C pointers and you'll cause a lot of confusion. e.g. someone might think the id() value is in some way related to an address.

Did you /read/ what you quoted?


Ruby implements integers without using any pointers at all: there's nothing in the Python specification which prevents a Python implementation doing the same for small integers, in fact I believe it has been tried but wasn't found to improve performance.

All theree of your points about Python are wrong; I don't know about the Ruby 
point.

First, the current Python language specification formally prevents the optimization you mention, because there's no support for binding to do anything but direct binding leaving object identities unchanged.

But in practice that's no big deal though: I can't imagine any code relying on identities of completely immutable objects.

Second, even the variant that was tried improved performance.

But it would reportedly have wreaked havoc with imperfect C code.

Third, the optimization doesn't do away with pointers. If it did then it would transform the language completely. The user's view is still one where names denote pointers.


The terminology of 'objects', 'names', 'references' describes an abstract machine. The Python runtime can implement it in any way it chooses so long as those semantics are preserved. One implementation involves 'pointers',

It seems that you're thinking of C pointers.

That's pretty dumb since

   (1) it doesn't make sense, and

   (2) it has been mentioned in almost every article in this thread, including
       my first, and including the single paragraph that *you quoted above*,
       which was only about that, that

we're not talking about C pointers  here.

Python names denote pointers by definition (of pointer).


but that word implies other baggage which is not a required part of the model.

The word itself doesn't imply other baggage, no.

It might help to *read* what you're quoting, try to follow references, so on.


Cheers & hth.,

- Alf
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to