Implementation difference between TensorFlow Variable and TensorFlow Tensor
<p>First of all, I am aware that a related question has been asked <a href="https://stackoverflow.com/questions/38556078/in-tensorflow-what-is-the-difference-between-a-variable-and-a-tensor">here</a>.</p>

<p>However, this question is about the implementation and internals. 
I was reading the paper "<a href="https://arxiv.org/pdf/1610.01178.pdf" rel="noreferrer">A Tour of TensorFlow</a>". The following two points are quoted from there:</p>

<p>1.</p>

<blockquote>
  <p>A tensor itself does not hold or store values in memory, but provides
  only an interface for retrieving the value referenced by the tensor.</p>
</blockquote>

<p>This suggests to me that a Tensor is an object that simply stores the pointer to a result of an operation and, on retrieving the result or value of the tensor, it simply dereferences that pointer.</p>

<p>2.</p>

<blockquote>
  <p>Variables can be described as persistent, mutable handles to in-memory buffers storing tensors. As such, variables are  characterized by a certain shape and a fixed type.</p>
</blockquote>

<p>At this I get confused because I thought, based on the previous point, that Tensors simply store a pointer. If they were simply pointers, they could be mutable as well.</p>

<p>To be precise these are my questions:</p>

<ol>
<li>What is the meaning of "in-memory buffers"?</li>
<li>What is the meaning of a "handle"?</li>
<li>Is my initial assumption about the internals of a tensor correct? </li>
<li>What is the essential internal implementation difference between a tensor and a variable? Why are they declared differently  and why is that difference essential to TensorFlow?</li>
</ol>