A key idea in object-oriented programming is that objects encapsulate state and interact with each other by message exchange. This perspective suggests a model of computation that is inherently concurrent (to facilitate simultaneous message exchange) and that accounts for the effect of message exchange on an object’s state (to express valid sequences of state transitions). In this paper we show that such a model of computation arises naturally from session-based communication. We introduce an object-oriented programming language that has processes as its \emph{only} objects and employs linear session types to express the protocols of message exchange and to reason about concurrency and state. Based on various examples we show that our language supports the typical patterns of object-oriented programming (e.g., encapsulation, dynamic dispatch, and subtyping) while guaranteeing session fidelity in a concurrent setting. In addition, we show that our language facilitates new forms of expression (e.g., type-directed reuse, internal choice), which are not available in current object-oriented languages. We have implemented our language in a prototype compiler.

Mon 26 Oct

Displayed time zone: Eastern Time (US & Canada) change

08:30 - 10:00
Keynote + AbstractionAGERE! at Grand Station 4
Chair(s): Elisa Gonzalez Boix Vrije Universiteit Brussel, Philipp Haller KTH Royal Institute of Technology, Alessandro Ricci University of Bologna, Carlos Varela Rensselaer Polytechnic Institute, US
08:30
50m
Talk
AGERE! Keynote: Concurrent, Distributed Thinking for First-time Programmers in StarLogo Nova
AGERE!
09:20
20m
Talk
Objects as Session-Typed Processes
AGERE!
Stephanie Balzer Carnegie Mellon University, Frank Pfenning Carnegie Mellon University
09:40
20m
Talk
Exploring AOP from an OOP Perspective
AGERE!
Rem Collier University College Dublin, Seán Russell University College Dublin, David Lillis University College Dublin