The virtues of the shared memory and distributed memory parallel progr
amming models have been much debated. Conventionally the debate could
be reduced to programming convenience on the one hand, and high scalab
ility factors on the other. More recently the debate has become somewh
at blurred with the provision of virtual shared memory models built on
machines with physically distributed memory. The intension of such mo
dels/machines is to provide scalable shared memory, i.e. to provide bo
th programmer convenience and high scalability. In this paper, the dif
ferent models are considered from experiences gained with a number of
systems ranging from applications in both commerce and science to lang
uages and operating systems. Case studies are introduced as appropriat
e.