Foundations of Object-Oriented Programming

Luca Cardelli

(joint work with Martin Abadi)

Systems Research Center

Digital Equipment Corporation

Abstract

Object-oriented languages were invented to provide an intuitive view of data and computation, by drawing an analogy between software and the physical world of objects. The detailed explanation of this intuition, however, turned out to be quite complex; there are still no standard definitions of such fundamental notions as objects, classes, and inheritance.

Much progress was made by investigating the notion of subtyping within procedural languages and their theoretical models (lambda calculi). These studies clarified the role of subtyping in object-oriented languages, but still relied on complex encodings to model object-oriented features. Recently, in joint work with Martin Abadi, I have studied more direct models of object-oriented features: object calculi.

Object calculi embody, in a minimal setting, the object-oriented model of computation, as opposed to the imperative, functional, and process models. Object calculi are based exclusively on objects and methods, not on functions or data structures. They help in classifying and explaining the features of object-oriented languages, and in designing new, more regular languages. They directly inspired my design of Obliq, an object-oriented language for network programming.


Download talk as: