Checks and Balances: Constraint Solving without Surprises in Object-Constraint Programming Languages
Object-constraint programming systems integrate declarative constraint solving with imperative, object-oriented languages, seamlessly providing the power of both paradigms. However, experience with object-constraint systems has shown that giving too much power to the constraint solver opens up the potential for solutions that are surprising and unintended as well as for complex interactions between constraints and imperative code. On the other hand, systems that overly limit the power of the solver, for example by disallowing constraints involving mutable objects, object identity, or polymorphic message sends, run the risk of excluding the core object-oriented features of the language from the constraint part, and consequently not being able to express declaratively a large set of interesting problem solutions. In this paper we present design principles that tame the power of the constraint solver in object-constraint languages to avoid difficult corner cases and surprising solutions while retaining the key features of the approach, including constraints over mutable objects, constraints involving object identity, and constraints on the results of message sends. We present our solution concretely in the context of the Babelsberg object-constraint language framework, providing both an informal description of the resulting language and a formal semantics for a core subset of it. We validate the utility of this semantics with an executable version that allows us to run test programs and to verify that they provide the same results as existing implementations of Babelsberg in JavaScript, Ruby, and Smalltalk.
Fri 30 OctDisplayed time zone: Eastern Time (US & Canada) change
13:30 - 15:00 | 11. Programming Language DesignOOPSLA at Grand Station 1 Chair(s): Gary T. Leavens University of Central Florida | ||
13:30 22mTalk | Remote-Scope Promotion: Clarified, Rectified, and Verified OOPSLA John Wickerson Imperial College London, Mark Batty University of Cambridge, Bradford M. Beckmann Advanced Micro Devices, Inc, Alastair F. Donaldson Imperial College London DOI Media Attached | ||
13:52 22mTalk | Incremental Computation with Names OOPSLA Matthew Hammer University of Maryland, College Park, Jana Dunfield University of British Columbia, Canada, Kyle Headley University of Maryland, College Park, Nicholas Labich University of Maryland at College Park, USA, Jeffrey S. Foster University of Maryland at College Park, USA, Michael Hicks University of Maryland at College Park, USA, David Van Horn University of Maryland at College Park, USA DOI | ||
14:15 22mTalk | Checks and Balances: Constraint Solving without Surprises in Object-Constraint Programming Languages OOPSLA Tim Felgentreff HPI, Germany, Todd Millstein University of California at Los Angeles, USA, Alan Borning University of Washington, USA, Robert Hirschfeld HPI DOI | ||
14:37 22mTalk | Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections OOPSLA Link to publication |