"One of the great advantages of multiprocessor computers is the fact that main memory is
available to all processors on the system."
1) It's simply stupid to write software that assumes this as it won't scale to distributed
2) If we didn't have shared mutable memory, vast classes of bugs, typically concurrency
related, wouldn't exist.
3) The direction in which CPU architectures are moving makes it less and less likely that a
single unified address space and general shared mutable memory are a) likely and b) desirable.
Hence the endless rise of languages like Erlang and Haskell which aren't built, unlike, say C,
on an unachievable model of a computer.