Derivatives: A Construct for Internet Programming

  • Dominic Duggan
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1686)


Derivatives are introduced to provide optimistic computation as a programming language construct. The motivation is in avoiding communication latency in wide-area distributed computing environments. A derivative represents a handle on a value that has not yet been received, where moreover the potential receiver may take assumptions about the value in order to proceed. Derivatives can therefore be seena as a generalization of futures and promises, which have also been introduced in order to deal with latency. A programming language, type system and operational semantics are provided supporting optimistic execution.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    David F. Bacon and Robert E. Strom. Optimistic parallelization of communicating sequential processes. In Symposium on Principles and Practice of Parallel Programming, 1991.Google Scholar
  2. [2]
    R. Rubenik and W. Zwanepoel. Semantics of optimistic computation. In International Conference on Distributed Computing Systems, pages 20–27, 1990.Google Scholar
  3. [3]
    Crispin Cowan and Hanan Lutfiyya. Formal semantics for expressing optimism. In Proceedings of ACM Symposium on Principles of Distributed Computing, 1995.Google Scholar
  4. [4]
    Alessandro Giacalone, Prateek Mishra, and Sanjiva Prasad. Facile: A symmetric integration of concurrent and functional programming. International Journal of Parallel Programming, 18(2):121–160, 1996CrossRefGoogle Scholar
  5. [5]
    J. Gray, P. Helland, P. O’Neil, and D. Shasha. The dangers of replication and a solution. In Proceedings of the 1996 SIGMOD Conference, 1996.Google Scholar
  6. [6]
    Robert Halstead. Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems, 7(4):501–537, 1985.zbMATHCrossRefGoogle Scholar
  7. [7]
    David Jefferson. Virtual time. ACM Transactions on Programming Languages and Systems, 7(3):404–420, 1985.CrossRefMathSciNetGoogle Scholar
  8. [8]
    A. Joseph, A. F. deLespinasse, J. A. Tauber, D. K. Gifford and F. Kaashoek. Rover: A toolkit for mobile information access. In Symposium on Operating Systems Principles, 1995.Google Scholar
  9. [9]
    Morry Katz and Daniel Weise. Continuing into the future: On the interaction of futures and first-class continuations. In Proceedings of ACM Symposium on Lisp and Functional Programming, pages 176–184. ACM Press, 1990.Google Scholar
  10. [10]
    J. J. Kistler and M. Satyanarayanan. Disconnected operation in the Coda file system. ACM Transactions on Computer Systems, 10:3–25, 1992.CrossRefGoogle Scholar
  11. [11]
    B. Liskov and L. Shrira. Promises: Linguistic support for efficient asynchronous procedure calls in distributed systems. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, 1998.Google Scholar
  12. [12]
    James S. Miller. MultiScheme: A Parallel Processing System Based on MIT Scheme. PhD thesis. MIT, 1987.Google Scholar
  13. [13]
    Luc Moreau. The semantics of Scheme with future. In Proceedings of ACM International Conference on Functional Programming, pages 146–156. ACM Press, 1996.Google Scholar
  14. [14]
    Hanne Riis Nielson and Flemming Nielson. Higher-order concurrent programs with finite communication topology. In Proceedings of ACM Symposium on Principles of Programming Languages, 84–97. ACM Press, 1994.Google Scholar
  15. [15]
    R. E. Strom and S. Yemini. Optimistic recovery in distributed systems. ACM Transactions on Computer Systems, 3(3):204–226, 1985.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Dominic Duggan
    • 1
  1. 1.Department of Computer ScienceStevans Institute of TechnologyHobokenUSA

Personalised recommendations