Инкрементный компилятор

редактировать

Инкрементный компилятор - это разновидность инкрементных вычислений, применяемых к полю компиляция. Вполне естественно, что в то время как обычные компиляторы выполняют так называемую чистую сборку, то есть (пере) строят все программные модули, инкрементный компилятор перекомпилирует только те части программы, которые были изменены.

Содержание
  • 1 Определение
    • 1.1 Императивное программирование
    • 1.2 Интерактивное программирование
  • 2 Список инкрементных компиляторов
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
Определение

Императивное программирование

В императивном программировании и разработке программного обеспечения инкрементный компилятор - это компилятор, который при вызове принимает только изменения известного набора из исходных файлов и обновляет любые соответствующие выходные файлы (на целевом языке компилятора, часто байт-код ), которые могут уже существовать из предыдущих компиляций. Эффективно опираясь на ранее скомпилированные выходные файлы, инкрементный компилятор избегает расточительной перекомпиляции всех исходных файлов, где большая часть кода остается неизменной. Для большинства инкрементных компиляторов компиляция программы с небольшими изменениями в ее исходном коде обычно почти мгновенная. Можно сказать, что инкрементный компилятор снижает степень детализации традиционных единиц компиляции языка, сохраняя при этом семантику языка, так что компилятор может добавлять и заменять более мелкие части.

Многие инструменты программирования используют преимущества инкрементных компиляторов, чтобы предоставить разработчикам гораздо более интерактивную среду программирования. Нет ничего необычного в том, что инкрементный компилятор вызывается для каждого изменения исходного файла, так что разработчик почти немедленно информируется о любых ошибках компиляции, которые могут возникнуть в результате его изменений в коде. Эта схема, в отличие от традиционной компиляции, значительно сокращает цикл разработки программистов, поскольку им больше не нужно ждать долгого процесса компиляции, прежде чем они будут проинформированы об ошибках.

Обратной стороной этого типа инкрементного компилятора является то, что он не может легко оптимизировать код, который он компилирует, из-за локальности и ограниченного объема того, что изменяется. Обычно это не проблема, поскольку оптимизация обычно выполняется только в выпуске, инкрементный компилятор будет использоваться на протяжении всей разработки, а стандартный пакетный компилятор будет использоваться при выпуске.

Интерактивное программирование

В парадигме интерактивного программирования, например в литературе, связанной с Poplog, а интерактивный компилятор относится к компилятору, который фактически является частью системы времени выполнения исходного языка. Компилятор может быть вызван во время выполнения для некоторого исходного кода или структуры данных, управляемой программой, которая затем создает новый скомпилированный фрагмент программы, содержащий машинный код, который затем немедленно становится доступным для использования системой времени выполнения. Если вновь скомпилированный фрагмент заменяет предыдущую скомпилированную процедуру, старый будет сборщиком мусора. Эта схема допускает степень самомодифицируемого кода и требует языковых функций метапрограммирования. Возможность добавлять, удалять и удалять код во время работы известна как горячая замена. Некоторые платформы интерактивного программирования смешивают использование интерпретируемого и скомпилированного кода, чтобы создать иллюзию, что любые изменения в коде доступны для программы немедленно.

Список инкрементных компиляторов
Инкрементальные компиляторы для компиляции императивного языка
  • Генератор среды программирования PECAN был инкрементным компилятором, разработанным Стивеном П. Рейссом в начале 1980-х.
  • Коллекция компиляторов GNU начал свою разработку с проекта IncrementalCompiler, сосредоточившись на обеспечении C /C ++ с быстрым инкрементным компилятором
  • The Eclipse платформа имеет инкрементный компилятор Java, включенный как часть проекта Java Development Tools
  • Компилятор C ++ 4.0 IBM VisualAge является инкрементным компилятором для C ++
  • Embarcadero Delphi, ранее Borland Delphi
  • The .NET Compiler Platform (кодовое имя Roslyn) - это инкрементный компилятор с открытым исходным кодом для C # и Visual Basic.NET и является компилятором по умолчанию начиная с Visual Studio 2015 и далее
  • Rust
  • Go
Инкрементальные компиляторы в интерактивных средах программирования и системах времени выполнения
Инкрементный компилятор для функциональных языков
  • Инструмент сборки Gradle имеет инкрементную компиляцию Java, начиная с версии 2.1.
См. Также
Ссылки
  1. ^[1pting Архивировано 05.01.2008 на Wayback Machine, учебный букварь по Poplog
  2. ^Статья Смита, Сломана и Гибсона 1992 ниже (теперь доступна онлайн)
  3. ^«Домашняя страница Стивена П. Рейсса». Брауновский университет. 9 июня 2011. Архивировано из оригинала 10 февраля 2013 года. Архивировано 8 августа 2014 года.
  4. ^Popple, James (1987). Инкрементальная компиляция и ее реализация в генераторе среды программирования PECAN (PDF) (диплом с отличием). Австралийский национальный университет. Архивировано (PDF) из оригинала 15 августа 2014 г. Получено 8 марта 2013 г. Альтернативный URL Также доступен в Google Книгах.
  5. ^[2 ], объявление, сделанное в начале ветви IncrementalCompiler GCC
  6. ^[3], описание основного компонента JDT
  7. ^[4]
  8. ^[5]
  9. ^[6], примечания к выпуску Gradle версии 2.1
Внешние ссылки
Последняя правка сделана 2021-05-23 13:08:26
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте