À retenir
- C'est le fait qu'un outil serve à fabriquer sa propre relève.
- Cela résout le paradoxe de l'œuf et de la poule en informatique.
- C'est une étape symbolique forte pour la maturité d'un langage de programmation.
L'auto-amorçage consiste à utiliser un logiciel pour créer une version plus récente de lui-même. C'est comme si un robot utilisait ses propres mains et ses propres outils pour fabriquer une version améliorée de son propre corps.
Étymologie
Vient du préfixe auto- (soi-même) et du verbe amorcer (démarrer ou préparer un mécanisme). Ce terme est la traduction française du concept anglais de bootstrapping, qui fait référence à l'image humoristique d'une personne essayant de se soulever du sol en tirant sur les lacets de ses propres bottes.
Exemples d'usage
- Le compilateur GCC (utilisé pour le C et le C++) qui est capable de compiler son propre code source pour générer une nouvelle version.
- Le langage Rust, dont le compilateur officiel (rustc) est écrit en Rust et doit donc être compilé par une version précédente de lui-même.
- Le projet PyPy, une version rapide de Python dont l'interprète est écrit en Python.
Cas d'usage
Ce concept est fondamental dans la conception de langages de programmation. Il permet de prouver qu'un langage est suffisamment complet et puissant pour gérer sa propre complexité. On l'utilise aussi pour assurer la portabilité d'un système sur de nouvelles machines.
Bonnes pratiques
Lorsqu'on développe un compilateur auto-amorcé, il est vital de conserver des versions binaires (déjà compilées) fonctionnelles. Si une erreur est introduite dans le code source du nouveau compilateur, on ne pourra plus le transformer en logiciel sans revenir à une version précédente saine.
Synonymes
Antonymes
Conseil
Pour bien comprendre, imaginez que pour construire une machine à café très complexe, vous utilisiez d'abord une petite machine à café rudimentaire pour alimenter en énergie l'usine qui fabrique la grande machine.
Questions fréquentes
Comment fait-on pour le tout premier compilateur ?
On utilise un langage déjà existant (souvent du C ou de l'Assembleur) pour écrire une version très simplifiée du nouveau langage, qui servira ensuite à compiler la version complète.
Est-ce que cela concerne uniquement les compilateurs ?
Principalement, mais le concept s'applique aussi aux systèmes d'exploitation ou aux environnements de développement qui s'auto-gèrent.