Results 1 - 10
of
48
Modular Statically Typed Multimethods
, 2002
"... Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the binary method problem, a natural implementation of the strategy design pattern, and a form of open objects that enables easy addition of new oper ..."
Abstract
-
Cited by 55 (8 self)
- Add to MetaCart
Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the binary method problem, a natural implementation of the strategy design pattern, and a form of open objects that enables easy addition of new operations to existing classes. However, previous work on statically typed multimethods whose arguments are treated symmetrically has required the whole program to be available in order to perform typechecking. We describe Dubious, a simple core language including first-class generic functions with symmetric multimethods, a classless object model, and modules that can be separately typechecked. We identify two sets of restrictions that ensure modular type safety for Dubious as well as an interesting intermediate point between these two. We have proved each of these modular type systems sound.
On "Technomethodology": Foundational Relationships between Ethnomethodology and System Design
- Human-Computer Interaction
, 1998
"... Over the past ten years, the use of sociological methods and sociological reasoning have become more prominent in the analysis and design of interactive systems. For a variety of reasons, one form of sociological enquiry, ethnomethodology, has become something of a favoured approach. Our goal in thi ..."
Abstract
-
Cited by 53 (4 self)
- Add to MetaCart
Over the past ten years, the use of sociological methods and sociological reasoning have become more prominent in the analysis and design of interactive systems. For a variety of reasons, one form of sociological enquiry, ethnomethodology, has become something of a favoured approach. Our goal in this paper is to investigate the consequences of approaching system design from the ethnomethodological perspective. In particular, we are concerned with how ethnomethodology can take a foundational place in the very notion of system design, rather than simply being employed as a resource in aspects of the process such as requirements elicitation and specification. We begin by outlining the basic elements of ethnomethodology, and discussing the place that it has come to occupy in CSCW and, increasingly, in HCI. We discuss current approaches to the use of ethnomethodology in systems design, and point to the contrast between the use of ethnomethodology for critique and for design. Currently, und...
MultiJava: Design rationale, compiler implementation, and applications
- ACM Trans. Program. Lang. Syst
, 2004
"... MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. Open classes provide a solution to the extensibility problem of object-oriented pro ..."
Abstract
-
Cited by 47 (5 self)
- Add to MetaCart
MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. Open classes provide a solution to the extensibility problem of object-oriented programming languages, allowing the modular addition of both new types and new operations to an existing type hierarchy. This article illustrates and motivates the design of MultiJava and describes its modular static typechecking and modular compilation strategies. Although MultiJava extends Java, the key ideas of the language design are applicable to other object-oriented languages, such as C # and C++, and even, with some modifications, to functional languages such as ML. This article also discusses the variety of application domains in which MultiJava has been successfully used by others, including pervasive computing, graphical user interfaces, and compilers.
Modular typechecking for hierarchically extensible datatypes and functions
- In Proceedings of the International Conference on Functional Programming
, 2002
"... One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so that datatype variants simulate classes and function cases simulate methods. This approach allows exi ..."
Abstract
-
Cited by 30 (5 self)
- Add to MetaCart
One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so that datatype variants simulate classes and function cases simulate methods. This approach allows existing datatypes to be easily extended with both new operations and new variants, resolving a longstanding conflict between the functional and OO styles. However, previous designs based on this approach have been forced to give up modular typechecking, requiring whole-program checks to ensure type safety. We describe Extensible ML (EML), an ML-like language that supports hierarchical, extensible datatypes and functions while preserving purely modular typechecking. To achieve this result, EML’s type system imposes a few requirements on datatype and function extensibility, but EML is still able to express both traditional functional and OO idioms. We have formalized a core version of EML and proven the associated type system sound, and we have developed a prototype
More Dynamic Object Re-classification: Fickle_II
"... This paper is organized as follows: In Section 2 we introduce Fickle II informally using an example. In Sections 3, 4, and 5 we outline Fickle II: the syntax, operational semantics, typing rules, and we state type soundness. In Section 6 we compare our proposal with other approaches. In Section 7 we ..."
Abstract
-
Cited by 29 (5 self)
- Add to MetaCart
This paper is organized as follows: In Section 2 we introduce Fickle II informally using an example. In Sections 3, 4, and 5 we outline Fickle II: the syntax, operational semantics, typing rules, and we state type soundness. In Section 6 we compare our proposal with other approaches. In Section 7 we describe design alternatives. In Section 8 we draw some conclusions. The appendix contains an example, some definitions, and the proof of the type soundness result. Even though the object-based paradigm may be more fundamental [Abadi and Cardelli 1996] and though classes should not be types, and subclasses should not imply subtypes [Canning et al. 1989], current praxis predominantly uses languages of the opposite philosophy...
Merge: A Programming Model for Heterogeneous Multi-core Systems Abstract
"... In this paper we propose the Merge framework, a general purpose programming model for heterogeneous multi-core systems. The Merge framework replaces current ad hoc approaches to parallel programming on heterogeneous platforms with a rigorous, library-based methodology that can automatically distribu ..."
Abstract
-
Cited by 28 (1 self)
- Add to MetaCart
In this paper we propose the Merge framework, a general purpose programming model for heterogeneous multi-core systems. The Merge framework replaces current ad hoc approaches to parallel programming on heterogeneous platforms with a rigorous, library-based methodology that can automatically distribute computation across heterogeneous cores to achieve increased energy and performance efficiency. The Merge framework provides (1) a predicate dispatch-based library system for managing and invoking function variants for multiple architectures; (2) a high-level, library-oriented parallel language based on map-reduce; and (3) a compiler and runtime which implement the map-reduce language pattern by dynamically selecting the best available function implementations for a given input and machine configuration. Using a generic sequencer architecture interface for heterogeneous accelerators, the Merge framework can integrate function variants for specialized accelerators, offering the potential for to-the-metal performance for a wide range of heterogeneous architectures, all transparent to the user. The Merge framework has been prototyped on a heterogeneous platform consisting of an Intel Core 2 Duo CPU and an 8-core 32-thread Intel Graphics and Media Accelerator X3000, and a homogeneous 32-way Unisys SMP system with Intel Xeon processors. We implemented a set of benchmarks using the Merge framework and enhanced the library with X3000 specific implementations, achieving speedups of 3.6x – 8.5x using the X3000 and 5.2x – 22x using the 32-way system relative to the straight C reference implementation on a single IA32 core.
Incremental programming with extensible decisions
- In Proceedings of the 1st international conference on Aspect-oriented software development
, 2002
"... This paper proposes a new model of programming, in which the behavior of a program can be defined as separate decision point branches. Allowing more precise expression of the condition determining when a branch should be chosen at a decision point leads to better support for incremental programming. ..."
Abstract
-
Cited by 25 (1 self)
- Add to MetaCart
This paper proposes a new model of programming, in which the behavior of a program can be defined as separate decision point branches. Allowing more precise expression of the condition determining when a branch should be chosen at a decision point leads to better support for incremental programming. This model can be viewed as a fundamental mechanism underlying both OOP and AOP, which can serve as lower-level building blocks that can be put together into the higher-level constructs present in many AOP systems. 1
Matching Objects with Patterns
- ECOOP 2007 – Object-Oriented Programming, volume 4609 of LNCS
, 2007
"... Abstract. Data in object-oriented programming is organized in a hierarchy of classes. The problem of object-oriented pattern matching is how to explore this hierarchy from the outside. This usually involves classifying objects by their run-time type, accessing their members, or determining some othe ..."
Abstract
-
Cited by 16 (1 self)
- Add to MetaCart
Abstract. Data in object-oriented programming is organized in a hierarchy of classes. The problem of object-oriented pattern matching is how to explore this hierarchy from the outside. This usually involves classifying objects by their run-time type, accessing their members, or determining some other characteristic of a group of objects. In this paper we compare six different pattern matching techniques: object-oriented decomposition, visitors, type-tests/type-casts, typecase, case classes, and extractors. The techniques are compared on nine criteria related to conciseness, maintainability and performance. The paper introduces case classes and extractors as two new pattern-matching methods and shows that their combination works well for all of the established criteria. 1
Aspects and Polymorphism in AspectJ
- In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development
, 2003
"... There are two important points of view on inclusion or subtype polymorphism in object-oriented programs, namely polymorphic access and dynamic dispatch. These features are essential for objectoriented programming, and it is worthwhile to consider whether they are supported in aspect-oriented program ..."
Abstract
-
Cited by 15 (2 self)
- Add to MetaCart
There are two important points of view on inclusion or subtype polymorphism in object-oriented programs, namely polymorphic access and dynamic dispatch. These features are essential for objectoriented programming, and it is worthwhile to consider whether they are supported in aspect-oriented programming (AOP). In AOP, pieces of crosscutting behavior are extracted from the base code and localized in aspects, losing as a result their polymorphic capabilities while introducing new and unexplored issues. In this paper, we explore what kinds of polymorphism AOP languages should support, using AspectJ as the basis for the presentation. The results are not exclusive to AspectJ—aspectual polymorphism may make aspects in any comparable AOSD language more expressive and reusable across programs, while preserving safety. 1.
Multi-Method Dispatching: A Geometric Approach with Applications to String Matching Problems
, 1999
"... Current object oriented programming languages (OOPLs) rely on mono-method dispatching. Recent research has identified multi-methods as a new, powerful feature to be added to OOPLs, and several experimental OOPLs now have multi-methods. Their ultimate success and impact in practice depends, among ..."
Abstract
-
Cited by 15 (4 self)
- Add to MetaCart
Current object oriented programming languages (OOPLs) rely on mono-method dispatching. Recent research has identified multi-methods as a new, powerful feature to be added to OOPLs, and several experimental OOPLs now have multi-methods. Their ultimate success and impact in practice depends, among other things, on whether multi-method dispatching can be supported efficiently. We show that the multi-method dispatching problem can be transformed to a geometric problem on multi-dimensional integer grids, for which we then develop a data structure that uses near-linear space and has O(log log n) query time. This gives a solution whose performance almost matches that of the best known algorithm for standard mono-method dispatching. Our geometric data structure has other applications as well, namely in two string matching problems: matching multiple rectangular patterns against a rectangular query text, and approximate dictionary matching with edit distance at most one. Our results f...

