Two major programming language paradigms are the imperative and declarative ones. Software engineers typically use concepts from both paradigms when designing a system, yet are forced to implement those ideas in a single-paradigm programming language. This dissertation presents an integration of specific features from the imperative and declarative paradigms in a new programming language framework: Constraint Imperative Programming. Explicit control flow and destructive assignment are taken from the imperative paradigm. Explicit, system-maintained constraints (i.e., data relations) are taken from the declarative paradigm. This dissertation claims that this integrated framework has a clean, well-defined semantics, and that languages in this framework can be implemented with reasonable efficiency. This dissertation further claims that these languages are more expressive than purely imperative or purely constraint languages, because they allow each concept to be expressed in whichever fundamental paradigm is most suitable, rather than forcing them all into a single paradigm. This dissertation includes a semantic definition of Constraint imperative Programming (CIP), a discussion of the design issues for CIP languages, and a proof-of-concept implementation: Kaleidoscope 90.
Cited By
- Lopez G, Freeman-Benson B and Borning A Implementing constraint imperative programming languages Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications, (259-271)
- Lopez G, Freeman-Benson B and Borning A (2019). Implementing constraint imperative programming languages, ACM SIGPLAN Notices, 29:10, (259-271), Online publication date: 1-Oct-1994.
- Sannella M Skyblue Proceedings of the 7th annual ACM symposium on User interface software and technology, (137-146)
Index Terms
- Constraint imperative programming
Recommendations
Definitional Interpreters for Higher-Order Programming Languages
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Definitional interpreters for higher-order programming languages
ACM '72: Proceedings of the ACM annual conference - Volume 2Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters which are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...
Implementing constraint imperative programming languages: the Kaleidoscope'93 virtual machine
OOPSLA '94: Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applicationsConstraint Imperative Programming (CIP) languages integrate declarative constraints with imperative state and destructive assignment, yielding a powerful new programming paradigm. However, CIP languages are difficult to implement efficiently due to ...