Design patterns are distilled from many real systems to catalog common programming practice. We have analyzed several published design patterns looking for patterns of working around constraints of the implementation programming language. Some object-oriented design patterns are distorted or overly complicated because of the lack of supporting language constructs or mechanisms. We lay a groundwork of general-purpose language constructs and mechanisms that, if provided by a statically typed, object-oriented language, would better support the implementation of design patterns and, thus, benefit the construction of many real systems. In particular, our catalog of language constructs includes subtyping separate from inheritance, lexically scope...
Software Engineering progresses as improvements are made in languages and methodologies. Significant...
C++ uses inheritance as a substitute for subtype polymorphism. We give examples where this makes the...
Design patterns have proven to be useful for the design of object-oriented systems. The power of a...
Design patterns are distilled from many real systems to catalog common programming practice. We have...
Object-oriented languages offer mechanisms to help structure large programs. However, the semantics ...
We outline the design and detail the implementation of a language extension for abstracting types an...
Journal ArticleThe conceptual and specificational power of denotational semantics for programming la...
Abstract. The understanding of programming paradigms has not been fully established yet, though many...
Subtyping and inheritance belong to the major concepts in contemporary object-oriented programming l...
The complexity of software has driven both researchers and practitioners toward design methodologies...
Structured programming languages have been in use for several decades. Each of these languages has d...
This paper presents a methodology to support the existence of multiple type implementations when pro...
Programming languages and formal notations are central to computer science. A significant part of c...
Domain-specific languages (DSLs) are now ubiquitous. New DSLs are needed and existing DSLs are evolv...
The problem of writing modular interpreters for functional languages has largely been studied from t...
Software Engineering progresses as improvements are made in languages and methodologies. Significant...
C++ uses inheritance as a substitute for subtype polymorphism. We give examples where this makes the...
Design patterns have proven to be useful for the design of object-oriented systems. The power of a...
Design patterns are distilled from many real systems to catalog common programming practice. We have...
Object-oriented languages offer mechanisms to help structure large programs. However, the semantics ...
We outline the design and detail the implementation of a language extension for abstracting types an...
Journal ArticleThe conceptual and specificational power of denotational semantics for programming la...
Abstract. The understanding of programming paradigms has not been fully established yet, though many...
Subtyping and inheritance belong to the major concepts in contemporary object-oriented programming l...
The complexity of software has driven both researchers and practitioners toward design methodologies...
Structured programming languages have been in use for several decades. Each of these languages has d...
This paper presents a methodology to support the existence of multiple type implementations when pro...
Programming languages and formal notations are central to computer science. A significant part of c...
Domain-specific languages (DSLs) are now ubiquitous. New DSLs are needed and existing DSLs are evolv...
The problem of writing modular interpreters for functional languages has largely been studied from t...
Software Engineering progresses as improvements are made in languages and methodologies. Significant...
C++ uses inheritance as a substitute for subtype polymorphism. We give examples where this makes the...
Design patterns have proven to be useful for the design of object-oriented systems. The power of a...