Parameterized Programming
- 1 September 1984
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. SE-10 (5) , 528-543
- https://doi.org/10.1109/tse.1984.5010277
Abstract
Parameterized programming is a powerful technique for the reliable reuse of software. In this technique, modules are parameterized over very general interfaces that describe what properties of an environment are required for the module to work correctly. Reusability is enhanced by the flexibility of the parameterization mechanism proposed here. Reliability is further enhanced by permitting interface requirements to include more than purely syntactic information. This paper introduces three new ideas that seem especially useful in supporting parameterized programming: 1) theories, which declare global properties of program modules and interfaces; 2) views, which connect theories with program modules in an elegant way; and 3) module expressions, a kind of general structured program transformation which produces new modules by modifying and combining existing modules. Although these ideas are illustrated with some simple examples in the OBJ programming language, they should also be taken as proposals for an Ada1 library system, for adding modules to Prolog, and as considerations for future language design efforts. OBJ is an ultra-high level programming language, based upon rewrite rules, that incorporates these ideas, and many others from modern programming methodology.Keywords
This publication has 14 references indexed in Scilit:
- A theory of type polymorphism in programmingPublished by Elsevier ,2003
- Refutational theorem proving using term-rewriting systemsArtificial Intelligence, 1985
- Rapid prototypingACM SIGSOFT Software Engineering Notes, 1982
- Programming with EquationsACM Transactions on Programming Languages and Systems, 1982
- Algebras, Theories and Freeness: An Introduction for Computer ScientistsPublished by Springer Nature ,1982
- Confluent Reductions: Abstract Properties and Applications to Term Rewriting SystemsJournal of the ACM, 1980
- Abstract data types and software validationCommunications of the ACM, 1978
- Can programming be liberated from the von Neumann style?Communications of the ACM, 1978
- The Semantics of Predicate Logic as a Programming LanguageJournal of the ACM, 1976
- A technique for software module specification with examplesCommunications of the ACM, 1972