Интересно, что компилируется, что происходит, когда вы компилируете? Я имею в виду, да, вы нажимаете «compile» или вводите текст в консоли, но что он делает в «фоне»?
Во-первых, компилятор "лекс" исходный код. Это означает, что он преобразует источник в последовательность «токенов». Токены - это последовательности букв, цифр и символов, которые имеют значение для компилятора.
Далее компилятор "разбирает" последовательность токенов с первого шага. Это означает, что компилятор проверяет, чтобы источник соответствовал правилам ( грамматика ) языка программирования.
Затем компилятор выполняет синтаксический анализ , чтобы создать представление источника для определения семантического значения источника. На этом этапе компилятор создает синтаксическое дерево .
Наконец, компилятор сгенерирует вывод , который фиксирует семантическое значение источника в целевом представлении (будь то машинный код, промежуточный язык, такой как CIL от Microsoft или другой язык программирования).
Краткие сведения см. Википедия . Подробные сведения см. В книге драконов (эту книгу должен изучать каждый изучающий информатику).
См. это
По сути, магические эльфы и феи превращают читаемый человеком код в машинный код.
или это .
The Dragon Book, оригинальный источник для построения компиляторов.
Очень краткий обзор - компилятор анализирует ваш код на наличие ошибок и затем преобразует его в байт или машинный код.
Для лучшего обзора я прочитал бы статью в Википедии о компиляторах:
http://en.wikipedia.org/wiki/Compiler
Компиляция переводит исходный код в машинный код. Обычно компилятор (или интерпретатор) генерирует промежуточный код, иногда называемый байтовым кодом, который выполняется на виртуальной машине (так компилируется Java). Байт-код преобразуется виртуальной машиной в машинно-специфичный код, который работает на конкретной архитектуре, на которую вы ориентируетесь. Весь этот процесс можно считать «компиляцией»