Skip to main content

Structuring Data

  • Chapter
  • First Online:
Programming Languages: Principles and Paradigms

Abstract

Each programming language contains constructs and mechanisms for structuring data. These constructs and mechanisms are formed from what is called the type system of a language. Far from being an auxiliary aspect, types represent one of the salient characteristics of a programming language and which substantially differentiate one language from another. In this chapter, we will examine type systems, discussing primitive types and the mechanisms used to define new ones. Central to our presentation will be the concept of type safety. We will then tackle the questions of type equivalence and compatibility of types, that is mechanisms which will allow us to use a value of some type in a context requiring another type. We will discuss polymorphism and overloading. We will conclude the chapter with some questions about storage management (garbage collection), which is not, strictly speaking, a topic about data types but which well complements the examination of pointers which we must undertake.

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 34.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 49.95
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. L. Cardelli. Basic polymorphic typechecking. Science of Computer Programming, 8(2):147–172, 1987. citeseer.ist.psu.edu/cardelli88basic.html.

    Article  MATH  MathSciNet  Google Scholar 

  2. L. Cardelli. Type systems. In A. B. Tucker, editor, The Computer Science and Engineering Handbook. CRC Press, Boca Raton, 1997. citeseer.ist.psu.edu/cardelli97type.html.

    Google Scholar 

  3. L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. ACM Computing Surveys, 17(4):471–522, 1985. citeseer.ist.psu.edu/cardelli85understanding.html.

    Article  Google Scholar 

  4. J. C. Cleaveland. An Introduction to Data Types. Addison-Wesley, Reading, 1986.

    Google Scholar 

  5. C. N. Fisher and R. J. LeBlanc. The implementation of run-time diagnostics in Pascal. IEEE Trans. Softw. Eng., 6(4):313–319, 1980.

    Article  Google Scholar 

  6. E. Horowitz and S. Sahni. Fundamentals of Data Structures in Pascal. Freeman, New York, 1994.

    Google Scholar 

  7. R. Jones and R. Lins. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley, New York, 1996.

    MATH  Google Scholar 

  8. D. B. Lomet. Scheme for invalidating references to freed storage. IBM Journal of Research and Development, 19(1):26–35, 1975.

    Article  Google Scholar 

  9. D. B. Lomet. Making pointers safe in system programming languages. IEEE Trans. Softw. Eng., 11(1):87–96, 1985.

    Article  Google Scholar 

  10. R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML—Revised. MIT Press, Cambridge, 1997.

    Google Scholar 

  11. J. C. Mitchell. Type Systems for Programming Languages, pages 365–458, 1990. ISBN: 0-444-88074-7.

    Google Scholar 

  12. F. Pagan. A Practical Guide to Algol 68. Wiley Series in Computing. Wiley, London, 1976.

    Google Scholar 

  13. B. Pierce. Types and Programming Languages. MIT Press, Cambridge, 2002.

    Google Scholar 

  14. D. A. Schmidt. The Structure of Typed Programming Languages. MIT Press, Cambridge, 1994.

    MATH  Google Scholar 

  15. A. van Wijngaarden, B. J. Mailloux, J. E. L. Peck, C. H. A. Koster, M. Sintzoff, C. H. Lindsey, L. G. L. T. Meertens, and R. G. Fisker. Revised report on the algorithmic language ALGOL 68. Acta Informatica, 5:1–236, 1975.

    Article  Google Scholar 

  16. P. R. Wilson. Uniprocessor garbage collection techniques. In Proc. Int. Workshop on Memory Management, LNCS, volume 637. Springer, Berlin, 1992. Extented version online ftp://ftp.cs.utexas.edu/pub/garbage/bigsurv.ps. citeseer.ist.psu.edu/wilson92uniprocessor.html.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Maurizio Gabbrielli .

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag London

About this chapter

Cite this chapter

Gabbrielli, M., Martini, S. (2010). Structuring Data. In: Programming Languages: Principles and Paradigms. Undergraduate Topics in Computer Science. Springer, London. https://doi.org/10.1007/978-1-84882-914-5_8

Download citation

  • DOI: https://doi.org/10.1007/978-1-84882-914-5_8

  • Published:

  • Publisher Name: Springer, London

  • Print ISBN: 978-1-84882-913-8

  • Online ISBN: 978-1-84882-914-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics