Radiation-hardened quine (2014)(github.com)
github.com
Radiation-hardened quine (2014)
https://github.com/mame/radiation-hardened-quine
9 comments
Some interesting discussion from when this was first posted in 2014: https://news.ycombinator.com/item?id=7276976
[deleted]
They describe deleting characters, but most radiation causes bit flips, rather than character removal. Good news, this seems to work with a bitflip as well :)
I think the result would be the same no? Assuming the characters are stored in ASCII the result of a single bit flip can only possibly modify one character. Of course this assumes the program is resilient against modification in general and not just deletion (which seems to be the case).
I wouldn’t assume so. A character has a lot of bits. So it kind of depends on how the stream is processed I think.
For people interested, another search phrase for this and more kinds of errors is Immunity-Aware Programming:
https://en.wikipedia.org/wiki/Immunity-aware_programming
Lots of failure modes to consider.
https://en.wikipedia.org/wiki/Immunity-aware_programming
Lots of failure modes to consider.
This link deserve a submission. Here it is : https://news.ycombinator.com/item?id=18849057
Thanks!
I don't get people's fascination with quines. If your language supports at least two ways of quoting strings and some basic regex replacements, you can cook up a quine just by starting with an empty string and using double-cursor functionality in any modern editor.
Is this supposed to be profound? I don't see how this has anything to do with biology or life. It's simply a test of how cleverly you can abuse the syntax of your language.
".replace(/^(.*)/, String.fromCharCode(34) + '$1' + String.fromCharCode(34) + '$1')".replace(/^(.*)/, String.fromCharCode(34) + '$1' + String.fromCharCode(34) + '$1')
"Take the previous string, print it inside double quotes, then print it as is."Is this supposed to be profound? I don't see how this has anything to do with biology or life. It's simply a test of how cleverly you can abuse the syntax of your language.
A quine—in a scripting language—is a https://en.wikipedia.org/wiki/Fixed_point_(mathematics) of the interpreter, which is kind of profound.
A quine in a compiled language isn't anything in particular, though. (I guess you could call it a fixed point of the compiler+target Turing machine, when taken as a single function?)
A quine in a compiled language isn't anything in particular, though. (I guess you could call it a fixed point of the compiler+target Turing machine, when taken as a single function?)
You don’t see how a self-replicating pattern in an abstract context can serve as a model of self-replicating patterns in practical contexts?
Or why studying how different formalisms in language lead to different complexity in constructing such patterns may relate to things like bootstrapping DNA?
Or why studying how different formalisms in language lead to different complexity in constructing such patterns may relate to things like bootstrapping DNA?
I don't see discussions of any of the things you mentioned. I see people falling in love with "clever" code.
Quines can be made straightforward. You have two copies of your code. Copy 2 then prints copy 1 twice, creating the replica of the original 2 copies. That's it. Everything else is trickery dealing with language boilerplate and string escapes.
Similarly, I'm pretty sure the quine above is not generalizable to any language. It's all about Ruby syntax, not some fundamental property of the program.
Quines can be made straightforward. You have two copies of your code. Copy 2 then prints copy 1 twice, creating the replica of the original 2 copies. That's it. Everything else is trickery dealing with language boilerplate and string escapes.
Similarly, I'm pretty sure the quine above is not generalizable to any language. It's all about Ruby syntax, not some fundamental property of the program.
Well, the first life form was just a test of how cleverly you can abuse physics, so yeah.
My fascination with quines comes from various proofs, e.g., the halting problem and Godel's incompleteness theorem which make use of self-referential structures. Also self-referential structures form the basis of many other interesting forms like fractals and replication RNA. Quines are just sort of an initial proof of concept that can be extended into more sophisticated forms.
For people interested in philosophy of soft errors, I'll take this opportunity to plug a paper of mine where I use soft errors to argue that empirical evidence suggests we do not live in a computer simulation (at least not in one ultra-specific type of computer simulation):
https://philpapers.org/archive/ALEATO-6.pdf
https://philpapers.org/archive/ALEATO-6.pdf
Didn't expect to see a PhilPapers link on HN! I liked your paper, definitely gave me something to chew on. I've never given much thought to attempting to falsify the simulation hypothesis in any meaningful way (on account of a general apathy to its oft "contrived" nature that you elude to). However, your thought experiment regarding this supposed x-x' property is quite clever. Now my mind is buzzing...
P.S. I appreciated your reference to Popper in the abstract. It prompted me to take my copy of The Open Society & Its Enemies off the shelf and peruse it for nostalgia's sake. :)
P.S. I appreciated your reference to Popper in the abstract. It prompted me to take my copy of The Open Society & Its Enemies off the shelf and peruse it for nostalgia's sake. :)
Glad to set minds buzzing, it made me smile real wide to read that. I'll have to check out that book you mentioned sometime :)
Interesting! Feels like a metaphor for biological self-replication, which keeps working after minor mutations.
This quine is covered briefly in Yusuke Endoh's talk from RubyConf 2017 https://youtu.be/6K7EmeptEHo?t=1500
The whole talk is awesome if you're interested in this kind of thing in Ruby.
The whole talk is awesome if you're interested in this kind of thing in Ruby.
See also: https://codegolf.meta.stackexchange.com/questions/2140/sandb...
(disclaimer: self-promotion)
(disclaimer: self-promotion)