Аннотация:
Оптимизация программ возникла, как ответ на появление высокоуровневых языков программирования, и включает в себя специальные приемы и методы, используемые при построении компиляторов для получения достаточно эффективного объектного кода. Совокупность этих методов составляла в прошлом и является теперь неотъемлемой частью так называемых оптимизирующих компиляторов, целью которых заключается в создании объектного кода, позволяя экономить такие компьютерные ресурсы, как процессорное время и память. Для современных суперкомпьютеров добавляется также требование правильного использования аппаратных особенностей. В данном контексте особого внимания заслуживают вопросы, связанные с оптимизацией компиляторов, которая может включать в себя адаптацию компилятора для уменьшения времени выполнения или размера объекта, или и того, и другого. С учетом вышеизложенного, цель статьи заключается в проведении анализа алгоритмов составляющих частей компилятора и обозначении путей его оптимизации. В процессе исследования кратко охарактеризована общая технология работы компилятора. Отдельное внимание уделено рассмотрению основных функции алгоритмов, которые реализуются на разных этапах работы компилятора. Также рассмотрены возможности использования машинного обучения для оптимизации компиляторов.