This paper briefly describes research on generic object-orientedprogramming where we establish a set of design patterns (or idioms) which makes algorithms independent of data structures. In the framework that impleme...
详细信息
Interprocedural analyses enable optimizing compilers to more precisely model the effects of non-inlined procedure calls, potentially resulting in substantial increases in application performance. Applying interprocedu...
详细信息
Interprocedural analyses enable optimizing compilers to more precisely model the effects of non-inlined procedure calls, potentially resulting in substantial increases in application performance. Applying interprocedural analysis to programs written in object-oriented or functional languages is complicated by the difficulty of constructing an accurate program call graph. This paper presents a parameterized algorithmic framework for call graph construction in the presence of message sends and/or first-class functions. We use this framework to describe and to implement a number of well-known and new algorithms. We then empirically assess these algorithms by applying them to a suite of medium-sized programs written in Cecil and Java, reporting on the relative cost of the analyses, the relative precision of the constructed call graphs, and the impact of this precision on the effectiveness of a number of interprocedural optimizations.
Making extensions to existing systems is a critically important activity in object-orientedprogramming. This paper proposes an approach in which extensions of all kinds are clearly separated from the base hierarchy u...
详细信息
ISBN:
(纸本)0897915399
Making extensions to existing systems is a critically important activity in object-orientedprogramming. This paper proposes an approach in which extensions of all kinds are clearly separated from the base hierarchy upon which they are built, for ease of distribution and combination. Extensions, including extensions to existing classes, are written in separate, sparse extension hierarchies. The entire system is obtained by combining the extension hierarchies with the base hierarchy. Sequences of successive extensions can be combined using an extension operator, and parallel extensions can be combined using a merge operator, which might identify conflicts that must be reconciled. System building takes place at two levels: combining existing extensions from a library using these operators, and building new extensions when existing ones are not adequate. New extensions built in this way are added to the library, and so should be written to be as general and reusable as possible.
Harmony-orientedprogramming relaxes encapsulation and information hiding by arranging code snippets in virtual spaces and exchanging data via diffusion. Harmony-oriented Smalltalk is a visual development environment ...
详细信息
ISBN:
(纸本)9781605587660
Harmony-orientedprogramming relaxes encapsulation and information hiding by arranging code snippets in virtual spaces and exchanging data via diffusion. Harmony-oriented Smalltalk is a visual development environment used in on-going studies to gather evidence that harmony-oriented programs are less prone to brittleness than object-oriented programs in the context of software evolution.
Class libraries are generally designed with an emphasis on versatility and extensibility. applications that use a library typically exercise only part of the library's functionality. As a result, objects created b...
详细信息
Class libraries are generally designed with an emphasis on versatility and extensibility. applications that use a library typically exercise only part of the library's functionality. As a result, objects created by the application may contain unused members. We present an algorithm that specializes a class hierarchy with respect to its usage in a program p. That is, the algorithm analyzes the member access patterns for P's variables, and creates distinct classes for variables that access different members. Class hierarchy specialization reduces object size, and is hence primarily a space optimization. However, execution time may also be reduced through reduced object creation/destruction time, and caching/paging effects.
This paper shows that inheritance and subtyping can be introduced advantrgeously into a parallel object-oriented language, POOL-I. These concepts are clearly distinguished, because they deal with different aspects of ...
详细信息
object-oriented frameworks are very popular for the efficiency they provide in reusing software. However, their use by instantiation, their enrichment by composition, and their extension by specialization, are all com...
详细信息
object relationships in modern software systems are becoming increasingly numerous and complex. Programmers who try to find violations of such relationships need new tools that allow them to explore objects in a large...
详细信息
object relationships in modern software systems are becoming increasingly numerous and complex. Programmers who try to find violations of such relationships need new tools that allow them to explore objects in a large system more efficiently. Many existing debuggers present only a low-level, one-object-at-a-time view of objects and their relationships. We propose a new solution to overcome these problems: query-based debugging. The implementation of the query-based debugger described here offers programmers an effective query tool that allows efficient searching of large object spaces and quick verification of complex relationships. Even for programs that have large numbers of objects, the debugger achieves interactive response times for common queries by using a combination of fast searching primitives, query optimization, and incremental result delivery.
暂无评论