Вы всегда можете использовать свой любимый компилятор A для написания другого компилятора, скажем, B. В этот B вы добавили некоторые дополнительные функции, поэтому он легко может стать вашим любимым, и вы будете использовать его для написания компилятора C,...
Как тогда начать? В старые времена люди просто заполняли память необработанными числами для прямой интерпретации процессором. Вот почему источник часто называют кодом. Как только минимальный компилятор был запрограммирован таким образом, его можно выполнить для создания другого компилятора, написанного на языке, который он компилирует. Это снова может быть использовано для создания более высокого уровня и так далее.
На самом деле заполнение необработанных кодов инструкций в памяти само по себе можно рассматривать как процесс компиляции нулевого уровня, где человек является компилятором.
Вполне обычно, что компилятор для данного языка написан на том же самом языке. Так обстоит дело, например, с языком программирования Си. Это несколько больше, чем совпадение, потому что тот, кто знает язык достаточно хорошо, чтобы осмелиться написать для него компилятор, вероятно, имеет этот язык в числе своих любимых языков для программирования. Однако это просто типичный случай, в котором нет необходимости, так как существует множество языков на выбор, включая те, которые особенно хороши для создания компиляторов.
person
jmihalicza
schedule
11.07.2013
Numerical machine code (i.e. not assembly code) may be regarded as the lowest-level representation of a compiled and/or assembled computer program
, из статьи, 2-й абзац - person wtsang02   schedule 12.07.2013