Variable binding: (re-) assignment, argument passing, `let`, scope

I’m not sure if you are implying anything about my education level here.

Of course not: it’s about the education level of “anyone” in that sentence.

what you believe is simply not ture. The simplest example is that if you write x = 1; x = 2; in a local scope I can guarantee you that the 1 will not appear in the compiled code.

Then you misunderstood what I believe true and what not. What I said is that at x=1, when that get’s “taken” by the computer, value 1 will be stored at some memory location. I never said that value will stay there forever, or until in the compiled code, or untill the so-called “run-time” (which I don’t have a simple picture for due to JIT) .
I only said what I said, and meant what I said! It’s that simple.
What the compiler does in your example – it still works with values 1 and 2 both stored initially in memory. That’s it.
I see the big picture, and in that big picture , the work of compiler is part of the overall work of the computer to convert my program into the final results. That work happens with memory, and cache, and registers (as you said “you name it”)

LATE EDIT (back from the future): Although the above striked portion still deserves to be criticized , I strike it now because it is, unlike most of other things I wrote in all this thread, mostly non-sense that I should have realized before writing it, even without yuyichao’s next replies. I was confused for a moment by the idea that, when you run any source code (at Repl or not), it first gets loaded in memory – so in this trivial sense, anything you write in code get’s a place in memory. Silly, of course.

NO. I said no “values” are overwritten. That’s the language semantics and the compiler has no business violating that. Registers and memories, both irrelavant, could be overwriten.

(you’re referring to x = 1; x = 2; )
This again sounds like “proof by authority” to me: because you neither explain, nor link to a reference that explains.
By overwriting memory location, you overwrite the (representation of ) a value there, and viceversa (as values are stored in memory - at some point or another).
So you again talk strictly from lang. sem. regard, while I talk about the general scheme of things.

The same object can and do live in completely different pieces of memories.

Which “same object”? I was talking about 2 ojbects for which Julia gives the same reference, say as in: a=b=[0 0]

Not sure what you are trying to say here. I’m just acknowledging that your notion of a location storing a reference is correct.

Because you’ve been saying (or at least implying) all along that memory locations are not part of Julia language semantics, and you’ve been preaching to discuss strictly only what’s part of language semantics.

By telling you to not talk/think about certain concept I’m just pointing you a shortcut that will completely avoid those wrong understandings in the first place.

Thanks, sounds good. I also like the principle of separation of concerns :+1:
Except that there’s only so much you (or anyone else) can extrapolate from your learning experience to me (or someone else).