A Novel Formal Semantics for a Parallel Object-Oriented Language (original) (raw)

Formal techniques for parallel object-oriented languages

Lecture Notes in Computer Science, 1991

This paper is intended to give an overview of the formal techniques that have been developed to deal with the parallel object-oriented language POOL and several related languages. We sketch a number of semantic descriptions, using several formalism: operational semantics, denotational semantics, and a new approach to semantics, which we call layered semantics. Then we summarize the progress that has been made in formal proof systems to verify the correctness of parallel object-oriented programs. Finally we survey the techniques that we are currently developing to describe the behaviour of objects independently of their implementation, leading to linguistic support for behaviourai subtyping.

Concurrent Object-Oriented Programs: From Specification to Code

Formal Methods for Components and Objects, First International Symposium, FMCO 02, 2003

In this paper we put forward a concurrent object-oriented programming language in which concurrency is tightly integrated with objects. Concurrency is expressed by extending classes with actions and allowing methods to be guarded. Concurrency in an object may be hidden to the outside, thus allowing concurrency to be introduced in subclasses of a class hierarchy. A disciplined form of intra-object concurrency is supported. The language is formally defined by translation to action systems. Inheritance and subtyping are also considered. A theory of class refinement is presented, allowing concurrent programs to be developed from sequential specifications. Our goal is to have direct rules for verification and refinement on one hand and a practical implementation on the other hand. We briefly sketch our implementation. While the implementation relies on threads, the management of threads is hidden to the programmer.

Operational semantics of a parallel object-oriented language

1986

