quines—programming your way back to where you were
DESCRIPTION
My 2013-03-05 Riviera.rb quines talk slides. I'm afraid there's not much left without the speech and live demos. Quines are programs (or, more generally, concepts) that reproduce themselves. During this talk we explored how they were possible, what they could look like, how to generate them and how to generalize them,TRANSCRIPT
![Page 1: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/1.jpg)
Programming your wayback to where you were
Riviera.rb5 March 2013
Jean-Baptiste Mazon@jbmazon
![Page 2: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/2.jpg)
Introduction
● What● Cheats● Hacks● Language features
![Page 3: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/3.jpg)
A quine is a computer program which takes no input and produces a copy of its own source code as its only output.
The standard terms for these programs in the computability theory and computer science literature are self-replicating programs, self-reproducing programs, and self-copying programs.
![Page 4: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/4.jpg)
Well-known pattern
D
R
Y
![Page 5: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/5.jpg)
Well-known pattern
Do
Repeat
Yourself
![Page 6: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/6.jpg)
IOCCC 1994: smr
![Page 7: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/7.jpg)
IOCCC 1994: smr
(categorized: Worst Abuse of the Rules)
![Page 8: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/8.jpg)
The recursive aproach
(live demo)
![Page 9: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/9.jpg)
ASCII quine
(live demo)
![Page 10: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/10.jpg)
Generic quine
(but it's still ASCII-based)
(live demo)
![Page 11: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/11.jpg)
A brief math digression
● Fixed-point theorem● Cool functions to fix
– print source
– interpret
– compile
– gzip source
![Page 12: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/12.jpg)
Quines
![Page 13: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/13.jpg)
Quines
![Page 14: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/14.jpg)
Quines
![Page 15: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/15.jpg)
Quine
![Page 16: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/16.jpg)
Quine
● “Yields falsehood when preceded by its quotation” yields falsehood when preceded by its quotation.
![Page 17: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/17.jpg)
Quine
● “Yields falsehood when preceded by its quotation” yields falsehood when preceded by its quotation.
● quine “hello”.→ hello “hello”.
![Page 18: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/18.jpg)
Terminology
● code● data● intron
![Page 19: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/19.jpg)
Bootstrapping
![Page 20: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/20.jpg)
Multiquines
![Page 21: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/21.jpg)
Examples
![Page 22: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/22.jpg)
Examples
● (λx.xx) (λx.xx)
![Page 23: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/23.jpg)
Examples
● (λx.xx) (λx.xx)● #!/bin/sh
cat $0
![Page 24: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/24.jpg)
Examples
● (λx.xx) (λx.xx)● #!/bin/sh
cat $0● #!/bin/cat
![Page 25: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/25.jpg)
Examples
● (λx.xx) (λx.xx)● #!/bin/sh
cat $0● #!/bin/cat● puts(s = <<e, s, 'e')
puts(s = <<e, s, 'e')e
![Page 26: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/26.jpg)
Examples
● (λx.xx) (λx.xx)● #!/bin/sh
cat $0● #!/bin/cat● puts(s = <<e, s, 'e')
puts(s = <<e, s, 'e')e
● Q
![Page 27: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/27.jpg)
Other examples
![Page 28: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/28.jpg)
Final thoughts
● incompleteness● trusting trust● Quine Central● backup● introspection● anything else?
![Page 29: Quines—Programming your way back to where you were](https://reader034.vdocuments.site/reader034/viewer/2022052622/5592de5f1a28abfa3b8b478b/html5/thumbnails/29.jpg)
References
● Wikipedia● David Madore's quine page● C2● Russ Cox's “Zip Files All The Way Down”● Dan Piponi's “Quine Central”