Turning a functional data type into a concurrent programming language

Author(s):  
Enno Scholz
2021 ◽  
Vol 178 (3) ◽  
pp. 229-266
Author(s):  
Ivan Lanese ◽  
Adrián Palacios ◽  
Germán Vidal

Causal-consistent reversible debugging is an innovative technique for debugging concurrent systems. It allows one to go back in the execution focusing on the actions that most likely caused a visible misbehavior. When such an action is selected, the debugger undoes it, including all and only its consequences. This operation is called a causal-consistent rollback. In this way, the user can avoid being distracted by the actions of other, unrelated processes. In this work, we introduce its dual notion: causal-consistent replay. We allow the user to record an execution of a running program and, in contrast to traditional replay debuggers, to reproduce a visible misbehavior inside the debugger including all and only its causes. Furthermore, we present a unified framework that combines both causal-consistent replay and causal-consistent rollback. Although most of the ideas that we present are rather general, we focus on a popular functional and concurrent programming language based on message passing: Erlang.


2011 ◽  
Vol 314-316 ◽  
pp. 2152-2157
Author(s):  
Huan Gu

This document explains and demonstrates how to construct JDF data agent tools on .NET Linq platform. This Agent has the ability to create a Job, to add Nodes to an existing Job, and to modify existing Nodes. It is based on the structure of JDF standard and the definition of markup, and packages the node of each layer and its complicated parameters and data type into the object, forming a programming language model that is based on JDF markup object, and reducing the complexity of developing the printing digital process software basing-on JDFXML standard, providing a reference for developing the same distributed digital system basing-on XML driver.


1991 ◽  
Vol 1 (1) ◽  
pp. 3-20 ◽  
Author(s):  
F. Warren Burton

AbstractA parallel program may be indeterminate so that it can adapt its behavior to the number of processors available.Indeterminate programs are hard to write, understand, modify or verify. They are impossible to debug, since they may not behave the same from one run to the next.We propose a new construct, a polymorphic abstract data type called an improving value, with operations that have indeterminate behavior but simple determinate semantics. These operations allow the type of indeterminate behavior required by many parallel algorithms.We define improving values in the context of a functional programming language, but the technique can be used in procedural programs as well.


1996 ◽  
Vol 6 (2) ◽  
pp. 127-139 ◽  
Author(s):  
Nicoletta Sabadini ◽  
Sebastiano Vigna ◽  
Robert F. C. Walters

In this paper, we propose a new and elegant definition of the class of recursive functions, which is analogous to Kleene's definition but differs in the primitives taken, thus demonstrating the computational power of the concurrent programming language introduced in Walters (1991), Walters (1992) and Khalil and Walters (1993).The definition can be immediately rephrased for any distributive graph in a countably extensive category with products, thus allowing a wide, natural generalization of computable functions.


Author(s):  
V. M. Dhivya Shri ◽  
K. Reshma

Transactional memory (TM) promises to simplify concurrent programming. Language-based constructs allow programmers to denote atomic regions declaratively. Its implementations operate by tracking loads and stores to memory and by detecting concurrent conflicts. TM allows programmers to write simpler programs that are composable and deadlock-freeThis essay presents remarkable similarities between transactional Memory and garbage collection. The connections are fascinating in their own right, and they let us better stand one technology by thinking about the corresponding issues for the other.


Sign in / Sign up

Export Citation Format

Share Document