@Kartik Agaram The requirement that there be no aliasing of mutable state is definitely viable for a general purpose high level language. I'm not sure if it works for system languages, though. The idea was taken seriously back in the 1970's. It does force you to use a different style of programming (it is incompatible with OOP). Today, that original line of research has been forgotten, but the idea has been rediscovered in other contexts. Pure functional languages like Haskell have no aliasing of mutable state, since they have no mutable state. Data oriented design is a style of programming that is compatible with no cycles/no aliasing of mutable state: it's motivated by efficiency and ease of maintenance in video games. The "Out of the tarpit" paper advocated radical changes to the way we design software, to eliminate incidental complexity, and it advocates putting all of your state into what is effectively a relational database, with hierarchical data, no cycles, no aliasing. If we want the future of coding to have less incidental complexity, then we need to look beyond the OOP style of programming.