3 ms·
The fact that so many people get this wrong yet are so sure they're right is indicative of a U/X issue. Fix the nomenclature and you'll fix the problem.
by kstenerud 9y ago
The fact that so many people get this wrong yet are so sure they're right is indicative of a U/X issue. Fix the nomenclature and you'll fix the problem.
- zzzcpan 9y agoIt's not really a UX problem as these things are not actually used. We just can't agree with each other what the nomenclature should be and it's this way precisely because there is no real use for the nomenclature.
- reikonomusha 9y agoOr it’s a reflection of a lack of rigorous training. Lots of folks like to infer and consequently assume without reading.
- gvx 9y agoThat, and I don't think there is a real consensus on the nomenclature, even in the literature. At least, I don't remember university lectures being at all clear on the issue. FWIW, I don't use pass-by-value or pass-by-reference to refer to languages like Java, Python, Lua, etc... Instead, I use "pass-by-object-identity" (aka "call-by-sharing", "call-by-object") to refer to the semantics of those languages. It avoids the association many people have between the term "by-value" and copying behaviour. Also part of the problem: many beginning and intermediate programmers don't understand the difference between rebinding and mutation. This leads to people interpreting the following snippet: def foo(a, b): a = 2 b.append(3) x = 1 y = [] foo(x, y) print(x, y) #1, [3] ... as meaning that ints are passed by value and lists by reference, while in fact both are passed by object identity, and it is the fact that a is rebound while b is mutated that made the difference.