Quine

Définition, exemples et bonnes pratiques

À retenir

  • La sortie du programme est strictement identique à son code source.
  • Il ne prend aucune information en entrée (pas de lecture de fichier).
  • C'est une démonstration de la puissance d'expression d'un langage de programmation.

Un quine est un programme informatique dont la particularité est d'afficher sur l'écran l'intégralité de son propre code source lorsqu'on l'exécute. C'est un peu comme un artiste peintre qui réaliserait un autoportrait de lui-même en train de peindre cet autoportrait précis.

Étymologie

Le mot provient du nom de Willard Van Orman Quine, un philosophe et logicien américain. Il a beaucoup travaillé sur les paradoxes de l'autoréférence, notamment avec des phrases qui se décrivent elles-mêmes sans utiliser de sujet direct.

Exemples d'usage

  • Un script Python qui utilise des fonctions de formatage pour afficher une chaîne de caractères contenant le reste de sa structure.
  • Un programme en langage C qui n'utilise aucune lecture de fichier externe pour se reproduire dans le terminal.

Cas d'usage

Bien que sans utilité pratique immédiate dans le développement de logiciels commerciaux, le quine est un défi de logique très populaire chez les développeurs (code golf) et sert de base théorique dans l'étude des systèmes autoreproducteurs et des compilateurs.

Bonnes pratiques

Pour qu'un quine soit jugé « authentique » par la communauté, il ne doit pas « tricher » : le programme n'a pas le droit d'ouvrir son propre fichier source sur le disque dur pour le lire. Il doit générer son texte uniquement par sa logique interne.

Synonymes

programme autoreproducteur code autoréférentiel

Conseil

Pour débuter, essayez de comprendre le concept de la « citation » : la difficulté principale est de faire en sorte que le programme imprime les guillemets et les variables qu'il utilise lui-même pour stocker son code.

Questions fréquentes

Est-ce qu'un quine est un virus informatique ?

Non, un quine est inoffensif. Si les virus utilisent le concept d'autoreproduction pour se propager, le quine se contente d'afficher son texte sans chercher à s'installer ailleurs.

Peut-on créer un quine dans n'importe quel langage ?

Oui, tant que le langage est considéré comme Turing-complet, il est théoriquement possible d'y écrire un quine.