Weird Languages Project

The Weird Languages Group has been investigating non-traditional programming languages and systems, in particular constraint-based languages and systems. Constraints are declarative statements of relations that should be maintained, for example, that a point lie at the midpoint of a line, that two views of some data remain consistent, or that a resistor in a circuit simulation obey Ohm's Law. In general, constraints are multi-directional. For example the single constraint c = a + b can be can be used to find a value for any one of the variables a, b, and c, or (in combination with other constraints) values for several of the variables. It is left up to the language's embedded constraint solver the task of keeping the constraints satisfied. We have extended the basic notion of constraints in a number of ways, in particular, by allowing collections of both required and preferential constraints. The required constraints must be satisfied; the preferential ones should be satisfied if possible, but it is not an error if they are not.

A current project is the design and implementation of Kaleidoscope, a constraint imperative programming language. Constraint imperative programming languages are hybrids: they combine standard imperative, object-oriented programming (with state and assignment), with declarative constraints. As the imperative portions of the code cause objects to change, the system will automatically keep the constraints satisfied. Applications of such languages include interactive graphics, declarative construction of user interfaces, program animation, and providing simulated laboratories for educational use, for example simulations of physics experiments or demonstrations in geometry. Underlying the constraint work is the design of new constraint satisfaction algorithms, particularly incremental ones suitable for use in interactive user interfaces.

Principal Investigator: Borning

webmaster@cs.washington.edu