Кіріспе

Инкременттік компилятор – компиляция саласына қолданылатын инкременттік есептеудің бір түрі. Көбінесе, кәдімгі компиляторлар «таза құрастыру» жасайды, яғни барлық бағдарлама модульдерін (қайта) құрастырады, ал инкременттік компилятор бағдарламаның өзгертілген бөлімдерін ғана қайта компиляциялайды.

Императивті бағдарламалау

Императивті бағдарламалау және бағдарламалық жасақтаманы әзірлеуде, инкременттік компиляция белгілі бір бастапқы файлдар жиынтығының өзгерістерін ғана қарастырады және алдыңғы компиляциялардан қалған сәйкес шығыс файлдарын (компилятордың мақсатты тілінде, көбінесе байт-кодта) жаңартады. Бұрын компиляцияланған шығыс файлдарын тиімді пайдаланатын инкременттік компилятор, кодтың көп бөлігі өзгермеген жағдайда, толық бастапқы файлдарды қайта компиляциялаудан аулақ салады. Көптеген инкременттік компиляторлар үшін, бастапқы кодына шағын өзгерістер енгізілген бағдарламаны компиляциялау көбінесе дерлік жедел жүзеге асырылады. Инкременттік компилятор тілдің дәстүрлі компиляциялық бірліктерінің дәлдігін арттырады, сонымен бірге тілдің семантикасын сақтайды, бұл компиляторға кішігірім бөліктерді қосуға және алмастыруға мүмкіндік береді. Көптеген бағдарламалау құралдары инкременттік компиляторларды пайдаланып, бағдарламашыларға өте интерактивті бағдарламалау ортасын ұсынады. Көбінесе инкременттік компилятор, бастапқы файлдың әрбір өзгеруімен шақырылады, сондықтан бағдарламашы өзгерістерінің нәтижесінде туындаған кез келген компиляциялық қателер туралы дереу хабардар болады. Бұл схема, дәстүрлі компиляциядан айырмашылығы, бағдарламашының әзірлеу циклын едәуір қысқартады, себебі қателер туралы хабар алу үшін ұзақ компиляция процесін күтудің қажеті болмайды. Осы типтегі инкременттік компилятордың бір кемшілігі – ол локальдық және өзгертілген аймақтың шектеулілігіне байланысты компиляцияланған кодты оңай оңтайландыра алмайды. Бірақ бұл көбінесе проблема тудырмайды, өйткені оңтайландыру әдетте тек жариялау кезінде жүзеге асырылады, ал даму кезеңінде инкременттік компилятор, ал жариялау кезінде стандартты пакеттік компилятор қолданылады.

Интерактивті бағдарламалау

Интерактивті бағдарламалау парадигмасында, мысалы, Poplog-қа қатысты әдебиеттерде, интерактивті компилятор – бастапқы тілдің орындалу уақытының құрамына кіретін компилятор. Компилятор бағдарлама басқаратын белгілі бір бастапқы код немесе деректер құрылымы бойынша орындалу кезінде шақырылуы мүмкін, нәтижесінде машиналық кодтан тұратын жаңа компиляцияланған бағдарлама бөлігі құрылады, ол дереу орындалу жүйесінде пайдалануға қолжетімді болады. Егер жаңа құрастырылған бөлік бұрынғы құрастырылған процедураны алмастырса, ескі процедура қоқысқа жиналады. Бұл схема кодты өздігінен өзгертуге мүмкіндік береді және метапрограммалау тілінің мүмкіндіктерін талап етеді. Бағдарлама жұмыс істеп тұрғанда кодты қосу, жою және өзгеру қабілеті ыстық ауыстыру деп аталады. Кейбір интерактивті бағдарламалау платформалары интерпретацияланған және компиляцияланған кодты біріктіріп, кодқа енгізілген кез келген өзгерістер бағдарламаға дереу қолжетімді болады деген көрініс тудырады.