Jump to content

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

(Перенаправлено из инкрементальной компиляции )

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

Определение

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

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

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

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

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

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

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

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

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

Список инкрементальных компиляторов

[ редактировать ]
Императивные и функциональные языки
Интерактивные среды и системы выполнения

См. также

[ редактировать ]
  1. ^ http://www.cs.bham.ac.uk/research/projects/poplog/primer/node14.html. Архивировано 5 января 2008 г. в Wayback Machine , обучающее пособие по Poplog.
  2. ^ Статья Смита, Сломана и Гибсона 1992 г. ниже (теперь доступна в Интернете)
  3. ^ «Домашняя страница Стивена П. Рейсса» . Брауновский университет. 9 июня 2011 года. Архивировано из оригинала 10 февраля 2013 года . Проверено 8 августа 2014 г.
  4. ^ Поппл, Джеймс (1987). Инкрементная компиляция и ее реализация в генераторе среды программирования PECAN (PDF) (дипломная работа с отличием). Австралийский национальный университет. Архивировано (PDF) из оригинала 15 августа 2014 года . Проверено 8 марта 2013 г. Альтернативный URL-адрес Также доступен в Google Книгах .
  5. ^ https://gcc.gnu.org/ml/gcc/2007-07/msg00496.html , объявление о начале ветки IncrementalCompiler GCC.
  6. ^ http://www.eclipse.org/jdt/core/index.php , описание основного компонента JDT.
  7. ^ https://docs.gradle.org/2.1/release-notes.html , примечания к выпуску Gradle версии 2.1.
  8. ^ «Анонсируем Rust 1.24 | Блог Rust» .
  9. ^ «Примечания к выпуску Go 1.10 — язык программирования Go» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c99adbd4723d7e127407812d5978e340__1686346380
URL1:https://arc.ask3.ru/arc/aa/c9/40/c99adbd4723d7e127407812d5978e340.html
Заголовок, (Title) документа по адресу, URL1:
Incremental compiler - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)