Quine (programa)
# Quine (programa)

En programación, un quine (pronunciado "kwain") es un programa (un tipo de Metaprogramación) que produce su código fuente como su salida única. Para diversión, algunos hackers intentan desarrollar el quine más corto posible en cualquier lenguaje de programación. Simplemente abriendo el archivo fuente del programa e imprimiendo el contenido se considera hacer trampa.

El término quine fue acuñado por Douglas Hofstadter, en su obra Gödel, Escher, Bach: un Eterno y Grácil Bucle, en honor a Willard Van Orman Quine, que hizo un estudio extensivo de autoreferencia indirecta y sugirió un caso famoso de paradoja sin autoreferencia directa: "Da como resultado un enunciado falso si es precedido por su cita" da como resultado un enunciado falso si es precedido por su cita.

## Ejemplos

### C

Otro (este debe ser una sola línea, y supone que el compilador ejecuta en una máquina que usa el código ASCII):

O aún más corto (aunque no es código C99 de ISO correcto):

### C#

Nota: Debe ser una sola línea. Los saltos de línea se agregaron para hacerlo más fácil de leer.

### Python

Otro:

Y otro que comparte los caracteres últimos con la anterior (solamente para mostrar que asignaciones múltiples no salva mecanografía):

### Perl

El más corto conocido:

Y una combinación de Perl y script de shell:

### Pascal

Comentario 1: En el caso de una implementación DOS de Pascal, la salida de la pantalla puede parecer bastante desorientadora. En ese caso, sería apropiado sustituir ambas instancias de "#10" con "#13#10" e insertar un CR antes del LF al fin de la primera línea.

Comentario 2: El programa se puede hace todavía más corto porque ambas instancias de ") end." se pueden sustituir con ")end." (aunque le hace difícil de leer). Se puede acortar más por borrar ambas instancias de "#10" y escribiendo el programa en una sola línea en vez de dos líneas. Después de los cambios, el programa parecerá como sigue:

Otro (Borland Pascal and Free Pascal):

Otro (Borland Pascal and Free Pascal):

### Brainfuck

Nota: Debe ser una sola línea. Los cortes de línea se agregaron para hacerlo más fácil de leer.

### PL/I

Nota: Este es el quine de PL/I más pequeño posible que compila usando el compilador OS PL/I V2.3.0, pero requiere un margen izquierdo de 1 y la opción COMPILE para parar una cantidad significativo de errores):

