Книга: Выразительный JavaScript
Компиляция
Компиляция
Мы с вами построили интерпретатор. Во время интерпретации он работает с представлением программы, созданным парсером.
Компиляция – добавление ещё одного шага между парсером и запуском программы, которая превращает в программу в нечто, что можно выполнять более эффективно, путём проделывания большинства работы заранее. К примеру, в хорошо организованных языках при каждом использовании переменной очевидно, к какой переменной обращаются, даже без запуска программы. Это можно использовать, чтобы не искать переменную по имени каждый раз, когда к ней обращаются, а напрямую вызывать её из какой-то заранее определённой области памяти.
По традиции компиляция также превращает программу в машинный код – сырой формат, пригодный для исполнения процессором. Но каждый процесс превращения программы в другой вид, по сути, является компиляцией.
Можно было бы создать другой интерпретатор Egg, который сначала превращает программу в программу на языке JavaScript, использует new Function
для вызова компилятора JavaScript и возвращает результат. При правильной реализации Egg выполнялся бы очень быстро при относительно простой реализации.
Если вам это интересно, и вы хотите потратить на это время, я поощряю вас попробовать сделать такой компилятор в качестве упражнения.
- 3.8.3. Компиляция ядра
- Компиляция ядра
- 15.2. Компиляция для отладки
- Компиляция и установка ядра
- Компиляция вне дерева исходных кодов ядра
- Почему компиляция?
- Компиляция регулярных выражений
- Компиляция Си-программы на IBM PC (компиляторы Microsoft С и Lattice С)
- Условная компиляция
- Компиляция с библиотекой curses
- 1.2.1. Компиляция одного исходного файла
- 1.4.1. Компиляция с включением отладочной информации