Skip to main content

On abstraction and the expressive power of programming languages

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 526))

Abstract

We present a tentative theory of programming language expressiveness based on reductions (language translations) that preserve observational equivalence. These are called “abstraction-preserving” because of a connection with a definition of “abstraction” or “information-hiding” mechanism. If there is an abstraction-preserving reduction from one language to another, then essentially every function on natural numbers that is definable in the first is also definable in the second. Moreover, regardless of the set of first-order functions definable in either language, no programming language with an abstraction mechanism can be reduced to a language without. Since Lisp with user-defined special forms does not have an abstraction mechanism, it is therefore not “universal” in this theory, in spite of the ability to define every partial recursive function on the natural numbers. Several examples and counter-examples to abstraction-preserving reductions are given. We do not know whether there is a natural universal language with respect to abstraction-preserving reduction.

Supported in part by an NSF PYI Award, matching funds from Digital Equipment Corporation, the Powell Foundation, and Xerox Corporation; NSF grant CCR-8814921 and the Wallace F. and Lucille M. Davis Faculty Scholarship.

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.

    Article  Google Scholar 

  2. M. Felleisen. On the expressive power of programming languages. In Proc. European Symp. on Programming, pages 134–151. Springer-Verlag LNCS 432, 1990.

    Google Scholar 

  3. S. Greibach. Theory of Program Structures: Schemes, Semantics, Verification, volume 36 of Lecture Notes in Computer Science. Springer-Verlag, 1975.

    Google Scholar 

  4. S. Kleene. Introduction to Metamathematics. Van Nostrand, New York, 1952.

    Google Scholar 

  5. D. MacQueen. Using dependent types to express modular structure. In Proc. 13-th ACM Symp. on Principles of Programming Languages, pages 277–286, 1986.

    Google Scholar 

  6. P. Martin-Löf. Intuitionistic Type Theory. Bibliopolis, Napoli, 1984.

    Google Scholar 

  7. R. Milner. Fully abstract models of typed lambda calculi. Theoretical Computer Science, 4(1), 1977.

    Google Scholar 

  8. J. Mitchell. Representation independence and data abstraction. In Proc. 13-th ACM Symp. on Principles of Programming Languages, pages 263–276, January 1986.

    Google Scholar 

  9. J. Mitchell. Type systems for programming languages. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science, Volume B, pages 365–458. North-Holland, 1990.

    Google Scholar 

  10. J. Mitchell and R. Harper. The essence of ML. In Proc. 15-th ACM Symp. on Principles of Programming Languages, pages 28–46, January 1988.

    Google Scholar 

  11. J. Mitchell and G. Plotkin. Abstract types have existential types. ACM Trans. on Programming Languages and Systems, 10(3):470–502, 1988. Preliminary version appeared in Proc. 12-th ACM Symp. on Principles of Programming Languages, 1985.

    Google Scholar 

  12. K. Mulmuley. Full abstraction and semantic equivalence. The MIT Press, 1987.

    Google Scholar 

  13. M. Paterson and C. Hewitt. Comparative schematology. In Proj. MAC Conf. on Concurrent Systems and Parallel Computation. MIT, 1970.

    Google Scholar 

  14. G. Plotkin. LCF considered as a programming language. Theoretical Computer Science, 5:223–255, 1977.

    Article  Google Scholar 

  15. J. Reynolds. Types, abstraction, and parametric polymorphism. In Information Processing '83, pages 513–523, Amsterdam, 1983. North-Holland.

    Google Scholar 

  16. J. Riecke. Fully abstract translations between functional languages. In Proc. 17-th ACM Symp. on Principles of Programming Languages, pages 245–254, January 1990.

    Google Scholar 

  17. R. Statman. Logical relations and the typed lambda calculus. Information and Control, 65:85–97, 1985.

    Google Scholar 

  18. A. Stoughton. Fully Abstract Models of Programming Languages. Pitman/John Wiley and Sons, 1988.

    Google Scholar 

  19. P. Winston and B. Horn. Lisp. Addison-Wesley, 1981.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Takayasu Ito Albert R. Meyer

Rights and permissions

Reprints and permissions

Copyright information

© 1991 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Mitchell, J.C. (1991). On abstraction and the expressive power of programming languages. In: Ito, T., Meyer, A.R. (eds) Theoretical Aspects of Computer Software. TACS 1991. Lecture Notes in Computer Science, vol 526. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-54415-1_51

Download citation

  • DOI: https://doi.org/10.1007/3-540-54415-1_51

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-54415-9

  • Online ISBN: 978-3-540-47617-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics