Skip to main content

Concurrency Among Strangers

Programming in E as Plan Coordination

  • Conference paper
Trustworthy Global Computing (TGC 2005)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 3705))

Included in the following conference series:

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 .

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Amir, Y.: Replication Using Group Communication Over a Partitioned Network. PhD thesis (1995)

    Google Scholar 

  2. Bejar, A.: The Electric Communities distributed garbage collector (1996), http://www.crockford.com/ec/dgc.html

  3. 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)

    Chapter  Google Scholar 

  4. 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)

    Chapter  Google Scholar 

  5. 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)

    Chapter  Google Scholar 

  6. Boehm, H.-J.: Threads cannot be implemented as a library. SIGPLAN Not. 40(6), 261–268 (2005)

    Article  Google Scholar 

  7. Chandy, K.M., Lamport, L.: Distributed snapshots: determining global states of distributed systems. ACM Trans. Comput. Syst. 3(1), 63–75 (1985)

    Article  Google Scholar 

  8. Castro, M., Liskov, B.: Practical byzantine fault tolerance and proactive recovery. ACM Trans. Comput. Syst. 20(4), 398–461 (2002)

    Article  Google Scholar 

  9. Close, T.: Waterken YURL (2004), http://www.waterken.com/dev/YURL/httpsy/

  10. Close, T.: web-calculus (2004), http://www.waterken.com/dev/Web/

  11. 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)

    Google Scholar 

  12. Donnelley, J.: A Distributed Capability Computing System (1976)

    Google Scholar 

  13. Englander, R.: Developing Java Beans. O’Reilly & Associates, Inc., 981 Chestnut Street, Newton, MA 02164, USA (1997)

    Google Scholar 

  14. Fielding, R.T.: Architectural styles and the design of network-based software architectures. PhD thesis, Chair-Richard N. Taylor (2000)

    Google Scholar 

  15. Gamma, E., Helm, R., Johnon, R., Vlissides, J.: Design Patterns, elements of reusable object-oriented software. Addison-Wesley, Reading (1994)

    Google Scholar 

  16. Goldberg, A., Kay, A.C.: Smalltalk-72 instruction manual, Xerox Palo Alto Research Center (March 1976)

    Google Scholar 

  17. Goldberg, A., Robson, D.: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading (1983)

    MATH  Google Scholar 

  18. Hardy, N.: KeyKOS architecture. SIGOPS Oper. Syst. Rev. 19(4), 8–25 (1985)

    Article  MathSciNet  Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. Hoare, C.A.R.: Record handling, in Algol Bulletin 21.3.6 (1965)

    Google Scholar 

  22. Hoare, C.A.R.: Monitors: an operating system structuring concept. Commun. ACM 17(10), 549–557 (1974)

    Article  MATH  Google Scholar 

  23. Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666–677 (1978)

    Article  MATH  MathSciNet  Google Scholar 

  24. IBM Corporation. IBM System 360 Principles of Operation. IBM Corporation, San Jose, CA, USA, 8th edn. (1968)

    Google Scholar 

  25. Kay, A.C.: The early history of Smalltalk. SIGPLAN not. 28(3), 69–95 (1993)

    Article  Google Scholar 

  26. Kay, A.: Prototypes vs classes (1998), http://lists.squeakfoundation.org/pipermail/-squeak-dev/1998-October/017019.html

  27. 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)

    Google Scholar 

  28. Lamport, L.: The part-time parliament. ACM Trans. Comput. Syst. 16(2), 133–169 (1998)

    Article  Google Scholar 

  29. Lefkowitz, G.: Generalization of deferred execution in Python, http://python.org/pycon/papers/deferex/

  30. 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)

    Chapter  Google Scholar 

  31. 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)

    Google Scholar 

  32. Miller, M.S.: Transcript of talk: The promise system (1992), http://sunless-sea.net/Transcripts/promise.html

  33. 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)

    Chapter  Google Scholar 

  34. Miller, M.S., Shapiro, J.S.: Paradigm Regained: Abstraction mechanisms for access control. In: ASIAN, pp. 224–242 (2003)

    Google Scholar 

  35. 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)

    Google Scholar 

  36. Miller, M.S., Yee, K.-P., Shapiro, J.: Capability Myths Demolished (2003)

    Google Scholar 

  37. Babaoğlu, Ö., Davoli, R., Montresor, A., Segala, R.: System support for partition-aware network applications. SIGOPS Oper. Syst. Rev. 32(1), 41–56 (1998)

    Article  Google Scholar 

  38. Reed, D.P.: Naming and synchronization in a decentralized computer system, January 01 (1978)

    Google Scholar 

  39. Reid, K.: E on Common Lisp (2005), http://homepage.mac.com/kpreid/elang/e-on-cl/

  40. Saraswat, V.A.: Concurrent Constraint Programming. MIT Press, Cambridge (1993)

    Google Scholar 

  41. Shapiro, E.: A subset of Concurrent Prolog and its interpreter. Technical Report TR-003, Institute for New Generation Computer Technology (ICOT) (January 1983)

    Google Scholar 

  42. 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)

    Google Scholar 

  43. 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)

    Google Scholar 

  44. 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)

    Article  MATH  MathSciNet  Google Scholar 

  45. Saltzer, J.H., Schroeder, M.D.: The protection of information in computer system. Proceedings of the IEEE 63(9), 1278–1308 (1975)

    Article  Google Scholar 

  46. Shroff, P., Smith, S.F.: Type inference for first-class messages with match-functions (2004)

    Google Scholar 

  47. 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)

    Chapter  Google Scholar 

  48. Shapiro, E.Y., Takeuchi, A.: Object oriented programming in concurrent prolog. New Generation Comput. 1(1), 25–48 (1983)

    Article  Google Scholar 

  49. Stiegler, M.: The E language in a walnut (2004), http://www.skyhunter.com/marcs/ewalnut.html

  50. 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)

    Chapter  Google Scholar 

  51. 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

  52. Tulloh, B., Miller, M.S.: Institutions as abstraction boundaries. In: High, J. (ed.) Social Learning: Essays in Honor of Don Lavoie (2002)

    Google Scholar 

  53. 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

  54. 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)

    Google Scholar 

  55. von Hayek, F.: The uses of knowledge in society. American Economic Review 35, 519–530 (1945)

    Google Scholar 

  56. Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)

    Google Scholar 

  57. Bryce “Zooko” Wilcox-O’Hearn. Deadlock-free (2001), http://www.eros-os.org/pipermail/e-lang/2001-July/005410.html

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics