Question

From the Reversible Computing FAQ:

Achieving the maximum possible computational performance for a given rate of bit dissipation generally requires explicit reversibility not only at the lowest level, but at all levels of computing--in devices, circuits, architectures, languages, and algorithms (a strongly conjectured, but not yet formally proven result-call it Frank's Law).

As I understand it, energy is lost is generated when bits are zeroed. Heat production can be reduced if the software and hardware platform have the ability to reverse logical operations.

Is there any programming platform (library, runtime, language, and compiler) that supports reversible computing?

Was it helpful?

Solution

Yes, there are some reversible programming languages, at least in research.

I'm also intersted in this field, and I have a collection of few pointers. These two papers are pretty cool:

Those ones I haven't read yet (but are in my todo list) and seem interesting:

There's also this thread on hacker news.

There's a richer literature on bidirectional transformations (of code, models, data structure, etc.), that is to some extend related to reversible computing.

OTHER TIPS

As far as I understand, for truly reversible computing, we'll need to run algorithms on a reversible computer. Just quoting the following link:

Reversible Computer : A computer in which all chips and circuits perform reversible functions with no transfer of heat to or from their surroundings. In the 1990s, a group at MIT built preliminary hardware proving such “adiabatic” computing possible.

Ref: http://energy.mit.edu/news/energy-efficient-computing/

There are various implementations of reversible parsers in Prolog and other languages. Because Prolog allows reversible computations, it is possible to implement an interpreter for the Janus programming language in Prolog.

energy is lost is generated when bits are zeroed

Any irreversible process (i.e. process that lost information) accompanies energy dissipation. For example, the x^2 function is not reversible since it is not a bijection, to implement this function, you should either

  • erase some information and dissipate a certain amount of energy,
  • or implement (x, 0) -> (x, x^2) instead.

Is there any programming platform (library, runtime, language, and compiler) that supports reversible computing?

NiLang is an open source, embedded domain specific reversible programming language in Julia. This eDSL can be used for programming language level automatic differentiation and its performance is good.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top