On Friday, August 18, 2017 at 8:37:43 AM UTC+5:30, Steve D'Aprano wrote: > On Thu, 17 Aug 2017 11:19 pm, Rustom Mody wrote: > > > What is called ‘call-by-object’ or ‘call-by-sharing’ etc is really an > > acknowledgement of the fact that parameter passing in the OO world along > > with > > permissible mutation of data-structures is inherently leaky > > > Leaky of *what*? > > What do you think the abstraction is that is leaky? > > Call by value leaks. The abstraction is that the argument received by the > function is independent from the value you pass in. But the leak happens when > you pass an array with a billion items, and the compiler makes a copy of the > entire array, and you wonder why you run out of memory. > > Call by reference leaks. The abstraction is that the argument received by the > function is the argument you pass to the function. Not just the same, in the > sense of equal, but one-and-the-same. As in, "me myself and I" all refer to > the > same person. But the leak happens when you try to pass a literal or a constant > or the result of an expression, rather than a variable, and the compiler > says "Uh uh, you can't do that!" > > So what abstraction do you think call by object sharing is making, and in what > way does it leak?
Data Dependency — also called coupling — is generally considered to be deleterious to software quality | The presence of pointers causes complex data-dependence | relationships. Because of pointers and aliasing, it may not be possible to | identify unambiguously the variable that is actually defined (resp., used) at a | statement containing a definition (resp., use). https://www.cc.gatech.edu/~orso/papers/orso.sinha.harrold.IWPC01.pdf Python removes the frank pointers of C (like) languages It does nothing about aliasing Sharing-by-object is nothing more than the diginification of aliasing -- https://mail.python.org/mailman/listinfo/python-list