The Semantic Challenge of Object-Oriented Programming
Preface Object-oriented programming is based on an informal concept of object as an entity or thing whose identity persists over time. The object concept is immediately meaningful to programmers, and has proven to be a useful and flexible organisational device in the analysis, design, and maintenance of complex systems. But though objects are attractively simple and intuitive in their initial conception, programming languages that support object-orientation are subtle and pose significant
... e significant challenges for researchers. Research on the Foundations of OOP began in the mid eighties. Many of the first inspirations came from denotation models, but it was quickly realised that existing semantic technology was not adequate to meet the demands of the object paradigm. For this reason, a number of researchers adopted a more ad-hoc (but more effective in the short term) operational and type-theoretical approach. This has resulted in significant achievements, the most visible of which are calculi and safe type systems for OOP, which simplify and deal soundly with intricate issues involving inheritance. This lead to important semantics work on polymorphism and subtyping. In the meantime there have been substantial advances in more "main-stream" semantics. Some of this has been directly relevant to or inspired by OOP, especially work on modelling subtypes and polymorphism. But there have also been substantial new advances using game semantics, func-tor categories, and process calculi. This has lead, for example, to a better understanding of local state and interaction, both of which are integral to the essence of the object concept. The purpose of this workshop was to bring researchers from the two camps together. On one hand, OOP provides a great challenge for current semantic methods, and attempting to apply them will likely bring up new problems and give new insight on the methods themselves. On the other hand, a deeper semantic analysis of object-oriented languages can potentially impact program specification, type systems, and static analysis. In addition to the talks presented at the workshop (abstracted below), there were numerous lively "corridor discussions", and a wrap-up session, where the main themes and problems were discussed. Some of the central problems or issues that repeatedly arose included the following.