Department of Computer Science Report CS-R8515 August 111\l \\\\\\ l \ 1 1 l l \ \ 1 1 \ll i l f m(~f mll\ Ill\ \\\l \Ill \\\\Ill 3 0054 00048 7638 The Centre for Mathematics and Computer Science is a research institute of the Stichting Mathematisch Centrum; which was founded on February 11, 1946, as a nonprofit institution aiming at 1he promotion of mathematics, computer science, and their applications. It is sponsored by the Dutch Government through the Netherlands Organization for the Advancement of Pure Research (Z.W.0.).

Abstract Writing Concurrent Object-Oriented Programs

1989

This paper considers a number of ways in which concurrent programs may be expressed within an object-oriented framework. It goes on to describe work investigating the expression of highly parallel programs in a conventional object-oriented language (Smalltalk-80). The relevance of this work to a new parallel object-oriented system is discussed. An implementation of an ‘eager ’ evaluator is described, together with a ‘throttling ’ mechanism capable of limiting the generation of concurrent processes. A system for suspending all processes performing a parallel computation is discussed. Finally, further work in investigating debugging environments for concurrent objectoriented systems is outlined. Concurrent Object-Oriented Systems There has been an increasing interest in recent years in what is called object-oriented programming, accompanied by a diversification of opinion. There seems to be little agreement about what is meant by the term ‘object’, or whether a particular programming ...

PARALLEL OBJECT ORIENTED PROGRAMMING LANGUAGE

During the last decade, Number of research projects and an increasing number of practical applications were aimed at different forms of amalgamation of parallelism with object-orientation. The purpose of this paper is to introduce the general concept of parallel object oriented programming language concern with basic need of combination of two independent and powerful paradigms, current design issues that are related to the integration of parallelism and inheritance, an approach that minimize inheritance anomaly and results framework which provide easy and efficient use of multiple inheritances. Also, it presents that how parallelism is an extension to the traditional object oriented programming language. System and languages that support parallelism to traditional object-oriented programming are also described in this paper.

A parallel object-oriented language with inheritance and subtyping

Sigplan Notices, 1990

This paper shows that inheritance and subtyping can be introduced advante.geously into a parallel objectoriented language, POOLI. These concepts are clearly distinguished, because they deal with different aspects of progr amming. In this way several problems traditionally adhering to inheritance can be solved. The language POOL-I is a parallel object-oriented language with a strong typing scheme which includes genericity and dynamic binding. A novel and particularly powerful mechanism offers the possibility to manipulate and analyse types dynamically.

Describing the Semantics of Parallel Programming Languages using Shared Data Abstractions

Programming language semantics can be de ned in a variety of ways, one of which is to use an information structure model based on abstract data types. We have previously used this technique to provide de nitions of semantic aspects of sequential languages and have demonstrated how it lends itself to the automatic generation of prototype language implementations from the formal model. However, di culties arise when any attempt is made to describe a parallel programming language using this technique, because of the need to regulate access to abstract data types in a parallel environment. This motivates the consideration of alternative techniques for the de nition of the information structures used in the underlying model. The notion of shared data abstractions provides such an alternative and this paper explores some of the issues in using shared data abstractions in the de nition of the semantics of parallel programming languages.

A formal foundation for concurrent object oriented programming

1995

In this thesis we d e v elop a novel, implicitly typed {calculus for objects, by viewing these as extendible case{functions rather than as extendible records. This novel view, allows to unify the concepts of function, object and process into one concept, that of a functional entity which is self contained and provided with a uniform communication protocol. We use this view to give a formal foundation for both sequential and concurrent object oriented languages. In the later case, we v i e w objects as case{functions communicating asynchronously over unboundedchannels. Our calculus is a conservative extension of the polymorphic type system of Aiken and Wimmers, to include case{function extension and lazy data types. Its soundness is proven with respect to a semantical model based on ideals. Subtyping and case{ function extension play a central role in our modeling of generalization/specialization and inheritance. To model self and self{class, our calculus includes recursive types. These are also necessary to model streams and provide the theoretical background for passing streams themselves as messages. We use higher order streams to express mobile systems. For the study of mobile systems we additionally devise a network calculus on the top of the lambdacalculus. The implicitly typed {calculus is accompanied with a decidable type inference algorithm, which always delivers the least type of a term (if this exists). An implementation of this algorithm was written in Common Lisp. Particular thanks to Alexander Aiken, for our fruitful dialogue about his type system and his support in my own extensions, to Cli Jones for showing me how objects can be modeled in {calculus and to Robin Milner for int r o d u c i n g m e i n {calculus and mobility. Thanks go also to all of my colleagues from our department, especially to Ketil St len, Gheorghe Stef anescu, Cornel Klein, Max Fuchs, Franz Regensburger and Bernhard Reus for their comments and interest in my work. On a personal note, I would like to thank my parents for their love and support. A nal and special thank{you to my wife Anca, for reminding me of the better things in life and for believing in me when I didn't. De nition 1.2 Pervading methods of organization 16] In apprehending the real world, people constantly employ three methods of organization, which pervade all of their thinking: The di erentiation of experience into particular objects and their attributes { e.g. when they distinguish between a tree and its size or spatial relations to other objects. The distinction between whole objects and their component parts { e.g. when they contrast a tree with its component branches. The formation of and the distinction between di erent classes of objects { e.g. when they form the class of all stones and distinguish between them. 2 De nition 1.3 Association 39] An association is a union or connection of ideas. 2 By capturing the problem domain content, structural decomposition is very stable to future changes. This is the reason why it plays a central role in all of the OO methodologies. However, this modeling is incomplete, because it ignores the functional and the temporal aspects of a system. It only describes which are the entities involved in a system but not what are they doing and when.

An open structural operational semantics for an object-oriented calculus with thread classes

2005

In this report we present a multithreaded class-calculus featuring thread classes. From an observational point of view, considering classes as part of a component makes instantiation a possible interaction between component and environment or observer. For thread classes it means that a component may create external activity, which influences what can be observed. The fact that cross-border instantiation is possible requires that the connectivity of the objects needs to be incorporated into the semantics. We extend our prior work not only by adding thread classes, but also in that thread names may be communicated, which means that the semantics needs explicitly account for the possible acquaintance of objects with threads. This report formalizes a calculus featuring thread classes, i.e., its syntax, type system, and operational semantics. We furthermore discuss observational aspects of thread classes.

The ClassiC programming language and design of synchronous concurrent object oriented languages

Journal of Systems Architecture, 1998

Many real-time systems make use of concurrent programming systems and are often designed using object oriented design methods. Concurrent Object Oriented Languages (COOLS) are a class of programming language that integrates the facilities of concurrent and object oriented programming in an integrated rather than orthogonal manner. With the increasing interest in the use of object oriented languages such as C++ for the programming of embedded and real-time systems COOLs seem to be a natural candidate for such tasks. Several COOLs have been described in the literature which address the requirements of concurrent programming, inter-process communication (IPC) and synchronisation in various dierent ways. This paper discusses one such language, ClassiC, and examines the approach to this problem taken in its design. In particular, it is shown that the features of ClassiC allow derivation of active classes from other active classes. It is shown how this property can be used to overcome some of the problems associated with synchronous IPC schemes while maintaining the advantages of them and how the use of the asynchronous IPC model allows ver-i®cation of synchronisation and deadlock properties based on the use of CSP methods.