eli5: In bootstrapping, how is the compiler written in the other langauge such that it can then compile the original language i.e. the bootstrap compiler?

993 viewsOtherTechnology

So I’ve already posted this question on Stack Overflow, but I wanted to ask it here as well, since I am not sure if they will simply say it is a duplicate (even though the other answers from other questions don’t answer what I asked in a way that helps me).

[https://stackoverflow.com/questions/78539284/in-bootstrapping-how-is-the-compiler-written-in-the-other-langauge-such-that-it](https://stackoverflow.com/questions/78539284/in-bootstrapping-how-is-the-compiler-written-in-the-other-langauge-such-that-it)

So I was wondering if there were direct examples people could give of how the bootstrap compiler is actually written such that it actually represents the language you want to write in another language, because my head can’t wrap itself around it and most sources are fairly vague and just assume you know how it is done.

Hell, maybe if people try and explain it in a metaphorical way and walk me through how the bootstrap compiler is written to represent language X in language Y, that might help too, since I am not a programmer, but this concept is stressing me out from knowing I don’t understand it.

In: Technology

17 Answers

Anonymous 0 Comments

Compilers are translators. They convert a program in a source language to a target language. The compiler itself is a program, written in some language.

Suppose that you already have a compiler for language A, going to assembly code which the computer does understand. You can write any program in language A, compile it to assembly, and run it. Cool.

We need a compiler for a new language called B. There is no compiler for language B going to assembly code. We can’t run programs written in B.

What we’ll do is use A to write a basic compiler for B. It doesn’t need all the features, just the bare minimum to be useful. Great, now we can compile simple programs written in B to assembly.

Here’s the bootstrapping “trick”: we can now write a program in B that translates from B to assembly code. We can use the compiler we just wrote to translate it into assembly! And now we have a compiler, written in B, that compiles B to assembly!

It’s all about chaining compilers to create new programs to translate from one language to another.

You are viewing 1 out of 17 answers, click here to view all answers.