Fault-Tolerant Protocols Using Fault-Tolerance Programming Languages

Author(s):  
Vincenzo De Florio

The programming language itself is the focus of this chapter: Fault-tolerance is not embedded in the program (as it is the case e.g. for single-version fault-tolerance), nor around the language (through compilers or translators); on the contrary, faulttolerance is provided through the syntactical structures and the run-time executives of fault-tolerance programming languages. Also in this case a significant part of the complexity of dependability enforcement is moved from each single code to the architecture, in this case the programming language. Many cases exist of fault-tolerance programming languages; this chapter proposes a few of them, considering three cases: Object-oriented languages, functional languages, and hybrid languages. In particular it is discussed the case of Oz, a multi-paradigm programming language that achieves both transparent distribution and translucent failure handling.

2021 ◽  
Author(s):  
◽  
Radu Muschevici

<p>Multiple dispatch uses the run time types of more than one argument to a method call to determine which method body to run. While several languages over the last 20 years have provided multiple dispatch, most object-oriented languages still support only single dispatch - forcing programmers to implement multiple dispatch manually when required. This thesis presents an empirical study of the use of multiple dispatch in practice, considering six languages that support multiple dispatch. We hope that this study will help programmers understand the uses and abuses of multiple dispatch; virtual machine implementors optimise multiple dispatch; and language designers to evaluate the choice of providing multiple dispatch in new programming languages.</p>


2021 ◽  
Author(s):  
◽  
Radu Muschevici

<p>Multiple dispatch uses the run time types of more than one argument to a method call to determine which method body to run. While several languages over the last 20 years have provided multiple dispatch, most object-oriented languages still support only single dispatch - forcing programmers to implement multiple dispatch manually when required. This thesis presents an empirical study of the use of multiple dispatch in practice, considering six languages that support multiple dispatch. We hope that this study will help programmers understand the uses and abuses of multiple dispatch; virtual machine implementors optimise multiple dispatch; and language designers to evaluate the choice of providing multiple dispatch in new programming languages.</p>


1987 ◽  
Vol 16 (230) ◽  
Author(s):  
Ole Lehrmann Madsen

Programming languages that support the object-oriented perspective on programming may be divided into two groups. One group of languages originating from Simula follows the Algol tradition with respect to block structure, static name binding and compile-time type checking. Another group of languages originating from Smalltalk is more in the style of the Lisp tradition with a flat set of definitions (classes), dynamic name binding and run-time type checking. The purpose of this paper is to analyze the role of block structure in object-oriented languages. It will be demonstrated that block structure is useful from both a conceptual and technical viewpoint.


2007 ◽  
Vol 18 (06) ◽  
pp. 1441-1452
Author(s):  
SHENG YU ◽  
QING ZHAO

In this paper, SC-expressions are developed, based on automata theory, for specifying synchronization constraints in parallel object-oriented languages. The predecessor of SC-expressions, the synchronization expressions, was introduced in the ParC parallel programming language in the early nineties [19]. However, ParC is not an object-oriented language and also a number of basic features of synchronization expressions are inadequate for object-oriented languages. SC-expressions are developed for object-oriented environment. They are different from synchronization expressions in basic ideas and assumptions. Here we describe the basic ideas of SC-expressions and their applications in object-oriented languages. We also study the problem of inheritance of the SC-expressions.


2008 ◽  
Vol 18 (03) ◽  
pp. 411-432 ◽  
Author(s):  
BORIS MEJÍAS ◽  
PETER VAN ROY

Fault-tolerance and lookup consistency are considered crucial properties for building applications on top of structured overlay networks. Many of these networks use the ring topology for the organization or their peers. The network must handle multiple joins, leaves and failures of peers while keeping the connection between every pair of successor-predecessor correct. This property makes the maintenance of the ring very costly and temporarily impossible to achieve, requiring periodic stabilization for fixing the ring. We introduce the relaxed-ring topology that does not rely on a perfect successor-predecessor relationship and it does not need a any periodic maintenance. Leaves and failures are considered as the same type of event providing a fault-tolerant and self-organizing maintenance of the ring. Relaxed-ring's limitations with respect to failure handling are formally identified, providing strong guarantees to develop applications on top of the architecture. Besides permanent failures, the paper analyses temporary failures and false suspicions caused by broken links, which are often ignored.


