Title A Note on Distributed Computing Author Jim Waldo and Geoff Wyant and Ann Wollrath and Sam Kendall Distibuted Systems are intrinsically different from single address space systems for four main reasons: 1) unknown latency (must take latency into account) 2) different model of memory access (no globals or shared memory) 3) concurrency 4) partial failure. In local systems, failure is almost always complete. One postulated approach to distributed programming is just designing fixed interfaces and then only using those to ensure the design, dividing these among different machines when convenient. This has the difficulties of not only being inefficient -- both programming to fixed interfaces can be slow and not "cheating" when possible leads to slower programs -- but also of being incorrect through not taking into account that objects can fail to respond even when you follow their interfaces. Waldo argues that object interfaces must explicitly expose the fact that they are being conducted over a network. He also discusses how changes to programming languages to simplify communication does not change the essential problem. He notes that changes to languages have occurred several times, but none of them has, or can, eliminate the essential complexity inherent in distributed systems. He argues that latency and memory access problems could be masked, but the problems of concurrency and partial failure remain, and to some extent are what define distributed computing. He also argues that multithreaded programming and distributed programming are different, because there is no indeterminancy in the invocation of operations.