Most programmers spend their time deciding what a computer should do next. In a less familiar corner of computer science, another question shapes the whole design: after a computation finishes, can the machine retrace its work and recover where it began?
Janus makes that question part of programming itself. This research language supports execution in both directions, turning the relationship between an operation and its inverse into something a programmer can use deliberately. The University of Copenhagen’s research group provides background and experimental interpreters. [1]
An answer that keeps its past
Consider an ordinary integer. Start with six, add four, and the result is ten. Knowing the operation lets you subtract four and recover six. Now imagine replacing an unknown number with zero. The final zero alone cannot tell you what was there before: many possible beginnings lead to the same ending.
This is the intuition behind logical reversibility. A reversible transformation preserves enough information to identify its predecessor. Reversible languages organize updates and control flow around that constraint, rather than allowing information to disappear casually. [2]
A language with an inverse
Janus includes reversible updates, branches and loops. Its history reaches back to work by Christopher Lutz and Howard Derby, followed by research involving Robert Glück and Tetsuo Yokoyama. The interest lies in the programming discipline: a valid construction needs to make sense when its direction is reversed. [1]
A procedure can be executed through its inverse. In the language, this is expressed through an “uncall”: the procedure’s operations are inverted and their sequence is reversed. A reversal of two updates therefore undoes the second update before undoing the first. [4]
Why a branch needs two signposts
Ordinary branching chooses a route from a condition at the entrance. Returning backwards raises another question: which route brought the program here? Janus addresses this with conditions at both ends of a branch. Its loop rules also constrain entry and exit, helping preserve the information needed to follow the computation in reverse. These conditions are part of what makes reversible programming demanding. [4]
Research still moving in 2026
There is an important distinction between reversing a completed computation and reversing each individual step of its formal execution model. Ivan Lanese and Germán Vidal examined that distinction in A Reversible Semantics for Janus, published in the RC 2026 proceedings on 17 July.
Their work identifies information loss in an earlier model of execution through small steps and presents a reversible alternative for well-formed Janus programs. It is a useful reminder that an appealing idea still needs precise rules underneath it, especially when researchers consider debugging or future language extensions. [3]
The connection to energy
Reversibility also reaches into physics. Landauer’s principle connects logically irreversible information manipulation, including erasure, with an entropy increase elsewhere in the physical system. Bennett’s discussion explains why logically reversible transformations are interesting when considering the thermodynamic limits of computing. [5]
Actual electricity use depends on the hardware and its physical operation. Running a reversible-language interpreter on an ordinary laptop supplies no automatic energy-saving guarantee. The research connects software design to possible reversible hardware; measuring a real benefit requires examining the complete implementation. [2]
A different programming instinct
For a curious programmer, Janus offers an unusual exercise: design a calculation while keeping track of what every change preserves. Start with arithmetic, then ask what happens to the information when a program chooses a path. That small shift of attention opens a surprisingly deep question about how machines compute.
Sources and further reading
- University of Copenhagen PIRC: Janus language and experimental interpreters
- Glück and Yokoyama: Reversible computing from a programming language perspective (2023)
- Lanese and Vidal: A Reversible Semantics for Janus, RC 2026 (published 17 July 2026)
- Lanese and Vidal: openly readable manuscript, arXiv version 2 (26 February 2026)
- Charles H. Bennett / IBM Research: Notes on Landauer’s principle, reversible computation, and Maxwell’s Demon (2003)
Editorial note
Original explanatory writing prepared with AI assistance and reviewed against the primary sources linked above on 18 October 2026. Historical research dates are identified in the text. No source photographs, diagrams or program listings have been reproduced. This feature is not a hands-on test or an independent benchmark.
Keep exploring
Explore how movement and control work together in the SPPIRO pipe-inspection robot, or browse more Technology stories.
The conversation
Leave a little thought.
Different perspectives are welcome. Keep it kind, stay on topic, and respect each other.
Reader comments
Loading the conversation…