| Clemens Szyperski, Stephen Omohundro, and Stephan Murer. Engineering a programming language: The type and class system of Sather. In Jurg Gutknecht, editor, Programming Languages and System Architectures, LNCS 782, pages 208-- |
.... bound to an object that is identified by a moniker, this object is subsequently accessed via standard references (including IUnknown) The goal of separating interfaces and classes has been proposed explicitly first by Cook et al. 4] and, for example, has been addressed in Emerald [10] Sather [20] and Java [1] However, whereas it is possible to declare pure interfaces types in one or the other way in all of these approaches, the declaration of classes still implies the accompanying (implicit or explicit) declaration of interfaces in order to use newly declared properties from the outside. ....
C. Szyperski, S. Omohundro, S. Murer. Engineering a Programming Language: The Type and Class System of Sather. Technical Report TR-93-064. The International Computer Science Institute, Berkeley, CA, USA, 1993.
....languages, in particular object oriented 9 languages. Standard type safe generics are available in Ada, and to some extent in C (via templates) Bounded polymorphism was introduced long ago [3] in the context of functional programming, and put to use in a wide spectrum of programming languages [14, 8, 10]. In [2] a notion of generic wrapper is introduced, which has some common aims with our approach, but that relies on dynamic type checking, and adopts a notion of component as Java classes together as reuse through inheritance. ....
Clemens Szyperski, Stephen Omohundro, and Stephan Murer. Engineering a programming language: The type and class system of Sather. In Jurg Gutknecht, editor, Programming Languages and System Architectures, volume 782 of Lecture Notes in Computer Science, pages 208-227. Springer Verlag, March 1994.
....Naturally, the basic types and concepts of the language must provide support for this kind of qualitative protection. We attach the protection to object handles, which enables us to have different kinds of views to an object. In fact, the protection could also be attached to objects. In Sather [19] this is done with immutable and reference (mutable) objects. The Eiffel language [14] has the concept of expanded classes to create shallow immutable objects, but the expanded class concept does not exactly correspond to our shallow immutable concept, since objects of expanded type cannot be ....
C. Szyperski, S. Omohundro, and S. Murer. Engineering a Programming Language: The Type and Class System of Sather. In Programming Languages and System Architectures, LNCS 782, pages 208--227. Springer Verlag, 1994.
....make Sather suitable for general purpose, large scale programming outside of the language community. Sather 1 greatly expanded the language, introducing bound routines, iterator abstraction [3] proper separation of typing and code inclusion, contravariant typing, strongly typed parameterization [7], exceptions, stronger optional runtime checks and a new library design. The first Sather 1 compiler was released by ICSI in 1994. The Karlsruhe group also extended the language. Many of the Sather 1 changes were adopted, but the resulting language was in some respects closer to Sather 0 and does ....
C. Szyperski, S. Omohundro, S. Murer. "Engineering a programming language: The type and class system of Sather", In Jurg Gutknecht, ed., Programming Languages and System Architectures, p. 208-227. Springer Verlag, Lecture Notes in Computer Science 782, 1993.
....rules often associated with bounded polymorphism [CW85] It remains to be seen how suitable our system is for modeling object oriented programming. Some recent developments in object oriented programming languages seem to go in the same direction, by restricting subtyping to abstract classes [SOM93] We now show that the record extension adds nothing essentially new to our language. We do this by presenting an encoding from System O with records to plain System O. The source of the encoding is a program with records, where we assume that the labels l 1 ; l n of all record ....
Clemens Szyperski, Stephen Omohundro, and Stephan Murer. Engineering a programming language: The type and class system of Sather. In Programming Languages and System Architectures, pages 208--227. Springer Verlag, Lecture Notes in Computer Science 782, November 1993.
....programs from specifications and assure reliability of the final program. Our model of classes, subclassing, and subtyping polymorphism can be used to reason about the meaning of programs constructed using the separate subclassing and interface inheritance hierarchies, like in Java [13] Sather [26], and some other languages. In that approach interface inheritance is the basis for subtyping polymorphism, whereas subclassing is used only for implementation reuse. By associating a specification class with every interface type, we can reason about the behaviour of objects having this interface. ....
C. A. Szyperski, S. Omohundro, and S. Murer. Engineering a programming language -- the type and class system of Sather. In Proceedings, First Intl Conference on Programming Languages and System Architectures, volume LNCS 782, Zurich, Switzerland, 1994. Springer. This article was processed using the L a T E X macro package with LLNCS style
.... built in array data structures that are more efficient than would be a typical class based extensible implementation using dynamically dispatched 2 Optimization of Object Oriented Programs Using Static Class Hierarchy Analysis Dean et al. fetch and store operations, Sather [Omohundro 94, Szypersky et al. 93] allows the programmer to explicitly select where subtype polymorphism is allowed, trading away reusability for performance, and it is common practice in C programming to avoid virtual function calls along common execution paths, sometimes leading to contorted, hard to understand and ....
Clemens Szypersky, Stephen Omohundro, and Stephan Murerzw. Engineering a Programming Language: The Type and Class System of Sather. Technical Report 93-064, International Computer Science Institute, Berkeley, CA, 1993.
....type, and just as substitutability of derived classes requires type conformance, it also requires contract conformance. Thus, preconditions are contravariant with inheritance, whereas postconditions are covariant. This situation is directly analogous to the rules for substitutability of types [SOM93]. Handshake constructs proper variance by logically or ing an overridden method s preconditions with those of its ancestor; the postconditions will be and ed. Handshake considers a violated contract to invalidate all further execution of the guarded method, and immediately throws a ....
Clemens Szypersky, Stephen Omohundro, and Stephan Murer. Engineering a Programming Language: the Type and Class System of Sather. ICSI Tech Report Tr-93-064, University of California, Berkeley, 1993.
....to the different module implementations. Currently, identifications are made by refering to the module name, i.e. the contract, which is implemented by exactly one module. Another, probably better, approach could be based on separating subclassing from subtyping, as for instance done in Sather [11]. Types would be employed as contracts whereas classes would be bound as implementations later. At component manufacturing time, subclasses would be specified by refering to a type instead of to a class. Sather does not support this to avoid the semantical problems of inheritance. It rather ....
Szyperski, C., Omohundro, S., Murer, S.: Engineering a Programming Language: The Type and Class System of Sather. In Proc. International Conference on Programming Languages and System Architectures, LNCS 782, March 1994.
....after an overall description of BALLOON. 3 The BALLOON Programming Language BALLOON is a concurrent object oriented programming language aimed at providing expressive abstractions for the reuse and composition of software components. In some aspects BALLOON resembles POOL I [2] and SATHER [29] providing the complete separation of types and classes. Types specify the interface of objects sufficient for their correct compositionand interaction in a message based system [23] Types are implemented by classes, which are the main structuring block of the language. This binding is a ....
....If necessary, some activation clauses can be defined for methods AllLock, WriteLock and UnLock so that, for example, Un Lock is only allowed after a AllLock or WriteLock invocation. 5 Related Work The separation of types from classes has already been proposed in object oriented languages [2, 29]. This is mainly due to the observation that the subtype relation does not always follow inheritance [11] America introduced these notions in a language with concurrency concerns [2] from where this paper in many aspects has its beginnings. Lately, several researchers [23, 21] point this ....
Clemens Szyperski, Stephen Omohundro, and Stephan Murer. Engineering a programming language: The type and class system of Sather. In Jurg Gutknecht, editor, Programming Languages and System Architectures, pages 208--227. Springer Verlag, Lecture Notes in Computer Science 782, November 1993. Available as technical report ICSI TR-93-064.
....invariants for the current object Self . Our type system on which such formulas are built, is called TOF (Types for Objects and Functions) It supports subtype polymorphism and passing named polymorphic functions as parameter. TOF has modeled and influenced the type system of the Sather language [19]. Sather distinguishes subtyping, i.e. conformance between types of objects, from subclassing, i.e. inheritance or partial reuse of code. Designers can insert new types below, above or in between existing types. With this ability intermediate classes can be introduced when needed and OO designs ....
C. Szyperski, S. Omohundro, and S. Murer. Engineering a Programming Language: The Type and Class System of Sather. Technical report, International Computer Science Institute, Berkeley, 1993.
....would be accessible by clients of the component. Adaptation of the component should then restrict access to the excluded operations. ffl Client and state based restriction: In systems where a component is used by clients of various types, the component may need to act in several roles, see e.g. [11]. This requires the component to present a tailored interface to each client type, i.e. each client has only access to that part of the interface that it requires. This we refer to as client based interface restriction. In addition, parts of the interface of the component may be accessible or ....
....Systems, Vol. 15, No. 2, April 1993. 9] Kiczales, G. des Rivieres, J. Bobrow, D.G. The Art of the Metaobject Protocol. The MIT Press, 1991. 10] H. Lieberman, H. Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems. Proceedings OOPSLA 86, pp. 214 223, 1986. [11] Reenskaug, T. Wold, P. Lehne, O.A. Working With Objects: The Ooram Software Engineering Method. Prentice Hall, 1995. 21 22 Formal Methods for Component Software: The Refinement Calculus Perspective Martin B uchi Turku Centre for Computer Science Lemminkaisenkatu 14A, 20520 Turku, ....
[Article contains additional citation context not shown here]
Szyperski, C., Omohundro, S., Murer, S.: Engineering a Programming Language: The Type and Class System of Sather. In Proc. International Conference on Programming Languages and System Architectures, LNCS 782, March 1994.
....pointers and memory leaks. To solve this problem on the level of programming languages, completely typesafe languages are required. With current language technology, this in turn mandates the use of garbage collection. Examples of typed garbage collected languages are Oberon [RW 92] Sather [SOM 94] and Java. In technical terms, safety means that invariants can be guaranteed. Information hiding on the level of objects allows to guarantee invariants over the hidden instance variables. For example, whenever the width of a rectangle is changed, the method which changes the width can also ....
Clemens Szyperski, Stephen Omohundro, Stephan Murer, Engineering a Programming Language - the Type and Class System of Sather, Proceedings, First Intl Conf on Programming Languages and System Architecture, Lecture Notes in Computer Science, Nr. 782, Springer, 7
....leads to the inclusion of code, the requirement of behavioral substitutability for instances of subclasses is hard to establish. Clearly, an uncaught subtyping error can be a serious safety threat leading to arbitrary program misbehavior. Sather in turn fully separates classes and types [25]: types can only be derived (subtyped) from other types and classes implement types and inherit code from other classes 10 . Also, there have been proposals to integrate subtyping and genericity. Early attempts treated genericity as a special case of subtyping leading to languages like Eiffel. ....
C. A. Szyperski, S. Omohundro, and S. Murer. Engineering a Programming Language -- the Type and Class System of Sather. In Proceedings, First Intl Conf on Programming Languages and System Architectures, number 782 in Springer LNCS, Zurich, Switzerland, March 1994.
....Java s interfaces [Sun 95] or the older protocols in Objective C [NextStep 93] Such concepts are offered as complementary or alternative constructs, not as substitutes for the classical, hierarchical constructions. Compared to real multiple inheritance, as for instance supported by C or Sather [SOM 94] the combination of interfaces and hierarchical inheritance may appear restrictive. However, these trials to harness the overmighty inheritance construct are really indications in favor of our line of arguments. At the same time, Microsoft s Common Object Model (COM) Brockschmidt 95] relies ....
....individual objects. Bottom line: inheritance is needed only to break laws that have been set up by the original object s designer. Which Hierarchies Do We Need Taking the separation of specification and implementation literally, lends itself to separation of subtyping and inheritance. Sather [SOM 94] for instance, has gone this way. In Sather, inheritance is by definition equivalent to textually copying the inherited material. Multiple inheritance has the semantics of sequentially copying and possibly renaming inherited material. On the specification side, multiple subtyping is supported. ....
C. Szyperski, S. Omohundro, S. Murer, "Engineering a Programming Language: The Type and Class System of Sather," Proceedings, International Conference on Programming Languages and System Architectures, LNCS 782, March 1994.
....avoiding code inheritance is one possible approach, followed for example in COM. Another approach is admitting the strong coupling caused by code inheritance and therefore carefully separating the forming of subtypes and the use of code inheritance. In Sather (Szyperski, Omohundro and Murer [16]) this has been taken to the point where subtyping can only be based on fully abstract classes (no implementation at all) and where inheritance is indeed defined to be equivalent to textual inclusion of source code. This admits that code inheritance is a low level concept and essentially reduces ....
Clemens Szyperski, Stephen Omohundro and Stephan Murer. Engineering a Programming Language -- the Type and Class System of Sather. In Proceedings, First Intl Conf on Programming Languages and System Architectures, number 782 in Springer LNCS, Zurich, Switzerland, March 1994.
No context found.
Clemens Szyperski, Stephen Omohundro, and Stephan Murer. Engineering a programming language: The type and class system of Sather. In Jurg Gutknecht, editor, Programming Languages and System Architectures, LNCS 782, pages 208--
No context found.
C. Szyperski, S. Omohundro, and S. Murer. Engineering a programming language --- the type and class system of Sather. In Proc. International Conference on Programming Languages and System Architectures, volume 782 of LNCS. Springer-Verlag, March 1994.
No context found.
C. Szyperski, S. Omohundro, S. Murer. Engineering a Programming Language: The Type and Class System of Sather. Technical Report TR-93-064. The International Computer Science Institute, Berkeley, CA, USA, 1993.
No context found.
C. Szyperski, S. Omohundro and S. Murer "Engineering a Programming Language: The Type and Class System of Sather", in Programming Languages and System Architectures, ed. Jurg Gutknecht, Springer Verlag, pp. 208-227, 1993.
No context found.
Clemens Szypersky, Stephen Omohundro, and Stephan Murerzw. Engineering a Programming Language: The Type and Class System of Sather. Technical Report 93-064, International Computer Science Institute, Berkeley, CA, 1993.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC