Reversible computing from a programming language perspective

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...

Celý popis

Uložené v:
Podrobná bibliografia
Vydané v:Theoretical computer science Ročník 953; s. 113429
Hlavní autori: Glück, Robert, Yokoyama, Tetsuo
Médium: Journal Article
Jazyk:English
Vydavateľské údaje: Elsevier B.V 10.04.2023
Predmet:
ISSN:0304-3975, 1879-2294
On-line prístup:Získať plný text
Tagy: Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
Popis
Shrnutí: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. •Overview of principles and main ideas of reversible computing.•Coherent explanatory framework from a programming language perspective.•Five major hypotheses of programmable reversible computing systems.•Function injectivization, program reversibilization, compute-uncompute are elaborated.•Cornerstones of clean reversible languages and relevant metaprograms are presented.
ISSN:0304-3975
1879-2294
DOI:10.1016/j.tcs.2022.06.010