Results 11 - 20
of
29
Getting Class Correctness and System Correctness Equivalent - How to Get Covariance Right
, 1992
"... Covariant typing policies, as they are available in Eiffel or Sather, result in a type system in which the correct typing of a system is not implied by the correct typing of each class. This hinders a secure, incremental development of class libraries in these object-oriented languages. Classes whic ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
Covariant typing policies, as they are available in Eiffel or Sather, result in a type system in which the correct typing of a system is not implied by the correct typing of each class. This hinders a secure, incremental development of class libraries in these object-oriented languages. Classes which are added to a library may invalidate others that are already in the library. The paper shows how a covariant typing policy may be omitted without losing flexibility. As a consequence we regain the equivalence of class correctness and system correctness (and hence class validity and system validity). The approach taken in this paper is based on the observation that inheritance is used either for the integration of subsystems or for the adaptation of general problem solutions to specific situations. It turns out that covariant typing policies are used for the latter situation. We show how adaptation may be solved by instantiation of schemes similar to generics. We give rules how such classe...
pSather monitors: Design, Tutorial, Rationale and Implementation
, 1991
"... pSather is a parallel extension of Sather aimed at shared memory parallel architectures. A prototype of the language is currently being implemented on a Sequent Symmetry and on SUN Sparc-Stations. pSather monitors are one of the basic new features introduced in the language to deal with parallelism. ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
pSather is a parallel extension of Sather aimed at shared memory parallel architectures. A prototype of the language is currently being implemented on a Sequent Symmetry and on SUN Sparc-Stations. pSather monitors are one of the basic new features introduced in the language to deal with parallelism. The current design is presented and discussed in detail. ICSI and Computer Science Division, U.C. Berkeley. E-mail jfeldman@icsi.berkeley.edu. y ICSI and Computer Science Division, U.C. Berkeley. E-mail clim@icsi.berkeley.edu. z ICSI and Istituto di Elaborazione dell'Informazione, CNR Pisa Italy. E-mail mazz@icsi.berkeley.edu. CONTENTS 1 Contents 1 Introduction 2 2 Monitor Design 5 2.1 Locking : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5 2.2 Signals : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 2.3 Forking : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 2.4 T...
Dynamic Dispatch in Object-Oriented Languages
- CSIRO -- Division of Information Technology
, 1994
"... Dynamic binding in object-oriented languages is perhaps the most important semantic aspect of these languages. At the same time it can contribute to inefficiency and lack of robustness because it incurs lookup overheads on function calls and hinders the compiler determining the exact type of objects ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Dynamic binding in object-oriented languages is perhaps the most important semantic aspect of these languages. At the same time it can contribute to inefficiency and lack of robustness because it incurs lookup overheads on function calls and hinders the compiler determining the exact type of objects held in variables or returned by functions. This may, for instance, preclude inlining of small functions or attribute offset computation at compile time. Yet attribute accesses are the most frequently executed operations. As a result, to regain lost performance, OO programmers are tempted to break the encapsulation of classes or want explicit control over dynamic dispatch, trading off extensibility. In the implementation of parallel object-oriented languages the additional complication arises that object accesses may require more expensive remote memory accesses. Lookup at the call may be inappropriate if the code has to be executed on a different processor and there perhaps has a different...
CLOS Eiffel and Sather: A Comparison
- in A. Paepcke (ed.): Object-Oriented Programming: The CLOS Perspective
, 1991
"... The Common Lisp Object System defines a powerful and flexible type system that builds on more than fifteen years of experience with object-oriented programming. Most current implementations include a comfortable suite of Lisp support tools including an Emacs Lisp editor, an interpreter, an increment ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
The Common Lisp Object System defines a powerful and flexible type system that builds on more than fifteen years of experience with object-oriented programming. Most current implementations include a comfortable suite of Lisp support tools including an Emacs Lisp editor, an interpreter, an incremental compiler, a debugger, and an inspector that together promote rapid prototyping and design. What else might one want from a system? We argue that static typing yields earlier error detection, greater robustness, and higher efficiency and that greater simplicity and more orthogonality in the language constructs leads to a shorter learning curve and more intuitive programming. These elements can be found in Eiffel and a new object-oriented language, Sather, that we are developing at ICSI. Language simplicity and static typing are not for free, though. Programmers have to pay with loss of polymorphism and flexibility in prototyping. We give a short comparison of CLOS, Eiffel and Sather, addressing both language and environment issues.
Reasoning about Complexity of Object-Oriented Programs
, 1994
"... This report develops an appropriate fundamental approach towards performance estimation, measurement and metering in OO approaches. We use examples written in the Sather language to demonstrate the concepts of so-called OO-machines, which lend themselves to performance metrics, and a calculus for re ..."
Abstract
-
Cited by 4 (4 self)
- Add to MetaCart
This report develops an appropriate fundamental approach towards performance estimation, measurement and metering in OO approaches. We use examples written in the Sather language to demonstrate the concepts of so-called OO-machines, which lend themselves to performance metrics, and a calculus for reasoning about performance. A language binding of these concepts is then sketched in the form of cost annotations that allow programmers to file classes in libraries well-documented with cost related specifications. These annotations can optionally be used for instrumenting code that meters cost and checks whether the taken measurements are consistent with the given specification. In this way programmers can benefit from cost annotations by means of documentation and rigorous testing without requiring a deep familiarity with the theoretical underpinnings. Keywords: Object-Oriented Languages, Complexity, Amortized Complexity
ICSIM: An Object-Oriented Connectionist Simulator
, 1991
"... ICSIM is a connectionist net simulator being developed at ICSI and written in Sather. It is object-oriented to meet the requirements for flexibility and reuse of homogeneous and structured connectionist nets and to allow the user to encapsulate efficient customized implementations perhaps running on ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
ICSIM is a connectionist net simulator being developed at ICSI and written in Sather. It is object-oriented to meet the requirements for flexibility and reuse of homogeneous and structured connectionist nets and to allow the user to encapsulate efficient customized implementations perhaps running on dedicated hardware. Nets are composed by combining off-the-shelf library classes and if necessary by specializing some of their behaviour. General user interface classes allow a uniform or customized graphic presentation of the nets being modeled. The report gives an overview of the simulator. Its main concepts, the class structure of its library and some of the design decisions are sketched and a number of example nets are used to illustrate how net structure, interconnection and behavior are defined. 1 Introduction In a highly exploratory field of research like that of artificial neural nets, simulation seems to be the only prototyping technique combining sufficient flexibility with acce...
A Generic Complete Dynamic Logic for Reasoning about Purity and Effects
- TO APPEAR IN FORMAL ASPECTS OF COMPUTING
"... For a number of programming languages, among them Eiffel, C, Java, and Ruby, Hoare-style logics and dynamic logics have been developed. In these logics, pre- and postconditions are typically formulated using potentially effectful programs. In order to ensure that these pre- and postconditions behave ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
For a number of programming languages, among them Eiffel, C, Java, and Ruby, Hoare-style logics and dynamic logics have been developed. In these logics, pre- and postconditions are typically formulated using potentially effectful programs. In order to ensure that these pre- and postconditions behave like logical formulae (that is, enjoy some kind of referential transparency), a notion of purity is needed. Here, we introduce a generic framework for reasoning about purity and effects. Effects are modelled abstractly and axiomatically, using Moggi’s idea of encapsulation of effects as monads. We introduce a dynamic logic (from which, as usual, a Hoare logic can be derived) whose logical formulae are pure programs in a strong sense. We formulate a set of proof rules for this logic, and prove it to be complete with respect to a categorical semantics. Using dynamic logic, we then develop a relaxed notion of purity which allows for observationally neutral effects such writing on newly allocated memory.
Using Design Patterns for Reusable, Efficient Implementations of Graph Algorithms
, 1996
"... Software reusability is an important and difficult problem in general, and this is in particular true for graph algorithms. The usual way to address reusability of graph algorithms is to provide a standard--setting library of data structures (incl. various kinds of graphs), on which graph algorithms ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Software reusability is an important and difficult problem in general, and this is in particular true for graph algorithms. The usual way to address reusability of graph algorithms is to provide a standard--setting library of data structures (incl. various kinds of graphs), on which graph algorithms may be implemented. In this working paper, we discuss the disadvantages to this approach, and we propose a couple of domain design patterns to overcome these disadvantages. To apply design patterns, we shift the focus from data structures as the primary units of reuse to algorithms themselves. So far, our concept is highly immature, and so is this paper. In fact, this paper merely reflects the state of our discussion and is intended to serve as a base for further dicussions. We are currently implementing a case study (maximum flow problem) in C++ to evaluate our ideas empirically. 1 Introduction Efficiency vs. reusability. Besides mere correctness, there are several design criteria for go...
An Object-Oriented Approach to the Design of Graphical User Interface Systems
, 1992
"... In this paper the problems concerning the design of graphical user interface systems composed of a set of interaction objects allowing users to interact with structured graphics are discussed. Each interaction object can have input and output functionality. Here we want to point out the problems and ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
In this paper the problems concerning the design of graphical user interface systems composed of a set of interaction objects allowing users to interact with structured graphics are discussed. Each interaction object can have input and output functionality. Here we want to point out the problems and the requirements that are raised in performing such design in an object-oriented environment. For this purpose the importance of task-oriented design hierarchies of interaction objects in order to make the translation from the user task to the system functions easier is addressed. The design of a hierarchy of interaction objects following this approach is proposed. This contrast with the current window systems toolkits design because it is mainly driven by the semantics of the interaction objects rather than their appearance. Finally an example of a common graphical user interface performed by the proposed approach is presented. __________________________________________________________ Ema...
An Analysis of the Divergence of Two Sather Dialects
- International Computer Science Institute
, 1996
"... Sather is an object oriented language designed to be simple, efficient, safe, and nonproprietary. It was originally envisioned as a "cleaned-up" version of Eiffel, addressing perceived failures in simplicity and efficiency. The first public implementation (Sather 0) was first released to the public ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Sather is an object oriented language designed to be simple, efficient, safe, and nonproprietary. It was originally envisioned as a "cleaned-up" version of Eiffel, addressing perceived failures in simplicity and efficiency. The first public implementation (Sather 0) was first released to the public by ICSI in 1991. Shortly after, a compiler group at the University of Karlsruhe created the first native code compiler. A major effort then began to redesign the language to correct shortcomings in Sather 0 and to make Sather suitable for general-purpose, large scale programming. In part because each compiler group was building a compiler for a moving design target, the two parallel efforts resulted in two dialects, Sather 1 and Sather K. This report analyzes the essential causes of the differences, which result from differences in each group's goals. 1 Introduction Sather is an object oriented language designed to be simple, efficient, safe, and nonproprietary. Sather was originally deve...

