concepts of programming languages - janus · 2018. 1. 11. · janus joris ten tusscher, joris...
TRANSCRIPT
![Page 1: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/1.jpg)
[Faculty of ScienceInformation and Computing
Sciences]1
Concepts of programming languagesJanus
Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Casvan der Rest, Orestis Melkonian
![Page 2: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/2.jpg)
[Faculty of ScienceInformation and Computing
Sciences]2
Janus
A reversible programming language.
Not turing complete!
![Page 3: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/3.jpg)
[Faculty of ScienceInformation and Computing
Sciences]3
Reversibility
Every statement can be reverted. No history is stored.
x += y * 3
x -= y * 3
![Page 4: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/4.jpg)
[Faculty of ScienceInformation and Computing
Sciences]3
Reversibility
Every statement can be reverted. No history is stored.
x += y * 3
x -= y * 3
![Page 5: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/5.jpg)
[Faculty of ScienceInformation and Computing
Sciences]4
Injective functions
Reversible languages can only compute injective functions.
∀x, y : f(x) = f(y) =⇒ x = y (1)
Every output has only a single input.
h(x) = (x, g(x)) (2)
![Page 6: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/6.jpg)
[Faculty of ScienceInformation and Computing
Sciences]4
Injective functions
Reversible languages can only compute injective functions.
∀x, y : f(x) = f(y) =⇒ x = y (1)
Every output has only a single input.
h(x) = (x, g(x)) (2)
![Page 7: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/7.jpg)
[Faculty of ScienceInformation and Computing
Sciences]5
Turing completeness
Turing machines can compute non-injective functions.
Reversible languages are not turing complete.
Reversible Turing complete.
![Page 8: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/8.jpg)
[Faculty of ScienceInformation and Computing
Sciences]6
Turing machines
Infinite tape of memory
Finite set of states
Transition function
▶ Current state▶ Current symbol on tape▶ Write symbol▶ Move tape pointer▶ Next state
![Page 9: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/9.jpg)
[Faculty of ScienceInformation and Computing
Sciences]7
Turing machines
Forward deterministic: given any state and tape, there is atmost one transition from that state.
Backward deterministic: given any state and tape, there isat most one transition to that state.
P is the class of forward deterministic turing machines, NPof non-deterministic turing machines.
Reversible Turing complete: a language that can simulateforward and backward deterministic turing machines.
![Page 10: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/10.jpg)
[Faculty of ScienceInformation and Computing
Sciences]8
What do reversible languages compute
Given a forward deterministic turing machine thatcomputes f(x),
There exists a reversible turing machine that computesx → (x, f(x)).
More memory.
![Page 11: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/11.jpg)
[Faculty of ScienceInformation and Computing
Sciences]9
Motivation
What are reasons to pursue logically reversiblecomputations?
▶ More heat efficient circuitry
▶ Quantum computing
![Page 12: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/12.jpg)
[Faculty of ScienceInformation and Computing
Sciences]9
Motivation
What are reasons to pursue logically reversiblecomputations?
▶ More heat efficient circuitry
▶ Quantum computing
![Page 13: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/13.jpg)
[Faculty of ScienceInformation and Computing
Sciences]9
Motivation
What are reasons to pursue logically reversiblecomputations?
▶ More heat efficient circuitry
▶ Quantum computing
![Page 14: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/14.jpg)
[Faculty of ScienceInformation and Computing
Sciences]10
A small detour
Let’s venture into the realm of physics:
Imagine a set of balls bouncing around in a frictionlessworld:
![Page 15: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/15.jpg)
[Faculty of ScienceInformation and Computing
Sciences]11
Bouncing balls 1
Figure 1: bouncing balls in a world without friction
All information about both future and past configurations ispreserved.
![Page 16: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/16.jpg)
[Faculty of ScienceInformation and Computing
Sciences]11
Bouncing balls 1
Figure 1: bouncing balls in a world without friction
All information about both future and past configurations ispreserved.
![Page 17: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/17.jpg)
[Faculty of ScienceInformation and Computing
Sciences]12
Bouncing balls 2
Figure 2: bouncing balls in the real world
Information about past configurations gets lost as the ballslose velocity.
![Page 18: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/18.jpg)
[Faculty of ScienceInformation and Computing
Sciences]12
Bouncing balls 2
Figure 2: bouncing balls in the real world
Information about past configurations gets lost as the ballslose velocity.
![Page 19: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/19.jpg)
[Faculty of ScienceInformation and Computing
Sciences]13
This information is not truely lost, however.
Entropy of the system must increase or remain equal. Inthis case, heat is dissipated into the environment.
![Page 20: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/20.jpg)
[Faculty of ScienceInformation and Computing
Sciences]13
This information is not truely lost, however.
Entropy of the system must increase or remain equal. Inthis case, heat is dissipated into the environment.
![Page 21: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/21.jpg)
[Faculty of ScienceInformation and Computing
Sciences]14
Landauer’s principle
In computers, information about past states is often lost (orerased) as computations are carried out.
However, the second law of thermodynamics still applies.
![Page 22: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/22.jpg)
[Faculty of ScienceInformation and Computing
Sciences]14
Landauer’s principle
In computers, information about past states is often lost (orerased) as computations are carried out.
However, the second law of thermodynamics still applies.
![Page 23: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/23.jpg)
[Faculty of ScienceInformation and Computing
Sciences]15
This means that circuits must dissipate some amount ofheat as information gets destroyed.
Commonly refered to as Landauer’s principle.
![Page 24: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/24.jpg)
[Faculty of ScienceInformation and Computing
Sciences]15
This means that circuits must dissipate some amount ofheat as information gets destroyed.
Commonly refered to as Landauer’s principle.
![Page 25: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/25.jpg)
[Faculty of ScienceInformation and Computing
Sciences]16
Reversible computing
Figure 3: Billiard ball AND-gate
This is also refered to as a Toffoli gate.
![Page 26: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/26.jpg)
[Faculty of ScienceInformation and Computing
Sciences]16
Reversible computing
Figure 3: Billiard ball AND-gate
This is also refered to as a Toffoli gate.
![Page 27: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/27.jpg)
[Faculty of ScienceInformation and Computing
Sciences]17
Toffoli gates are mainly theoretical
But ciruits with energy dissipation below the vonNeumann-Landauer limit have been built.
![Page 28: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/28.jpg)
[Faculty of ScienceInformation and Computing
Sciences]17
Toffoli gates are mainly theoretical
But ciruits with energy dissipation below the vonNeumann-Landauer limit have been built.
![Page 29: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/29.jpg)
[Faculty of ScienceInformation and Computing
Sciences]18
Quantum Computing
How does all this apply to quantum computing?
The underlying physical processes of quantum computingare actually fundamentally reversible.
![Page 30: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/30.jpg)
[Faculty of ScienceInformation and Computing
Sciences]18
Quantum Computing
How does all this apply to quantum computing?
The underlying physical processes of quantum computingare actually fundamentally reversible.
![Page 31: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/31.jpg)
[Faculty of ScienceInformation and Computing
Sciences]19
Similar to the frictionless billiard ball gate, informationcannot leave a quantum circuit in the form of heat.
The system is said to be locigally reversible.
![Page 32: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/32.jpg)
[Faculty of ScienceInformation and Computing
Sciences]20
Logical reversiblity
Since all logical information is preserved in such systems, itis imposible to carry out certain computations.
Specifically, it is impossible to carry out computations thatreach a logical state that can also be reached through otherpaths of computation.
Notice the similarity with reversible Turing machines!
![Page 33: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/33.jpg)
[Faculty of ScienceInformation and Computing
Sciences]20
Logical reversiblity
Since all logical information is preserved in such systems, itis imposible to carry out certain computations.
Specifically, it is impossible to carry out computations thatreach a logical state that can also be reached through otherpaths of computation.
Notice the similarity with reversible Turing machines!
![Page 34: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/34.jpg)
[Faculty of ScienceInformation and Computing
Sciences]21
Variables
▶ All global variables▶ Default value▶ Modification operators▶ Only support for +=, -= and ˆ=
![Page 35: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/35.jpg)
[Faculty of ScienceInformation and Computing
Sciences]22
Limitations
▶ There is no *= and /=▶ A variable that occurs on the left can not occur on the
right in the same statement▶ x-=x is forbidden
a b c
procedure maina += 3b -= a + 4c += a - b
![Page 36: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/36.jpg)
[Faculty of ScienceInformation and Computing
Sciences]23
Procedures
▶ No parameters▶ There exists a version with parameters▶ Pass by reference
aprocedure main
call funcall g
procedure fa += 3
procedure ga -= 5a += 1
![Page 37: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/37.jpg)
[Faculty of ScienceInformation and Computing
Sciences]24
Loop
from e1 dos1
loops2
until e2
▶ e1 is true only the first iteration, false every otheriteration
▶ s1 is executed after e1 on every iteration▶ e2 is false until the last run▶ s2 is executed if e2 is true, continue to e1
![Page 38: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/38.jpg)
[Faculty of ScienceInformation and Computing
Sciences]25
Loop
ab
procedure mainfrom a = 0 do
a += 1loop
b += auntil a = 10
The result is { a = 10, b = 45 }
![Page 39: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/39.jpg)
[Faculty of ScienceInformation and Computing
Sciences]26
Example
fib: calculates (n+1)-th and (n+2)-th Fibonacci number.
procedure fibif n = 0 then
x1 += 1 ; -- 1st Fib nr is 1.x2 += 1 ; -- 2nd Fib nr is 1.
elsen -= 1call fibx1 += x2x1 <=> x2
fi x1 = x2
![Page 40: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/40.jpg)
[Faculty of ScienceInformation and Computing
Sciences]27
Example
fib: calculates (n+1)-th and (n+2)-th Fibonacci number.
procedure fibif n = 0 then
x1 += 1 ; -- 1st Fib nr is 1.x2 += 1 ; -- 2nd Fib nr is 1.
elsen -= 1call fibx1 += x2x1 <=> x2
fi x1 = x2 ; -- Why do we need this?
▶ Q: How do we calculate the inverse?
![Page 41: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/41.jpg)
[Faculty of ScienceInformation and Computing
Sciences]27
Example
fib: calculates (n+1)-th and (n+2)-th Fibonacci number.
procedure fibif n = 0 then
x1 += 1 ; -- 1st Fib nr is 1.x2 += 1 ; -- 2nd Fib nr is 1.
elsen -= 1call fibx1 += x2x1 <=> x2
fi x1 = x2 ; -- Why do we need this?
▶ Q: How do we calculate the inverse?
![Page 42: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/42.jpg)
[Faculty of ScienceInformation and Computing
Sciences]28
Example
fib: calculates (n+1)-th and (n+2)-th Fibonacci number.
procedure fibif n = 0 then
x1 += 1 ; -- 1st Fib nr is 1.x2 += 1 ; -- 2nd Fib nr is 1.
elsen -= 1call fibx1 += x2x1 <=> x2
fi x1 = x2 ; -- Used for inverting the if-statement.
![Page 43: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/43.jpg)
[Faculty of ScienceInformation and Computing
Sciences]29
Example
fib: calculates (n+1)-th and (n+2)-th Fibonacci number.
procedure fibInverseif x1 = x2 then
x2 -= 1 ; -- 2nd Fib nr is 1.x1 -= 1 ; -- 1st Fib nr is 1.
elsex1 <=> x2x1 -= x2call fibInversen += 1
fi n = 0
![Page 44: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/44.jpg)
[Faculty of ScienceInformation and Computing
Sciences]30
Example
fib: calculates (n+1)-th and (n+2)-th Fibonacci number.
▶ Q: What does the inverse of fib do?
procedure fibInverseif x1 = x2 then
x2 -= 1 ; -- 2nd Fib nr is 1.x1 -= 1 ; -- 1st Fib nr is 1.
elsex1 <=> x2x1 -= x2call fibInversen += 1
fi n = 0
![Page 45: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/45.jpg)
[Faculty of ScienceInformation and Computing
Sciences]31
Relational Programming
Injective Programming Relational Programmingr-Turing Complete Turing Complete
backwards deterministic backwards non-deterministic
restricted language constructs search procedure (aka resolution)
![Page 46: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/46.jpg)
[Faculty of ScienceInformation and Computing
Sciences]32
Prolog basics
A logic program consists of facts and rules.
parent(alice, joe).parent(bob, joe).parent(joe, mary).parent(gloria, mary).
ancestor(X, Y) :- parent(X, Y).ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
descendant(X, Y) :- ancestor(Y, X).
![Page 47: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/47.jpg)
[Faculty of ScienceInformation and Computing
Sciences]33
The user can then query the runtime system, as such:
?- ancestor(alice, mary).true.
?- parent(X, mary).X = joe;X = gloria.
?- ancestor(X, mary), not parent(X, mary).X = alice;X = bob.
![Page 48: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/48.jpg)
[Faculty of ScienceInformation and Computing
Sciences]34
Demonstration - Type Predicate
Assume a type predicate, relating expressions with types:
type(expr, t) :- ... .
You would normally use it to perform type-checking:
?- type(1 + 1, int).true.?- type(1 + 1, string).false.
![Page 49: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/49.jpg)
[Faculty of ScienceInformation and Computing
Sciences]34
Demonstration - Type Predicate
Assume a type predicate, relating expressions with types:
type(expr, t) :- ... .
You would normally use it to perform type-checking:
?- type(1 + 1, int).true.?- type(1 + 1, string).false.
![Page 50: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/50.jpg)
[Faculty of ScienceInformation and Computing
Sciences]35
But you can also perform type-inference:
?- type(1 + 1, Type).Type = int.?- type("hello world", Type).Type = string.?- type(λx:int -> x, Type).Type = int -> int.?- type(λx -> x, int -> Type).Type = int.
![Page 51: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/51.jpg)
[Faculty of ScienceInformation and Computing
Sciences]36
Going in the reverse direction, you can generate programs:
?- type(Expr, int).Expr = 1;Expr = 2;...Expr = 1 + 1;Expr = 1 + 2;...Expr = if true then 1 else 1;...
Of course, this does not make much sense without asufficiently expressive type system.
![Page 52: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/52.jpg)
[Faculty of ScienceInformation and Computing
Sciences]37
Demonstration - Relational Interpreter
Assume you have implemented a relational interpreter:
eval(program, result) :- ... .
?- eval(map (+ 1) [1 2 3], Result).Result = [2 3 4].
Non-deterministic constructs are also natural:
?- eval(amb [a, b, c], Result).Result = a;Result = b;Result = c.
![Page 53: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/53.jpg)
[Faculty of ScienceInformation and Computing
Sciences]37
Demonstration - Relational Interpreter
Assume you have implemented a relational interpreter:
eval(program, result) :- ... .
?- eval(map (+ 1) [1 2 3], Result).Result = [2 3 4].
Non-deterministic constructs are also natural:
?- eval(amb [a, b, c], Result).Result = a;Result = b;Result = c.
![Page 54: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/54.jpg)
[Faculty of ScienceInformation and Computing
Sciences]38
But you can also perform program synthesis by-example:
?- eval(F 1, 2),...,eval(map F [1 2 3], [2 3 4])....F = λx -> x + 1;...F = λx -> x - 10 + 10 + 1;...
Quine generation is straightforward:
?- eval(Quine, Quine)....Quine = (λa -> a ++ show a) "(λa -> a ++ show a) ";...
![Page 55: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/55.jpg)
[Faculty of ScienceInformation and Computing
Sciences]38
But you can also perform program synthesis by-example:
?- eval(F 1, 2),...,eval(map F [1 2 3], [2 3 4])....F = λx -> x + 1;...F = λx -> x - 10 + 10 + 1;...
Quine generation is straightforward:
?- eval(Quine, Quine)....Quine = (λa -> a ++ show a) "(λa -> a ++ show a) ";...
![Page 56: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/56.jpg)
[Faculty of ScienceInformation and Computing
Sciences]39
Logic Programming IRL
In practice, bi-directionality breaks with the usage ofextra-logical features:
▶ Variable projection: inspecting values at runtime▶ Cut (!): disables backtracking in certain places▶ Assert/Retract: dynamically insert/remove facts
MiniKanren is a more recent logic programming language,which avoids extra-logical features (as much as possible).
![Page 57: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/57.jpg)
[Faculty of ScienceInformation and Computing
Sciences]39
Logic Programming IRL
In practice, bi-directionality breaks with the usage ofextra-logical features:
▶ Variable projection: inspecting values at runtime▶ Cut (!): disables backtracking in certain places▶ Assert/Retract: dynamically insert/remove facts
MiniKanren is a more recent logic programming language,which avoids extra-logical features (as much as possible).
![Page 58: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/58.jpg)
[Faculty of ScienceInformation and Computing
Sciences]40
Higher abstraction
▶ Relational programming, as well as functionalprogramming, both belong to the declarative paradigm.
▶ They both focus on what a program does, rather thanhow.
QuestionHow can we combine them, to get the best of both worlds?
![Page 59: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/59.jpg)
[Faculty of ScienceInformation and Computing
Sciences]40
Higher abstraction
▶ Relational programming, as well as functionalprogramming, both belong to the declarative paradigm.
▶ They both focus on what a program does, rather thanhow.
QuestionHow can we combine them, to get the best of both worlds?
![Page 60: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/60.jpg)
[Faculty of ScienceInformation and Computing
Sciences]41
Hanus: Janus embedded in Haskell
In our research project, we use TemplateHaskell andQuasiQuotation to embed Janus in Haskell:
[hanus| procedure encode(im :: Image, ret :: [Byte]) {-- Janus commands with antiquotation
}|]encode :: Image -> [Byte]encode = call encodedecode :: [Byte] -> Imagedecode = uncall encode
Come and check out our poster in de Vagant!
![Page 61: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/61.jpg)
[Faculty of ScienceInformation and Computing
Sciences]42
Thanks! Questions?
From CodeComics.com, modified.
![Page 62: Concepts of programming languages - Janus · 2018. 1. 11. · Janus Joris ten Tusscher, Joris Burgers, Ivo Gabe de Wolff, Cas van der Rest, Orestis Melkonian [Faculty of Science Information](https://reader036.vdocument.in/reader036/viewer/2022071513/61337995dfd10f4dd73b1cb2/html5/thumbnails/62.jpg)
[Faculty of ScienceInformation and Computing
Sciences]43
References
Axelsen, Holger Bock, and Robert Glück. “What do reversibleprograms compute?.” FoSSaCS. 2011. Yokoyama, Tetsuo, andRobert Glück. “A reversible programming language and itsinvertible self-interpreter.” Proceedings of the 2007 ACMSIGPLAN symposium on Partial evaluation andsemantics-based program manipulation. ACM, 2007.