A Quine ( quine , angolul quine ) egy számítógépes program , amely a forrásszöveg pontos másolatát adja ki . Ugyanakkor azok a programok, amelyek külső adatokat használnak (fájlból kiolvassák a programszöveget, beírják a billentyűzetről stb.), nem számítanak quineknek. Ráadásul az a "program", amely egyáltalán nem tartalmaz kódot (a degenerált eset), nem számít quine-nak.
Charles Weatherell " Etudes for Programmers " című könyvében szigorúbb feltétel fogalmazódik meg: a program nem használhat olyan trükköket, amelyek lehetővé teszik a betöltő vagy az értelmező memóriájában tárolt forráskód elérését. Ezért a Quines BASIC és Forth nyelven nem teljesen őszinte. 10 LISTSOURCE TYPE
A kifejezést Willard Van Orman Quine (1908-2000 ) amerikai logikusról és filozófusról nevezték el , aki a közvetett önreferencia alapos tanulmányozásával foglalkozott .
A Quines bármely Turing-teljes programozási nyelvben lehetséges – Kleene rekurziós tételének következményeként . A Quine-ötletet először Paul Bratley ( Eng. Bratley, Paul ) és Jean Millo ( Eng. Millo, Jean ) írta le a «Computer Recreations; Önreprodukáló automaták, Szoftver – Gyakorlat és tapasztalat, 2. szám (1972), p. 397-400. Bratley azután kezdett érdeklődni az önreprodukáló programok iránt, miután az 1960-as években Edinburgh -ben látta az első ilyen programot az Atlas Autocode programozási nyelven , amelyet Hamish Dewar tanár és kutató írt .
Íme a program forráskódja:
%KEZDŐDIK !EZ EGY ÖNREPRODUKÁLÓ PROGRAM %ROUTINESPEC R R SZIMBÓLUM NYOMTATÁSA(39) R SZIMBÓLUM NYOMTATÁSA(39) ÚJ SOR %CAPTION %END~ %CAPTION %PROGRAMVÉGE~ %RUTINER %PRINTTEXT ' %KEZDŐDIK !EZ EGY ÖNREPRODUKÁLÓ PROGRAM %ROUTINESPEC R R SZIMBÓLUM NYOMTATÁSA(39) R SZIMBÓLUM NYOMTATÁSA(39) ÚJ SOR %CAPTION %END~ %CAPTION %PROGRAMVÉGE~ %RUTINER %PRINTTEXT ' %END %PROGRAM VÉGEAz n - edrendű Quine for egy olyan program, amely úgy jeleníti meg a kódot , hogy a kód futtatása megjeleníti a kódot . Ebben az esetben a kód az eredeti program kódját jeleníti meg a képernyőn.
A programozási nyelvek listájának láncindexe egy olyan kód a nyelvben , amely az összes kód egymás után lefutásakor a nyelvben lévő kód tetszőleges kódot ad ki a nyelven . Ugyanakkor a lépések eredményeként generált nyelvű kód az eredeti kódot a nyelven jeleníti meg .
Yusuke Endo japán programozó 2013-ban megalkotta a Ruby programozási nyelvben való indításhoz egy lánckinet (a definíció szerint azonban az algoritmus ciklikussága miatt, ha minden nyelven vannak kódok, akkor elindíthatja a végrehajtást. ciklus bármelyikéből). A Quine programozási nyelvei ábécé sorrendben vannak elrendezve. 2018-ra 128-ra emelte a Quine nyelveinek számát [1] .
Yusuke Endo egy pszeudokint is készített Rubyban, amely pszeudoanimációval jeleníti meg a szövegét (adott időközönként új karakterkombinációkat rajzol a konzolra).
Ezenkívül Tupper önreferenciális képlete a Quine egyfajta matematikai változatának tekinthető - egy egyenlőtlenség, amelynek igazsága a sík egy bizonyos területén ugyanazt a képletet rajzolja.