Design and Implementation of a Reversible Object-Oriented Programming Language

07/25/2017
by   Tue Haulund, et al.
0

High-level reversible programming languages are few and far between and in general offer only rudimentary abstractions from the details of the underlying machine. Modern programming languages offer a wide array of language constructs and paradigms to facilitate the design of abstract interfaces, but we currently have a very limited understanding of the applicability of such features for reversible programming languages. We introduce the first reversible object-oriented programming language, ROOPL, with support for user-defined data types, class inheritance and subtype-polymorphism. The language extends the design of existing reversible imperative languages and it allows for effective implementation on reversible machines. We provide a formalization of the language semantics, the type system and we demonstrate the computational universality of the language by implementing a reversible Turing machine simulator. ROOPL statements are locally invertible at no extra cost to program size or computational complexity and the language provides direct access to the inverse semantics of each class method. We describe the techniques required for a garbage-free translation from ROOPL to the reversible assembly language PISA and provide a full implementation of said techniques. Our results indicate that core language features for object-oriented programming carries over to the field of reversible computing in some capacity.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/10/2017

A categorical foundation for structured reversible flowchart languages: Soundness and adequacy

Structured reversible flowchart languages is a class of imperative rever...
research
04/12/2018

Design and Implementation of Dynamic Memory Management in a Reversible Object-Oriented Programming Language

The reversible object-oriented programming language (ROOPL) was presente...
research
11/01/2019

Weird Machines as Insecure Compilation

Weird machines—the computational models accessible by exploiting securit...
research
05/31/2019

On the Interaction of Object-Oriented Design Patterns and Programming Languages

Design patterns are distilled from many real systems to catalog common p...
research
12/17/2019

Using Prolog for Transforming XML-Documents

Proponents of the programming language Prolog share the opinion Prolog i...
research
09/13/2023

CRIL: A Concurrent Reversible Intermediate Language

We present a reversible intermediate language with concurrency for trans...

Please sign up or login with your details

Forgot password? Click here to reset