Quine (programación)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 3 de febrero de 2021; las comprobaciones requieren 2 ediciones .

Quine ( quine , inglés  quine ) es un programa de computadora que genera una copia exacta de su texto fuente . Al mismo tiempo, los programas que usan datos externos (leer el texto del programa desde un archivo, ingresarlo desde el teclado, etc.) no se consideran quines. Además, un "programa" que no contiene ningún código (el caso degenerado) no se considera un quine.

En el libro " Etudes for Programmers " de Charles Weatherell , se formula una condición más estricta: el programa no debe utilizar trucos que permitan acceder a su código fuente almacenado en la memoria del cargador o intérprete. Por lo tanto, Quines 10 LISTen BASIC  y en el cuartoSOURCE TYPE idioma  no son del todo honestos.

El término lleva el nombre del lógico y filósofo estadounidense Willard Van Orman Quine ( 1908-2000 ) , quien se dedicó a un estudio en profundidad de la autorreferencia indirecta . 

Historia

Quines son posibles en cualquier lenguaje de programación completo de Turing , como consecuencia del teorema de recursión de Kleene . La idea de Quine fue descrita por primera vez por Paul Bratley ( Eng.  Bratley, Paul ) y Jean Millo ( Eng.  Millo, Jean ) en «Computer Recreations; Autómatas autorreproductores, software: práctica y experiencia, número 2 (1972), pág. 397-400. Bratley se interesó en los programas de reproducción automática después de ver el primer programa de este tipo escrito en el lenguaje de programación Atlas Autocode en Edimburgo en la década de 1960 por el profesor e investigador Hamish Dewar . 

Aquí está el código fuente de este programa:

%EMPEZAR !ESTE ES UN PROGRAMA DE AUTOREPRODUCCIÓN %RUTINESPEC R R IMPRIMIR SÍMBOLO(39) R IMPRIMIR SÍMBOLO(39) NUEVA LÍNEA %TÍTULO %FIN~ %TÍTULO %FIN DEL PROGRAMA~ %RUTINADOR %IMPRIMIR TEXTO ' %EMPEZAR !ESTE ES UN PROGRAMA DE AUTOREPRODUCCIÓN %RUTINESPEC R R IMPRIMIR SÍMBOLO(39) R IMPRIMIR SÍMBOLO(39) NUEVA LÍNEA %TÍTULO %FIN~ %TÍTULO %FIN DEL PROGRAMA~ %RUTINADOR %IMPRIMIR TEXTO ' %FINAL %FIN DEL PROGRAMA

Variaciones

Quine orden n

Un Quine de n-ésimo orden es un programa que muestra código tal que al ejecutarlo se muestra código . En este caso, el código muestra el código del programa original en la pantalla.

Cadena Quine

Una cadena quine para una lista de lenguajes de programación es un código en el lenguaje que, cuando todos los códigos se ejecutan a la vez, el código en el lenguaje genera un código arbitrario en el lenguaje . Al mismo tiempo, el código en el idioma generado como resultado de los pasos muestra el código original en el idioma .

El programador japonés Yusuke Endo en 2013 creó una cadena quine para iniciarse en el lenguaje de programación Ruby (sin embargo, según la definición, debido a la naturaleza cíclica del algoritmo, si existen códigos en todos los lenguajes, se puede iniciar la ejecución del ciclo de cualquiera de ellos). Los lenguajes de programación en Quine están ordenados alfabéticamente. Para 2018, elevó el número de idiomas en este Quine a 128 [1] .

Otras variaciones

Yusuke Endo también creó una pseudoquina en Ruby que muestra su texto usando pseudoanimación (dibujando nuevas combinaciones de caracteres en la consola en un intervalo dado).

Además, la fórmula autorreferencial de Tupper puede considerarse una especie de variación matemática de Quine  , una desigualdad cuya verdad apunta en un área determinada del plano dibuja la misma fórmula.

Véase también

Notas

  1. Código fuente de quinina de la cadena Yusuke Endo . Fecha de acceso: 19 de julio de 2013. Archivado desde el original el 21 de agosto de 2013.

Literatura