Bootstrapping (compilers) Article Index for
Bootstrapping
 

Information About

Bootstrapping (compilers)




One may then wonder how the Chicken And Egg problem of creating the compiler was solved: if one needs a compiler for language X to obtain a compiler for language X, how did the first compiler get written? Possible methods include:
  • implementing an Interpreter or Compiler for language X in language Y. Niklaus Wirth reported that he wrote the first Pascal compiler in Fortran .

  • another interpreter or compiler for X has already been written in another language Y; this is how Scheme is often bootstrapped.

  • earlier versions of the compiler were written in a subset of X for which there existed some other compiler; this is how some supersets of Java are bootstrapped.

  • the compiler for X is Cross Compiled from another architecture where there exists a compiler for X; this is how compilers for C are usually ported to other platforms

  • writing the compiler in X; then hand-compiling it from source (most likely in a non-optimized way) and running that on the code to get an optimized compiler. Donald Knuth used this for his WEB Literate Programming system.

  • Methods for distributing compilers in source code include providing a portable Bytecode version of the compiler, so as to ''bootstrap'' the process of compiling the compiler with itself.


The first language to provide such a bootstrap was NELIAC . The first commercial language to do so was PL/I . Today, a large proportion of programming languages are bootstrapped, including Basic , C , Pascal , Factor , Haskell , Modula-2 , Oberon , OCaml , Scheme and more.


SEE ALSO