Quine (programozás)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. február 3-án felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

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 . 

Történelem

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ÉGE

Változatok

Quine n -edik rend

Az 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.

Chain Quine

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] .

Egyéb variációk

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.

Lásd még

Jegyzetek

  1. Yusuke Endo lánc kinin forráskódja . Hozzáférés időpontja: 2013. július 19. Az eredetiből archiválva : 2013. augusztus 21..

Irodalom