Abstract
Software plays a central role in all aspects of reversible computing systems, and a variety of reversible programming languages have been developed. This presentation highlights the principles and main ideas of reversible computing viewed from a programming language perspective with a focus on clean reversible languages. They are the building material for software that can reap the benefits of reversible hardware and interesting in their own right.
Reversible computing is situated within programming languages in general, and the relevant concepts are elaborated, including computability, injectivization and reversibilization. Features representative for many reversible languages are presented, such as reversible updates, reversible iterations, and access to a program's inverse semantics. Metaprogramming methods of particular importance to reversible programming, are introduced, including program inversion and inverse interpretation. Our presentation is independent of a particular language, although primarily the reversible language, Janus, will be used in examples.
Reversible computing is situated within programming languages in general, and the relevant concepts are elaborated, including computability, injectivization and reversibilization. Features representative for many reversible languages are presented, such as reversible updates, reversible iterations, and access to a program's inverse semantics. Metaprogramming methods of particular importance to reversible programming, are introduced, including program inversion and inverse interpretation. Our presentation is independent of a particular language, although primarily the reversible language, Janus, will be used in examples.
| Original language | English |
|---|---|
| Article number | 113429 |
| Journal | Theoretical Computer Science |
| Volume | 953 |
| Number of pages | 26 |
| ISSN | 0304-3975 |
| DOIs | |
| Publication status | Published - 2023 |
Bibliographical note
Funding Information:The presentation has also benefited from the courses “Program Inversion and Reversible Computation” (PIRC) held in various ways since 2004 at the University of Copenhagen and “Special Lecture in Information Science and Technology VII” on reversible computation held 2016–2019 at the University of Tokyo by the first author. The first author would like to thank Yoshihiko Futamura, Masami Hagiya, Akihiko Takano, and Kanae Tsushima for their hospitality in Japan. The second author was supported by JSPS KAKENHI Grant No. 22K11983 and Nanzan University Pache Research Subsidy I-A-2 for the 2022 academic year.
Funding Information:
Many thanks to Markus Holzer and Martin Kutrib for the opportunity to present the talk at RPLA, FM Week, Porto, 2019, and to prepare this written exposition. Special thanks to Keisuke Nakano, Antonina Nepeivoda, and the anonymous reviewers for their useful feedback. It is a pleasure to thank Sergei Abramov, Holger Bock Axelsen, Poul Clementsen, Alexis De Vos, Robin Kaarsgaard, Masahiko Kawabe, Andrei V. Klimov, Torben Mogensen, Kenji Moriyama, and Michael Kirkedal Thomsen for many years of fruitful discussions. The authors also wish to thank all their collaborators, including the students and participants of the “MicroPower” research project [14]. The presentation has also benefited from the courses “Program Inversion and Reversible Computation” (PIRC) held in various ways since 2004 at the University of Copenhagen and “Special Lecture in Information Science and Technology VII” on reversible computation held 2016–2019 at the University of Tokyo by the first author. The first author would like to thank Yoshihiko Futamura, Masami Hagiya, Akihiko Takano, and Kanae Tsushima for their hospitality in Japan. The second author was supported by JSPS KAKENHI Grant No. 22K11983 and Nanzan University Pache Research Subsidy I-A-2 for the 2022 academic year.
Publisher Copyright:
© 2022 The Author(s)
Keywords
- Compute-uncompute
- Function injectivization
- Inverse interpretation
- Metacomputation
- Program inversion
- Program reversibilization
- Reversible computing
- Reversible programming
Cite this
- APA
- Standard
- Harvard
- Vancouver
- Author
- BIBTEX
- RIS