"Reversible Primer" Posts
This series of posts introduces the important concepts of reversible programming, using diagrams and analogies, and building the concepts up from basic primitives.
-
Reversible Programming Primer: Introduction
Over the past few years, I’ve been doing a lot of personal hobby research into reversible computing. Studying reversible computing has been almost like having to learn programming from the ground up again, and the lack of resources has meant that I have had to come up with my own mental models and analogies for understanding reversible programming concepts. So I thought that it might be worthwhile to share some of that hard-won intuition so that anyone else looking into the topic might have an easier time getting a grip on it. This is the first in a series of posts discussing some of the basic concepts and programming primitives of reversible computing. In this post, I will be explaining what reversible computing is and some high-level concepts of how it can be used for computation.
-
Reversible Programming Primer: Assignment
Assignment as it is generally understood cannot exist in a reversible programming language. However, assignment as a form of initialization is essential for writing computer programs in general. And so, reversible programming languages will need to introduce new concepts of initialization to serve the role of assignment operators, which could be called “reversible assignment” operators. In this second post on reversible programming, I will be going over some of the most useful types of reversible assignment operators that can be defined.
-
Reversible Programming Primer: Basic Control Flow
In reversible programming languages, many of the fundamental concepts of control flow from traditional programming languages break down. All familiar forms of conditionals and looping allow for programs to effectively erase the history of their own operation, making it impossible to tell whether or not particular branches were taken to reach a particular result. In this third post on reversible programming, I will be going over the reversible counterparts of these control structures and showing how they can be used to implement some basic, familiar programming patterns.
-
Reversible Programming Primer: Backtracking Control Flow
So far in this series, reversible computation has introduced a lot of restrictions on how you can write code. However, reversible programs are also capable of some very unique functionality that is simply impossible without imposing the constraint of reversibility. In this fourth post on reversible programming, we will finally be justifying the name “reversible computing” by exploring how reversible programming languages can allow programmers to “run code backwards” and all of the unique things this feature allows you to accomplish.
- •
- 1
- •