2010 ◽  
Vol 20 (3-4) ◽  
pp. 303-352 ◽  
Author(s):  
BRUNO C. D. S. OLIVEIRA ◽  
JEREMY GIBBONS

AbstractDatatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the form of type constructors such as ‘list of’. Most approaches to DGP are developed in pure functional programming languages such as Haskell. We argue that the functional object-oriented language Scala is in many ways a better choice. Not only does Scala provide equivalents of all the necessary functional programming features (such as parametric polymorphism, higher-order functions, higher-kinded type operations, and type- and constructor-classes), but it also provides the most useful features of object-oriented languages (such as subtyping, overriding, traditional single inheritance, and multiple inheritance in the form of traits). Common Haskell techniques for DGP can be conveniently replicated in Scala, whereas the extra expressivity provides some important additional benefits in terms of extensibility and reuse. We illustrate this by comparing two simple approaches in Haskell, pointing out their limitations and showing how equivalent approaches in Scala address some of these limitations. Finally, we present three case studies on how to implement in Scala real DGP approaches from the literature: Hinze's ‘Generics for the Masses’, Lämmel and Peyton Jones's ‘Scrap your Boilerplate with Class’, and Gibbons's ‘Origami Programming’.


2021 ◽  
Author(s):  
◽  
Frank Schmager

<p>GO is a new object-oriented programming language developed at Google by Rob Pike, Ken Thompson, and others. GO has the potential to become a major programming language. GO deserves an evaluation.  Design patterns document reoccurring problems and their solutions. The problems presented are programming language independent. Their solutions, however, are dependent on features programming languages provide. In this thesis we use design patterns to evaluate GO. We discuss GO features that help or hinder implementing design patterns, and present a pattern catalogue of all 23 Gang-of-Four design patterns with GO specific solutions. Furthermore, we present GoHotDraw, a GO port of the pattern dense drawing application framework JHotDraw. We discuss design and implementation differences between the two frameworks with regards to GO.</p>


2015 ◽  
Vol 6 (2) ◽  
pp. 6
Author(s):  
Cristian González García ◽  
Jordán Pascual Espada B. ◽  
Cristina Pelayo G-Bustelo ◽  
Juan Manuel Cueva Lovelle

Hace unos meses Apple presentó un nuevo lenguaje de programación para sus plataformas: Swift. Con Swift, Apple pretende atraer a los programadores de los lenguajes de programación basados en la sintaxis de C++ y darles una mayor abstracción, que con Objective-C, para que sea más fácil programar para las plataformas de Apple. Por estas razones, se hace necesario contrastar lo pretendido por Apple y realizar un estudio del lenguaje de programación a fin de contrastar su objetivo. Para ello, se hicieron dos evaluaciones, una cualitativa y otra cuantitativa, con el propósito de verificar en qué medida Swift es un avance respecto a Objective-C.DThe Future of Apple: Swift Versus Objective-CABSTRACTFew months ago, Apple presented a new programming language: Swift. With Swift, Apple pretends to attract the programmers of the programming languages based on C++ syntax and gives them a higher abstraction than with Objective-C for being easier to programme to Apple’s platforms. For these reasons, it is necessary to contrast what is intended by Apple and do a study of the programming language to ascertain their goal. For this purpose, we did two evaluations, firstly a qualitative evaluation and after, a quantitative evaluation to verify in how much Swift is an advance with respect to Objective-C.Keywords: computer languages, computer programming, functional programming, object oriented programming, programming, software.


Author(s):  
Bernie Garrett

Prolog is a logic based programming language, and was developed in the early 1970s and is a practical programming language particularly useful for knowledge representation and artificial intelligence (AI) applications. Prolog is different from many common computer languages in that it is not a procedural language (such as Basic, C, or Java). It is an interpreted logic based declarative language and as such has no loops, jumps, type declarations or arrays, and no fixed control constructs. In the past this has led to the impression that Prolog is a restricted language, useful only for highly specialized programming tasks by enthusiasts (Callear, 1994; Krzysztof, 1997). However, this is not the case and modern versions of Prolog are well equipped and versatile, and can be used for any programming task. The latest generations of the language (e.g., Visual Prolog) can also be integrated into more common object oriented languages.


Sign in / Sign up

Export Citation Format

Share Document