Quine (informática)


Un quine es un programa de computadora que no recibe entradas y produce una copia de su propio código fuente como única salida. Los términos estándar para estos programas en la teoría de la computabilidad y la literatura informática son "programas autorreplicantes", "programas autorreproductores" y "programas autocopiantes".

Un quine es un punto fijo de un entorno de ejecución, cuando el entorno de ejecución se ve como una función que transforma los programas en sus resultados. Quines son posibles en cualquier lenguaje de programación completo de Turing , como consecuencia directa del teorema de recursión de Kleene . Por diversión, los programadores a veces intentan desarrollar el quine más corto posible en cualquier lenguaje de programación dado .

El nombre "quine" fue acuñado por Douglas Hofstadter , en su libro de divulgación científica Gödel, Escher, Bach , en honor al filósofo Willard Van Orman Quine (1908-2000), quien realizó un extenso estudio de la autorreferencia indirecta , y en particular para la siguiente expresión productora de paradoja, conocida como paradoja de Quine :

La idea de los autómatas que se reproducen a sí mismos surgió desde los albores de la informática, si no antes. John von Neumann teorizó sobre ellos en la década de 1940. Más tarde, el artículo de Paul Bratley y Jean Millo "Computer Recreations: Self-Reproducing Automata" los discutió en 1972. [1] Bratley se interesó por primera vez en los programas de autorreproducción después de ver el primer programa conocido escrito en Atlas Autocode en Edimburgo en la década de 1960 . por el profesor e investigador de la Universidad de Edimburgo Hamish Dewar .

El requisito de "descargar fuente" de la Licencia Pública General de Affero se basa en la idea de un quine. [2]

En general, el método utilizado para crear un quine en cualquier lenguaje de programación consiste en tener, dentro del programa, dos piezas: (a)  código utilizado para realizar la impresión real y (b)  datos que representan la forma textual del código. El código funciona utilizando los datos para imprimir el código (lo que tiene sentido ya que los datos representan la forma textual del código), pero también utiliza los datos, procesados ​​de forma sencilla, para imprimir la representación textual de los datos en sí.


La salida de un quine es exactamente la misma que su código fuente. (Tenga en cuenta que el resaltado de sintaxis demostrado por el editor de texto en la mitad superior de la imagen no afecta la salida del quine).