Abstract
Programmers write programs, expressing plans for machines to execute. When composed so that they may cooperate, plans may instead interfere with each other in unanticipated ways. Plan coordination is the art of simultaneously enabling plans to cooperate, while avoiding hazards of destructive plan interference. For sequential computation within a single machine, object programming supports plan coordination well. For concurrent computation, this paper shows how hard it is to use locking to prevent plans from interfering without also destroying their ability to cooperate.
In Internet-scale computing, machines proceed concurrently, interact across barriers of large latencies and partial failure, and encounter each other’s misbehavior. Each dimension presents new plan coordination challenges. This paper explains how the E language addresses these joint challenges by changing only a few concepts of conventional sequential object programming. Several projects are adapting these insights to existing platforms.
An erratum to this chapter can be found at http://dx.doi.org/10.1007/11580850_20 .
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Amir, Y.: Replication Using Group Communication Over a Partitioned Network. PhD thesis (1995)
Bejar, A.: The Electric Communities distributed garbage collector (1996), http://www.crockford.com/ec/dgc.html
Hansen, P.B.: Monitors and concurrent Pascal: a personal history. In: HOPL-II: The second ACM SIGPLAN conference on History of programming languages, pp. 1–35. ACM Press, New York (1993)
Birman, K., Joseph, T.: Exploiting virtual synchrony in distributed systems. In: SOSP 1987: Proceedings of the eleventh ACM Symposium on Operating systems principles, pp. 123–138. ACM Press, New York (1987)
Bogle, P., Liskov, B.: Reducing cross domain call overhead using batched futures. In: OOPSLA 1994: Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications, pp. 341–354. ACM Press, New York (1994)
Boehm, H.-J.: Threads cannot be implemented as a library. SIGPLAN Not. 40(6), 261–268 (2005)
Chandy, K.M., Lamport, L.: Distributed snapshots: determining global states of distributed systems. ACM Trans. Comput. Syst. 3(1), 63–75 (1985)
Castro, M., Liskov, B.: Practical byzantine fault tolerance and proactive recovery. ACM Trans. Comput. Syst. 20(4), 398–461 (2002)
Close, T.: Waterken YURL (2004), http://www.waterken.com/dev/YURL/httpsy/
Close, T.: web-calculus (2004), http://www.waterken.com/dev/Web/
Dennis, J.B., Van Horn, E.C.: Programming semantics for multiprogrammed computations. Technical Report MIT/LCS/TR-23, M.I.T. Laboratory for Computer Science (1965)
Donnelley, J.: A Distributed Capability Computing System (1976)
Englander, R.: Developing Java Beans. O’Reilly & Associates, Inc., 981 Chestnut Street, Newton, MA 02164, USA (1997)
Fielding, R.T.: Architectural styles and the design of network-based software architectures. PhD thesis, Chair-Richard N. Taylor (2000)
Gamma, E., Helm, R., Johnon, R., Vlissides, J.: Design Patterns, elements of reusable object-oriented software. Addison-Wesley, Reading (1994)
Goldberg, A., Kay, A.C.: Smalltalk-72 instruction manual, Xerox Palo Alto Research Center (March 1976)
Goldberg, A., Robson, D.: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading (1983)
Hardy, N.: KeyKOS architecture. SIGOPS Oper. Syst. Rev. 19(4), 8–25 (1985)
Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: Nilsson, N.J. (ed.) Proceedings of the 3rd International Joint Conference on Artificial Intelligence, Standford, CA, August 1973, pp. 235–245. William Kaufmann, San Francisco (1973)
Hewitt, C.: The challenge of open systems: current logic programming methods may be insufficient for developing the intelligent systems of the future. BYTE 10(4), 223–242 (1985)
Hoare, C.A.R.: Record handling, in Algol Bulletin 21.3.6 (1965)
Hoare, C.A.R.: Monitors: an operating system structuring concept. Commun. ACM 17(10), 549–557 (1974)
Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666–677 (1978)
IBM Corporation. IBM System 360 Principles of Operation. IBM Corporation, San Jose, CA, USA, 8th edn. (1968)
Kay, A.C.: The early history of Smalltalk. SIGPLAN not. 28(3), 69–95 (1993)
Kay, A.: Prototypes vs classes (1998), http://lists.squeakfoundation.org/pipermail/-squeak-dev/1998-October/017019.html
Kahn, K.M., Tribble, E.D., Miller, M.S., Bobrow, D.G.: Vulcan: Logical concurrent objects. In: Research Directions in Object-Oriented Programming, pp. 75–112 (1987)
Lamport, L.: The part-time parliament. ACM Trans. Comput. Syst. 16(2), 133–169 (1998)
Lefkowitz, G.: Generalization of deferred execution in Python, http://python.org/pycon/papers/deferex/
Liskov, B., Shrira, L.: Promises: linguistic support for efficient asynchronous procedure calls in distributed systems. In: PLDI 1988: Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation, pp. 260–267. ACM Press, New York (1988)
Miller, M., Drexler, K.E.: Markets and computation: Agoric open systems. In: Huberman, B. (ed.) The Ecology of Computation, pp. 133–176. North-Holland, Amsterdam (1988)
Miller, M.S.: Transcript of talk: The promise system (1992), http://sunless-sea.net/Transcripts/promise.html
Miller, M.S., Morningstar, C., Frantz, B.: Capability-based financial instruments. In: Frankel, Y. (ed.) FC 2000. LNCS, vol. 1962, pp. 349–378. Springer, Heidelberg (2001)
Miller, M.S., Shapiro, J.S.: Paradigm Regained: Abstraction mechanisms for access control. In: ASIAN, pp. 224–242 (2003)
Miller, M.S., Tulloh, B., Shapiro, J.S.: The Structure of Authority: Why security is not a separable concern. In: MOZ, pp. 2–20 (2004)
Miller, M.S., Yee, K.-P., Shapiro, J.: Capability Myths Demolished (2003)
Babaoğlu, Ö., Davoli, R., Montresor, A., Segala, R.: System support for partition-aware network applications. SIGOPS Oper. Syst. Rev. 32(1), 41–56 (1998)
Reed, D.P.: Naming and synchronization in a decentralized computer system, January 01 (1978)
Reid, K.: E on Common Lisp (2005), http://homepage.mac.com/kpreid/elang/e-on-cl/
Saraswat, V.A.: Concurrent Constraint Programming. MIT Press, Cambridge (1993)
Shapiro, E.: A subset of Concurrent Prolog and its interpreter. Technical Report TR-003, Institute for New Generation Computer Technology (ICOT) (January 1983)
Stiegler, M., Karp, A.H., Yee, K.-P., Miller, M.S.: Polaris: Virus safe computing for Windows XP. Technical Report HPL-2004-221, Hewlett Packard Laboratories (2004)
Shapiro, E., Mierowsky, C.: Fair, biased, and self-balancing merge operators: Their specification and implementation in Concurrent Prolog. In: Shapiro, E. (ed.) Concurrent Prolog: Collected Papers, vol. I, pp. 392–413. MIT Press, London (1987)
Sussman, J., Marzullo, K.: The bancomat problem: an example of resource allocation in a partitionable asynchronous system. Theor. Comput. Sci. 291(1), 103–131 (2003)
Saltzer, J.H., Schroeder, M.D.: The protection of information in computer system. Proceedings of the IEEE 63(9), 1278–1308 (1975)
Shroff, P., Smith, S.F.: Type inference for first-class messages with match-functions (2004)
Shapiro, J.S., Smith, J.M., Farber, D.J.: EROS: a fast capability system. In: SOSP 1999: Proceedings of the seventeenth ACM symposium on Operating systems principles, pp. 170–185. ACM Press, New York (1999)
Shapiro, E.Y., Takeuchi, A.: Object oriented programming in concurrent prolog. New Generation Comput. 1(1), 25–48 (1983)
Stiegler, M.: The E language in a walnut (2004), http://www.skyhunter.com/marcs/ewalnut.html
Spiessens, F., Van Roy, P.: The oz-E project: Design guidelines for a secure multiparadigm programming language. In: Van Roy, P. (ed.) MOZ 2004. LNCS, vol. 3389, pp. 21–40. Springer, Heidelberg (2005)
Spiessens, F., Van Roy, P.: A practical formal model for safety analysis in Capability-Based systems. In: LNCS, Springer, Heidelberg (2005), Presentation available at www.info.ucl.ac.be/people/fsp/auredsysfinal.mov
Tulloh, B., Miller, M.S.: Institutions as abstraction boundaries. In: High, J. (ed.) Social Learning: Essays in Honor of Don Lavoie (2002)
Tribble, E.D., Miller, M.S., Hardy, N., Krieger, D.: Joule: Distributed application foundations. Technical Report ADd03.4P, Agorics Inc., Los Altos (December 1995), http://www.agorics.com/Library/joule.html
Tribble, E.D., Miller, M.S., Kahn, K.M., Bobrow, D.G., Abbott, C., Shapiro, E.Y.: Channels: A generalization of streams. In: ICLP, pp. 839–857 (1987)
von Hayek, F.: The uses of knowledge in society. American Economic Review 35, 519–530 (1945)
Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)
Bryce “Zooko” Wilcox-O’Hearn. Deadlock-free (2001), http://www.eros-os.org/pipermail/e-lang/2001-July/005410.html
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Miller, M.S., Tribble, E.D., Shapiro, J. (2005). Concurrency Among Strangers. In: De Nicola, R., Sangiorgi, D. (eds) Trustworthy Global Computing. TGC 2005. Lecture Notes in Computer Science, vol 3705. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11580850_12
Download citation
DOI: https://doi.org/10.1007/11580850_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-30007-6
Online ISBN: 978-3-540-31483-7
eBook Packages: Computer ScienceComputer Science (R0)