Re: method call on result of method call
On 6/14/2010 7:52 PM, patrol wrote:
From Wikipedia: Reference(Computer Science)
"A reference is distinct from the data itself. Typically, a reference
is the physical address of where the data is stored in memory or in
the storage device. For this reason, a reference is often called a
pointer or address, and is said to point to the data."
This seems to be saying that a reference *is* synonymous with a
pointer. They both refer/point to the memory address where the data is
located. No?
No. A reference is any kind of datum that allows you to
locate some other datum, the thing the reference refers to.
One particularly efficient type of reference, suitable for use
in a computer's memory, is an address. But that's by no means
the only possible kind of reference, nor the only kind used!
- Imagine building a linked list where all the nodes inhabit
a single array, and the links are array indices. (As it
happens, the very first linked list I ever encountered was
built this way.) The links are certainly references, yet
they are not memory addresses.
- Imagine managing a Map with smallish keys and very large
values, too large to keep all of them in memory at once.
You might very well "front" it with a Map<Key,DiskAddress>
which tells you where to find the data in external storage.
The "values" in this proxy Map are references.
- "Ah, but a DiskAddress is just an address!" I hear you cry.
Well, then, consider a Map<Key,DatabaseKey> instead, where
the DatabaseKey value locates the desired data, but only
after some amount of further work by the database.
- "http://en.wikipedia.org/wiki/Reference_%28computer_science%29"
is itself a reference: A datum that leads to another. Yet it
is certainly not a memory address!
--
Eric Sosman
esosman@ieee-dot-org.invalid