ABSTRACT
Engineers in many disciplines use state machines to reason about system changes, and many object-oriented libraries require their clients to follow state machine protocols. No existing language, however, has native support for state machines, and programmers often lose productivity and introduce errors when trying to understand and follow interaction protocols. The Plaid language extends the object paradigm with explicit states and state transitions, in order to better model object state transitions. In this paper, we present Plaidcore, a core calculus for Plaid, which uses states and permissions to statically guarantee that clients use object protocols correctly.
- J. Aldrich, R. Simmons, and K. Shin. SASyLF: an educational proof assistant for language theory. In Proceedings of the 2008 international workshop on Functional and declarative programming in education, pages 31--40. ACM, 2008. Google ScholarDigital Library
- J. Aldrich, J. Sunshine, D. Saini, and Z. Sparks. Typestate-oriented programming. In Proceeding of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications, pages 1015--1022. ACM, 2009. Google ScholarDigital Library
- A. Bejleri, J. Aldrich, and K. Bierhoff. Ego: Controlling the power of simplicity. In Proceedings of the Workshop on Foundations of Object Oriented Languages (FOOL/WOOD 2006). Citeseer, 2006.Google Scholar
- K. Bierhoff and J. Aldrich. Modular typestate checking of aliased objects. In Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications, page 320. ACM, 2007. Google ScholarDigital Library
- K. Bierhoff, N. Beckman, and J. Aldrich. Practical API protocol checking with access permissions. ECOOP 2009--Object-Oriented Programming, pages 195--219. Google ScholarDigital Library
- J. Boyland. Checking interference with fractional permissions. Static Analysis, pages 1075--1075. Google ScholarDigital Library
- F. Damiani, E. Giachino, P. Giannini, N. Cameron, and S. Drossopoulou. A State Abstraction for Coordination in Java-like Languages. In Proceedings of FTfJP, 2006.Google Scholar
- R. DeLine and M. Fähndrich. Typestates for objects. ECOOP 2004--Object-Oriented Programming, pages 465--490.Google Scholar
- S. Drossopoulou, F. Damiani, M. Dezani-Ciancaglini, and P. Giannini. Fickle: Dynamic object re-classification. ECOOP 2001 Object-Oriented Programming, pages 130--149. Google ScholarDigital Library
- C. Flanagan, A. Sabry, B. Duba, and M. Felleisen. The essence of compiling with continuations. ACM SIGPLAN Notices, 28(6):237--247, 1993. Google ScholarDigital Library
- A. Kay. The early history of Smalltalk. ACM SigPlan Notices, 28:69--69, 1993. Google ScholarDigital Library
- D. Malayeri. Coding Without Your Crystal Ball: Unanticipated Object-Oriented Reuse. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, USA, 2009.Google Scholar
- R. E. Strom and S. Yemini. Typestate: A Programming Language Concept for Enhancing Software Reliability. IEEE Transactions on Software Engineering, 12(1):157--171, 1986. Google ScholarDigital Library
- J. Sunshine and J. Aldrich. Dynxml: Safely programming the dynamic web. In APLWACA '10: Proceedings of the 2010 Workshop on Analysis and Programming Languages for Web Applications and Cloud Applications. ACM, 2010. Google ScholarDigital Library
- A. Taivalsaari. Object-oriented programming with modes. Journal of Object Oriented Programming, 6:25--25, 1993.Google Scholar
- D. Ungar and R. Smith. Self: The power of simplicity. Lisp and symbolic computation, 4(3):187--205, 1991. Google ScholarDigital Library
Index Terms
- A theory of typestate-oriented programming
Recommendations
Typestate-oriented programming
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applicationsObjects model the world, and state is fundamental to a faithful modeling. Engineers use state machines to understand and reason about state transitions, but programming languages provide little support for reasoning about or implementing these state ...
Foundations of Typestate-Oriented Programming
Typestate reflects how the legal operations on imperative objects can change at runtime as their internal state changes. A typestate checker can statically ensure, for instance, that an object method is only called when the object is in a state for which ...
Gradual typestate
ECOOP'11: Proceedings of the 25th European conference on Object-oriented programmingTypestate reflects how the legal operations on imperative objects can change at runtime as their internal state changes. A typestate checker can statically ensure, for instance, that an object method is only called when the object is in a state for ...
Comments