Janus: a reversible imperative programming language
Janus is likely the very first reversible programming language, designed by Christopher Lutz and Howard Derby in 1986. It was later rediscovered by Robert Glück and Tetsuo Yokoyama after which it became a central research topic in the PIRC group. Since then several versions of the language have been developed. We refer to the publications below for more details.
The original version by Lutz and Derby (called Janus86) is a "core" language with simple reversible updates, branches (if-then-else-fi) and loops. An online interpreter for Janus86 can be found below.
There exist, furthermore, a interpreters with extension for Janus86. The interpreter was first implemented by Claus Skou Nielsen and Michael Budde but is extended at maintained by Michael Kirkedal Thomsen. This is more experimental but you are welcome to play.
If there are any problems woth or extensions to either of the interpreters, you are welcome to contact Michael Kirkedal Thomsen (kirkedal@acm.org).
Articles
2010
In Proceedings
2012
2011
[3] | Mogensen, T. A. Partial evaluation of the reversible language janus. In Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation, pages 23-32, ACM, PEPM '11 , 2011. |
[4] | Axelsen, H. B. Clean Translation of an Imperative Reversible Programming Language. In Compiler Construction. CC '11, pages 142-161, Springer-Verlag, LNCS 6601, 2011. |
2010
[5] | Clementsen, P. J.; Axelsen, H. B. and Glück, R. Reversible Coroutines. In Nordic Workshop in Programming Theory '10, Proceedings, 2010. |
2008
2007
Misc
1986
[8] | Lutz, C. and Derby, H. Janus: A Time-reversible Language. |