2,246 papers · page 79 of 113
Douglas P. Gregor, Andrew Lumsdaine
This paper describes the process used to extend the Boost Graph Library (BGL) for parallel operation with distributed memory. The BGL consists of a rich set of generic graph algorithms and supporting data structures, but it was not originally designed with parallelism in mind. In…
Matthias Hauswirth, Amer Diwan, Peter F. Sweeney, Michael C. Mozer
Last year at OOPSLA we presented a methodology, vertical profiling, for understanding the performance of object-oriented programs. The key insight behind this methodology is that modern programs run on top of many layers (virtual machine, middleware, etc) and thus we need to coll…
Matthew Hertz, Emery D. Berger
Garbage collection yields numerous software engineering benefits, but its quantitative impact on performance remains elusive. One can compare the cost of conservative garbage collection to explicit memory management in C/C++ programs by linking in an appropriate collector. This k…
Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine
Support for object-oriented programming has become an integral part of mainstream languages, and more recently generic programming has gained widespread acceptance as well. A natural question is how these two paradigms, and their underlying language mechanisms, should interact. O…
Andrew Kennedy, Claudio V. Russo
Generalized algebraic data types (GADTs) have received much attention recently in the functional programming community. They generalize the (type) parameterized algebraic datatypes (PADTs) of ML and Haskell by permitting value constructors to return specific, rather than parametr…
Sergei Kojarski, David H. Lorenz
Studies of Aspect-Oriented Programming (AOP) usually focus on a language in which a specific aspect extension is integrated with a base language. Languages specified in this manner have a fixed, non-extensible AOP functionality. This paper argues the need for AOP to support the i…
Yu David Liu, Scott F. Smith
This paper presents Classages, a novel interaction-centric object-oriented language. Classes and objects in Classages are fully encapsulated, with explicit interfaces for all interactions they might be involved in. The design of Classages touches upon a wide range of language des…
Yanhong A. Liu, Scott D. Stoller, Michael Gorbovitski, Tom Rothamel, Yanni Ellen Liu
Object abstraction supports the separation of what operations are provided by systems and components from how the operations are implemented, and is essential in enabling the construction of complex systems from components. Unfortunately, clear and modular implementations have po…
Michael C. Martin, V. Benjamin Livshits, Monica S. Lam
A number of effective error detection tools have been built in recent years to check if a program conforms to certain design rules. An important class of design rules deals with sequences of events asso-ciated with a set of related objects. This paper presents a language called P…
Mangala Gowri Nanda, Christian Grothoff, Satish Chandra
We are interested in static analysis of Java classes with the goal of discovering the preconditions under which a certain program point within a method may be reached, taking into account the effects of previous method calls on an object of that class. The information pertinent t…
Cosmin E. Oancea, Stephen M. Watt
Parametric polymorphism has become a common feature of mainstream programming languages, but software component architectures have lagged behind and do not support it. We examine the problem of providing parametric polymorphism with components combined from different programming …
Martin Odersky, Matthias Zenger
We identify three programming language abstractions for the construction of re-usable components: abstract type members, explicit selftypes and symmetric mixin composition. Together, these abstractions enable us to transform an arbitrary assembly of static program parts with hard…
J. Andrés Díaz Pace, Marcelo R. Campo
Given the difficulties of conventional object technologies to deal with quality-attribute concerns, software architectures appear as an interesting approach to manage them better. A problem to make this approach feasible is the gap between architectural and object models. Succeed…
Neeraj Sangal, Ev Jordan, Vineet Sinha, Daniel Jackson
An approach to managing the architecture of large software systems is presented. Dependencies are extracted from the code by a conventional static analysis, and shown in a tabular form known as the 'Dependency Structure Matrix' (DSM). A variety of algorithms are available to help…
Ajeet Shankar, S. Subramanya Sastry, Rastislav Bodík, James E. Smith
We describe a highly practical program specializer for Java programs. The specializer is powerful, because it specializes optimistically, using (potentially transient) constants in the heap; it is precise, because it specializes using data structures that are only partially invar…
Manu Sridharan, Denis Gopan, Lexin Shan, Rastislav Bodík
We present a points-to analysis technique suitable for environments with small time and memory budgets, such as just-in-time (JIT) compilers and interactive development environments (IDEs). Our technique is demand-driven, performing only the work necessary to answer each query (a…
Matthew S. Tschantz, Michael D. Ernst
This paper describes a type system that is capable of expressing and enforcing immutability constraints. The specific constraint expressed is that the abstract state of the object to which an immutable reference refers cannot be modified using that reference. The abstract state i…
Glenn Vanderburg
Article Share on A simple model of agile software processes -- or -- extreme programming annealed Author: Glenn Vanderburg Plano, TX Plano, TXView Profile Authors Info & Claims OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, syste…
Adam Welc, Suresh Jagannathan, Antony L. Hosking
A future is a simple and elegant abstraction that allows concurrency to be expressed often through a relatively small rewrite of a sequential program. In the absence of side-effects, futures serve as benign annotations that mark potentially concurrent regions of code. Unfortunate…
Uwe Zdun, Paris Avgeriou
Architectural patterns are a key point in architectural documentation. Regrettably, there is poor support for modeling architectural patterns, because the pattern elements are not directly matched by elements in modeling languages, and, at the same time, patterns support an inher…