2 ms·
> I don't think it's a particularly useful model for actually programming I think “everything is by reference” is a better model for programming than “you need
by pansa2 1y ago
> I don't think it's a particularly useful model for actually programming
I think “everything is by reference” is a better model for programming than “you need to learn which objects are by reference and which are by value”. As you say, the latter is the case in Go, and it’s one of the few ways the language is more complex than Python.
You could argue that in Python you still have to learn which objects are mutable and which are immutable - but if it weren’t for bad design like `+=` that wouldn’t be necessary. A object would be mutable if-and-only-if it supported mutating methods.
- zahlman 1y ago> I think “everything is by reference” is a better model for programming than “you need to learn which objects are by reference and which are by value”. The model is: everything is a reference (more accurately, has reference semantics); and is passed by assignment ("value", in older, cruder terms). > but if it weren’t for bad design like `+=` that wouldn’t be necessary. A object would be mutable if-and-only-if it supported mutating methods. `+=` is implemented by `__iadd__` where available (which is expected to be mutating) and by `__add__` as a fallback (https://stackoverflow.com/questions/2347265 https://stackoverflow.com/questions/2347265). The re-assignment of the result is necessary to make the fallback work. Reference for your "major wtf" is https://stackoverflow.com/questions/9172263 https://stackoverflow.com/questions/9172263.