I agree that it's a leap to jump from 'reference' to 'shared, mutable reference'. But it's a leap I'd make too:
Hoare's quotes reflect the time. I doubt there were good ways to work effectively with immutable references, so you have to take 'mutability' as given. Then all references might be shared + mutable. This persists in the mainstream today. 'Final' != 'immutable'.
But what else does Hoare complain about in that opening para?
* Accidentally mistaking data for references and vice-versa. I feel like that's solved in the mainstream except for some parts of C.
* References not being shared between program runs or across different running programs. I can't say I've run into this problem, but maybe solving it would allow for distributed closures in an actor environment, like in Cloud Haskell.
Hoare's quotes reflect the time. I doubt there were good ways to work effectively with immutable references, so you have to take 'mutability' as given. Then all references might be shared + mutable. This persists in the mainstream today. 'Final' != 'immutable'.
But what else does Hoare complain about in that opening para?
* Accidentally mistaking data for references and vice-versa. I feel like that's solved in the mainstream except for some parts of C.
* References not being shared between program runs or across different running programs. I can't say I've run into this problem, but maybe solving it would allow for distributed closures in an actor environment, like in Cloud Haskell.