Results 1 - 10
of
17
The Programming Language Jigsaw: Mixins, Modularity And Multiple Inheritance
, 1992
"... This dissertation provides a framework for modularity in programming languages. In this framework, known as Jigsaw, inheritance is understood to be an essential linguistic mechanism for module manipulation. In Jigsaw, the roles of classes in existing languages are "unbundled," by providing a suite o ..."
Abstract
-
Cited by 138 (4 self)
- Add to MetaCart
This dissertation provides a framework for modularity in programming languages. In this framework, known as Jigsaw, inheritance is understood to be an essential linguistic mechanism for module manipulation. In Jigsaw, the roles of classes in existing languages are "unbundled," by providing a suite of operators independently controlling such effects as combination, modification, encapsulation, name resolution, and sharing, all on the single notion of module. All module operators are forms of inheritance. Thus, inheritance is not in conflict with modularity in this system, but is indeed its foundation. This allows a previously unobtainable spectrum of features to be combined in a cohesive manner, including multiple inheritance, mixins, encapsulation and strong typing. Jigsaw has a rigorous semantics, based upon a denotational model of inheritance. Jigsaw provides a notion of modularity independent of a particular computational paradigm. Jigsaw can therefore be applied to a wide variet...
Integrating Independently-Developed Components in Object-Oriented Languages
, 1993
"... Object-oriented programming promises to increase programmer productivity through better reuse of existing code. However, reuse is not yet pervasive in today's object-oriented programs. Why is this so? We argue that one reason is that current programming languages and environments assume that compone ..."
Abstract
-
Cited by 69 (2 self)
- Add to MetaCart
Object-oriented programming promises to increase programmer productivity through better reuse of existing code. However, reuse is not yet pervasive in today's object-oriented programs. Why is this so? We argue that one reason is that current programming languages and environments assume that components are perfectly coordinated. Yet in a world where programs are mostly composed out of reusable components, these components are not likely to be completely integrated because the sheer number of components would make global coordination impractical. Given that seemingly minor inconsistencies between individually designed components would exist, we examine how they can lead to integration problems with current programming language mechanisms. We discuss several reuse mechanisms that can adapt a component in place without requiring access to the component's source code and without needing to re-typecheck it.
Towards an Object Calculus
, 1991
"... The development of concurrent object-based programmig languages has suffered from the lack of any generally accepted formal foun ion for de finn their semantics. Furthermore, the delicate relation p between object-oriented features supportin reuse an operation features con n g in teraction a n state ..."
Abstract
-
Cited by 47 (8 self)
- Add to MetaCart
The development of concurrent object-based programmig languages has suffered from the lack of any generally accepted formal foun ion for de finn their semantics. Furthermore, the delicate relation p between object-oriented features supportin reuse an operation features con n g in teraction a n state chan is poorlyun rstood in a con urren t settin To address this problem, we propose the developmen t of an object calculus, borrowi n heavily from relevan t work in the area of process calculi. To this en we briefly review some of this work, we pose some i ormal requiremen ts for an object calculus, an we present the syntax, operation seman tics an use through examples of a proposed object calculus, called OC.
Component-Oriented Software Development
- Communications of the ACM
, 1992
"... Introduction Object-oriented programming techniques promote a new approach to software engineering in which reliable, open applications can be largely constructed, rather than programmed, by reusing "frameworks" [3] of plug-compatible software components. Although the dream of a components-based so ..."
Abstract
-
Cited by 38 (2 self)
- Add to MetaCart
Introduction Object-oriented programming techniques promote a new approach to software engineering in which reliable, open applications can be largely constructed, rather than programmed, by reusing "frameworks" [3] of plug-compatible software components. Although the dream of a components-based software industry is very old [9], only now does it appear that we are close to realizing the dream. The reason for this is twofold: . Modern applications are increasingly open in terms of topology, platform and evolution, and so the need for a component-oriented approach to development is even more acute than in the past; . Objects provide an organizational paradigm for decomposing large applications into cooperating objects as well as a reuse paradigm for composing applications from pre-packaged software components. Despite the contributions of object-oriented technology, there are several open research problems that must be resolved t
The Reuse of Uses in Smalltalk Programming
- ACM Transactions on Computer-Human Interaction
, 1996
"... this article was given at ECOOP '93. ..."
Customization in C++
, 1990
"... Extensions to C ++ are proposed that would enable the directed synthesis of code as an alternative to dispatch-based code generation. The strategies are similar to those used in the SELF compiler, which uses customization techniques to impressive effect. The language extensions required to support ..."
Abstract
-
Cited by 30 (4 self)
- Add to MetaCart
Extensions to C ++ are proposed that would enable the directed synthesis of code as an alternative to dispatch-based code generation. The strategies are similar to those used in the SELF compiler, which uses customization techniques to impressive effect. The language extensions required to support customization also enhance support for other uses of inheritance in C++ , and are useful in conjunction with proposed additions of parametric types. 1 Introduction One of the smallest, but most important features introduced in C++ 2.0 is improved support for abstract base classes (ABCs) via the use of "pure virtual" member functions. For example, 1 class Matrix -- public: virtual ~Matrix() -- virtual int rows() const = 0; virtual int cols() const = 0; virtual float elem(int i, int j) const = 0; int size() -- return rows() * cols(); ; This declares a Matrix class in terms of its protocol or interface (i.e., the signatures of member functions), but not in terms of member function implement...
Emerald: A General-Purpose Programming Language
, 1991
"... data types Inheritance Object-based concurrency 1. ..."
Abstract
-
Cited by 29 (3 self)
- Add to MetaCart
data types Inheritance Object-based concurrency 1.
Deliberated Evolution: Stalking the View Matcher in Design Space
- Human-Computer Interaction
, 1991
"... Technology development in HCI can be interpreted as a co-evolution of tasks and artifacts. The tasks people actually engage in (successfully or problematically) and those they wish to engage in (or perhaps merely to imagine) define requirements for future technology, and specifically for new HCI art ..."
Abstract
-
Cited by 25 (6 self)
- Add to MetaCart
Technology development in HCI can be interpreted as a co-evolution of tasks and artifacts. The tasks people actually engage in (successfully or problematically) and those they wish to engage in (or perhaps merely to imagine) define requirements for future technology, and specifically for new HCI artifacts. These artifacts, in turn, open up new possibilities for human tasks, new ways to do familiar things, entirely new kinds of things to do. In this paper we describe psychological design rationale as an approach to augmenting HCI technology development and to clarifying the sense in which HCI artifacts embody psychological theory. A psychological design rationale is an enumeration of the psychological claims embodied by an artifact for the situations in which it is used. As an example, we present our design work with the View Matcher, a Smalltalk programming environment for coordinating multiple views of an example application. In particular, we show how psychological design rationale was used to develop a view matcher for code reuse from prior design rationales for related programming tasks and environments. 1. TASKS AND ARTIFACTS In 1605, Sir Francis Bacon called for a "natural history of trades." He urged that technical tools, techniques and processes be made more public and explicit. This was one element in his broader project of developing practical science, and hinged on the assumption that if such knowledge could be more systematically considered and integrated, human progress would necessarily result. Thus, Bacon suggested that new concepts and inventions would result "by a connexion and transferring of the observations of one Arte, to the use of another, when the experiences of several misteries shall fall under the consideration of one man's minde."(1970: Book...
An Object-Based Programming Model for Shared Data
- ACM Transactions on Programming Languages and Systems
, 1991
"... The classical object model supports private data within objects and clean interfaces between objects, and by definition does not permit sharing of data among arbitrary objects. This is a problem for real-world applications --- such as advanced financial services and integrated network management --- ..."
Abstract
-
Cited by 19 (5 self)
- Add to MetaCart
The classical object model supports private data within objects and clean interfaces between objects, and by definition does not permit sharing of data among arbitrary objects. This is a problem for real-world applications --- such as advanced financial services and integrated network management --- where the same data logically belongs to multiple objects and may be distributed over multiple nodes on the network. Rather than give up the advantages of encapsulated objects in modeling real-world entities, we propose a new object model that supports shared data in a distributed environment. The key is separating distribution of computation units from information hiding concerns. Minimal units of data and control, called facets, may be shared among multiple objects and are grouped into processes. Thus a single object, or information hiding unit, may be distributed among multiple processes, or computation units. In other words, different facets of the same object may reside in different a...

