242 research outputs found
Programming Languages for Distributed Computing Systems
When distributed systems first appeared, they were programmed in traditional sequential languages, usually with the addition of a few library procedures for sending and receiving messages. As distributed applications became more commonplace and more sophisticated, this ad hoc approach became less satisfactory. Researchers all over the world began designing new programming languages specifically for implementing distributed applications. These languages and their history, their underlying principles, their design, and their use are the subject of this paper. We begin by giving our view of what a distributed system is, illustrating with examples to avoid confusion on this important and controversial point. We then describe the three main characteristics that distinguish distributed programming languages from traditional sequential languages, namely, how they deal with parallelism, communication, and partial failures. Finally, we discuss 15 representative distributed languages to give the flavor of each. These examples include languages based on message passing, rendezvous, remote procedure call, objects, and atomic transactions, as well as functional languages, logic languages, and distributed data structure languages. The paper concludes with a comprehensive bibliography listing over 200 papers on nearly 100 distributed programming languages
Delta-based Verification of Software Product Families
The quest for feature- and family-oriented deductive verification of software product lines resulted in several proposals. In this paper we look at delta-oriented modeling of product lines and combine two new ideas: first, we extend Hähnle & Schaefer’s delta-oriented version of Liskov’s substitution principle for behavioral subtyping to work also for overridden behavior in benign cases. For this to succeed, programs need to be in a certain normal form. The required normal form turns out to be achievable in many cases by a set of program transformations, whose correctness is ensured by the recent technique of abstract execution. This is a generalization of symbolic execution that permits reasoning about abstract code elements. It is needed, because code deltas contain partially unknown code contexts in terms of “original” calls. Second, we devise a modular verification procedure for deltas based on abstract execution, representing deltas as abstract programs calling into unknown contexts. The result is a “delta-based” verification approach, where each modification of a method in a code delta is verified in isolation, but which overcomes the strict limitations of behavioral subtyping and works for many practical programs. The latter claim is substantiated with case studies and benchmarks
Distributed C++ : Design and implementation
Distributed C++ is a learning tool developed to investigate distributed programming using the object paradigm. An extension is designed for C++, to enable the use of C++ in programming distributed applications. A user transparent interface is designed and implemented to create and manipulate remote objects on a network of workstations running the Unix operating system. The concept of remote classes is introduced and remote object invocation is implemented over a remote procedure call mechanism
Context-aware Trace Contracts
The behavior of concurrent, asynchronous procedures depends in general on the
call context, because of the global protocol that governs scheduling. This
context cannot be specified with the state-based Hoare-style contracts common
in deductive verification. Recent work generalized state-based to trace
contracts, which permit to specify the internal behavior of a procedure, such
as calls or state changes, but not its call context. In this article we propose
a program logic of context-aware trace contracts for specifying global behavior
of asynchronous programs. We also provide a sound proof system that addresses
two challenges: To observe the program state not merely at the end points of a
procedure, we introduce the novel concept of an observation quantifier. And to
combat combinatorial explosion of possible call sequences of procedures, we
transfer Liskov's principle of behavioral subtyping to the analysis of
asynchronous procedures
Corporate influence and the academic computer science discipline. [2: MIT]
Prosopography of a major academic center for computer science, with a focus
on corporatization and corruption
- …