Инкрементальный компилятор - Incremental compiler
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
An инкрементный компилятор это своего рода инкрементальные вычисления применяется к области сборник. Вполне естественно, тогда как обычные компиляторы делают так называемые чистая сборка, то есть (пере) построить все программные модули, инкрементный компилятор перекомпилирует только те части программы, которые были изменены.
Определение
Императивное программирование
В императивное программирование и разработка программного обеспечения, инкрементный компилятор - это компилятор, который при вызове принимает только изменения известного набора исходные файлы и обновления любые соответствующие выходные файлы (на целевом языке компилятора, часто байт-код ), которые могут уже существовать из предыдущих компиляций. опираясь на ранее скомпилированные выходные файлы, инкрементный компилятор избегает расточительной перекомпиляции целых исходных файлов, где большая часть кода остается неизменной. Для большинства инкрементных компиляторов компиляция программы с небольшими изменениями в ее исходном коде обычно происходит почти мгновенно. Можно сказать, что инкрементный компилятор снижает детализация традиционных единиц компиляции языка при сохранении языковых семантика, чтобы компилятор мог добавлять и заменять более мелкие части.
Много инструменты программирования Воспользуйтесь преимуществами инкрементальных компиляторов, чтобы предоставить разработчикам гораздо более интерактивную среду программирования. Нет ничего необычного в том, что инкрементный компилятор вызывается для каждый изменение исходного файла, так что разработчик почти сразу же информируется о любых ошибки компиляции что возникнет в результате его изменений в коде. Эта схема, в отличие от традиционной компиляции, значительно сокращает цикл разработки программистов, поскольку им больше не нужно ждать долгого процесса компиляции, прежде чем они будут проинформированы об ошибках.
Одним из недостатков этого типа инкрементального компилятора является то, что он не может легко оптимизировать код, который он компилирует, из-за локальности и ограниченного объема того, что изменяется. Обычно это не проблема, потому что оптимизация обычно проводится только на релиз, инкрементный компилятор будет использоваться на протяжении всей разработки, а стандартный пакетный компилятор будет использоваться при выпуске.
Интерактивное программирование
в интерактивное программирование парадигма, например в Поплог сопутствующая литература,[1] и [2] интерактивный компилятор относится к компилятору, который фактически является частью система времени выполнения исходного языка. Компилятор может быть вызван во время выполнения для некоторого исходного кода или структуры данных, управляемой программой, которая затем создает новый скомпилированный фрагмент программы, содержащий Машинный код который затем сразу становится доступным для использования системой времени выполнения. Если вновь скомпилированный фрагмент заменяет предыдущую скомпилированную процедуру, старый будет собран мусор. Эта схема учитывает степень самомодифицирующийся код и требует метапрограммирование языковые особенности. Возможность добавлять, удалять и удалять код во время работы известна как горячая замена. Некоторые платформы интерактивного программирования смешивают использование интерпретируемого и скомпилированного кода, чтобы создать иллюзию того, что любые изменения кода доступны для программы немедленно.
Список инкрементальных компиляторов
- Инкрементальные компиляторы для компиляции императивного языка
- Генератор среды программирования PECAN был инкрементным компилятором, разработанным Стивеном П. Рейссом в начале 1980-х годов.[3][4]
- Коллекция компиляторов GNU разветвился[5] его развитие с Инкрементальный компилятор проект, сосредоточившись на предоставлении C /C ++ с быстрым инкрементным компилятором
- В Затмение Платформа имеет Ява инкрементный компилятор, входящий в состав Инструменты разработки Java проект[6]
- В IBM VisualAge Компилятор C ++ 4.0 - это инкрементный компилятор для C ++
- Embarcadero Delphi, ранее Borland Delphi
- В Платформа компилятора .NET (кодовое имя Roslyn) - инкрементный компилятор с открытым исходным кодом для C # и Visual Basic .NET, и является компилятором по умолчанию из Visual Studio 2015 г.
- Ржавчина[7]
- Идти[8]
- Инкрементальные компиляторы в интерактивных средах программирования и системах времени выполнения
- Поплог (его основной язык ПОП-11 и его предшественник ПОП-2 )
- Некоторые версии Лисп:
- Некоторые версии Схема:
- Большинство версий Пролог:
- Версии ML:
- Стандартный ML Нью-Джерси (Bell Labs 'штаб-квартира находится в Нью-Джерси )
- Поплог ML
- Четвертый
- Цейлон Red-Hat
- Инкрементальный компилятор для функциональных языков
Смотрите также
Рекомендации
- ^ [1] В архиве 2008-01-05 на Wayback Machine, учебный букварь по Poplog
- ^ Статья Смита, Сломана и Гибсона 1992 года ниже (теперь доступна онлайн)
- ^ "Домашняя страница Стивена П. Рейсса". Брауновский университет. 9 июня 2011 г. В архиве из оригинала 10 февраля 2013 г.. Получено 8 августа 2014.
- ^ Поппл, Джеймс (1987). Инкрементальная компиляция и ее реализация в генераторе среды программирования PECAN (PDF) (Диплом с отличием). Австралийский национальный университет. В архиве (PDF) из оригинала 15 августа 2014 г.. Получено 8 марта 2013. Альтернативный URL Также имеется в наличии в Google Книги.
- ^ [2], объявление сделано в начале ветви IncrementalCompiler GCC
- ^ [3], описание основного компонента JDT
- ^ [4]
- ^ [5]
- ^ [6], примечания к выпуску Gradle версии 2.1
внешняя ссылка
- Журнал доктора Добба о создании инкрементального компилятора C ++
- Р. Смит, А. Сломан и Дж. Гибсон, поддержка двухуровневых виртуальных машин POPLOG для интерактивных языков, в Research Directions in Cognitive Science Volume 5: Artificial Intelligence, Eds. Д. Слиман и Н. Бернсен, Лоуренс Эрлбаум, 1992, стр. 203–231.