4 ms·
> What if the reversibility of a program was implemented at the function level? Are you finding NiLang? - an embedded domain specific language in Julia for cre
by GiggleLiu 6y ago
> What if the reversibility of a program was implemented at the function level?
Are you finding NiLang? - an embedded domain specific language in Julia for creating reversible functions. Meanwhile, it has one of the best performance in automatic differentiation (AD).
I find reversible programming particularly useful in the reverse mode AD, where reversing the tape is required in order to use intermediate information to compute gradients. The Bennett's time space trade-off is particularly useful. Traditional AD also have something similar called treeverse to trace back states, however, it involves nasty implicit stack operations and can not utilize reversibility. Reversible computing is way more elegant.
- peter_d_sherman 6y agoInteresting! Hadn't heard about NiLang, but will check it out... Update: Looks like the related HN discussion is here: "Nilang.jl – A Reversible Julia DSL": https://news.ycombinator.com/item?id=24743813 https://news.ycombinator.com/item?id=24743813 https://github.com/GiggleLiu/NiLang.jl https://github.com/GiggleLiu/NiLang.jl (Worth it, in my opinion, for the chart showing the "reversed-functions/variables" preceeded by '∂', i.e., ∂x, ∂y, ∂sqxN, etc.) But anyway, NiLang definitely looks interesting!