Quine (programmering)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 3. februar 2021; checks kræver 2 redigeringer .

Quine ( quine , engelsk  quine ) er et computerprogram, der udsender en nøjagtig kopi af sin kildetekst . Samtidig betragtes programmer, der bruger eksterne data (læser programteksten fra en fil, indtaster den fra tastaturet og så videre) ikke som quines. Derudover betragtes et "program", der slet ikke indeholder nogen kode (det degenererede tilfælde), ikke som en quine.

I bogen " Etudes for Programmers " af Charles Weatherell er der formuleret en mere streng betingelse: Programmet må ikke bruge tricks, der giver adgang til dets kildekode, der er gemt i loaderens eller tolkens hukommelse. Derfor er Quines 10 LISTi BASIC  og i ForthSOURCE TYPE -sproget  ikke helt ærlige.

Udtrykket blev opkaldt efter den amerikanske logiker og filosof Willard Van Orman Quine ( 1908-2000 ) , som var engageret i en dybdegående undersøgelse af indirekte selvreference . 

Historie

Quines er mulige i ethvert Turing-komplet programmeringssprog - som en konsekvens af Kleenes rekursionsteorem . Quine-ideen blev først beskrevet af Paul Bratley ( Eng.  Bratley, Paul ) og Jean Millo ( Eng.  Millo, Jean ) i «Computer Recreations; Selvreproducerende automater, Software - Practice & Experience, Issue 2 (1972), s. 397-400. Bratley blev interesseret i selvreproducerende programmer efter at have set det første sådanne program skrevet i Atlas Autocode- programmeringssproget i Edinburgh i 1960'erne af lærer og forsker Hamish Dewar . 

Her er kildekoden til dette program:

%BEGYNDE !DETTE ER ET SELVREPRODUCERENDE PROGRAM %RUTINESPEC R R UDSKRIV SYMBOL(39) R UDSKRIV SYMBOL(39) NY LINJE %CAPTION %END~ %BILDtekst %ENDOFPROGRAM~ %ROUTINER %PRINTTEXT ' %BEGYNDE !DETTE ER ET SELVREPRODUCERENDE PROGRAM %RUTINESPEC R R UDSKRIV SYMBOL(39) R UDSKRIV SYMBOL(39) NY LINJE %CAPTION %END~ %BILDtekst %ENDOFPROGRAM~ %ROUTINER %PRINTTEXT ' %ENDE %ENDOFPROGRAM

Variationer

Quine n -te orden

En n . ordens Quine for er et program, der viser kode, således at kørsel af koden viser kode . I dette tilfælde viser koden koden for det originale program på skærmen.

Chain Quine

En kæde quine for en liste over programmeringssprog er sådan en kode på sproget , at når alle koderne køres på skift, udsender koden på sproget en vilkårlig kode på sproget . Samtidig viser koden på det sprog, der genereres som et resultat af trinene , den originale kode på sproget .

Den japanske programmør Yusuke Endo i 2013 skabte en kæde-quine til at starte i Ruby -programmeringssproget (men i henhold til definitionen, på grund af algoritmens cykliske karakter, hvis der er koder på alle sprog, kan du starte udførelsen af cykle fra nogen af ​​dem). Programmeringssprog i Quine er arrangeret i alfabetisk rækkefølge. I 2018 bragte han antallet af sprog i denne Quine til 128 [1] .

Andre variationer

Yusuke Endo skabte også en pseudoquine i Ruby, der viser dens tekst ved hjælp af pseudoanimation (tegner nye kombinationer af tegn på konsollen med et givet interval).

Tuppers selvrefererende formel kan også betragtes som en slags matematisk variation af Quine  - en ulighed, hvis sandhedspunkter i et bestemt område af flyet tegner den samme formel.

Se også

Noter

  1. Yusuke Endo kæde kinin kildekode . Dato for adgang: 19. juli 2013. Arkiveret fra originalen 21. august 2013.

Litteratur