Bootstrap (compilateur)

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir Bootstrap.

En informatique, le terme bootstrapping décrit les techniques nécessaires à l'écriture d'un compilateur (ou d'un assembleur) dans le langage de programmation cible qu'il doit compiler.

On peut se demander comment résoudre ce paradoxe de l'œuf et de la poule : si l'on a besoin d'un compilateur pour le langage X afin d'obtenir un compilateur pour le langage X, comment le premier compilateur a été écrit ?

  • Mettre en œuvre un interprèteur ou un compilateur pour le langage X en langage Y.
  • Un autre interprèteur ou compilateur a été écrit pour X dans un langage Y. C'est ainsi que Scheme est souvent bootstrappé.
  • Des versions initiales du compilateur sont écrites dans un sous-ensemble de X pour lequel il existait un autre compilateur. C'est ainsi que des sur-ensembles de Java sont bootstrappés.
  • Le compilateur de X est croisé d'une autre architecture pour laquelle il existe un compilateur pour X. C'est ainsi que l'on porte généralement vers d'autres plate-formes les compilateurs pour le C.
  • En écrivant le compilateur optimisant X, puis en le compilant à la main à partir de son code source (probablement d'une manière non optimisée) et en tournant le code obtenu pour obtenir le compilateur optimisant.

Les méthodes pour distribuer des compilateurs en code source incluent la fourniture d'un bytecode portable du compilateur, afin de bootstrapper le système de compilation du compilateur avec lui-même.

NELIAC a été le premier langage à fournir un tel bootstrap. PL/I a été le premier langage commercial à le faire.
Aujourd'hui, une large proportion des langages de programmation sont bootstrappés, dont C, Scheme, Ocaml, Pascal, Modula-2, Oberon et plus.

[modifier] Voir aussi

[modifier] Lien externe