Aliasing, mutable state and stable object identities are inherent in object-oriented programming. It is a well-known fact that this troika of features cause problems for practitioners, tool developers and formalists alike. Patterns for aliasing, and patterns for structuring object graphs exist, and manipulating aliases and managing these graphs or graph-like structures are among the most frequent operations in object-oriented programming. Yet, mainstream languages provide only low-level support for these operations in reading and writing of variables. The bookkeeping, making sure graph structures are preserved, temporary aliases deleted, etc. is left to the programmer.
In this talk, I will review some of my work on managing aliases in object-oriented systems, and talk about some recent efforts to unify these approaches to provide what we could call a theory and practise of structured aliasing for object-oriented programming.