Переход к языкам высокого уровня
Поскольку разработка языков программирования и
разработка компиляторов тесно связаны между собой, новые достижения в области
языков программирования приводят к новым требованиям, возникающим перед
разработчиками компиляторов, которые должны придумывать алгоритмы и
представления для трансляции и поддержки новых возможностей языка. Кроме того,
с 1940-х годов произошли существенные изменения и в архитектуре вычислительных
систем, так что разработчики компиляторов должны не только учитывать новые свойства
языков программирования, но и разрабатывать такие алгоритмы трансляции, которые
смогут максимально использовать преимущества новых аппаратных возможностей.
Компиляторы могут способствовать использованию
высокоуровневых языков программирования, минимизируя накладные расходы времени
выполнения программ, написанных на этих языках. Они играют важную роль в
эффективном использовании высокопроизводительной архитектуры компьютера
пользовательскими приложениями. В действительности производительность вычислительной
системы настолько зависит от технологии компиляции, что компиляторы используются
в качестве инструмента для оценки архитектурных концепций перед созданием
компьютера.
Написание компилятора представляет настоящий вызов для
программиста. Компилятор сам по себе — большая и сложная программа. Кроме того,
многие современные системы обработки языков работают с разными языками и
целевыми машинами в пределах одного пакета, т.е. представляют собой набор
компиляторов, состоящих, возможно, из миллионов строк кода. Соответственно, при
разработке и создании современных языковых процессоров определяющую роль
играют методы программотехники.
Компилятор обязан корректно транслировать потенциально
бесконечное множество программ, которые могут быть написаны на соответствующем
языке программирования. Задача генерации оптимального целевого кода из
исходной программы в общем случае неразрешима; таким образом, разработчики
компиляторов должны искать компромиссные решения о том, какие эвристики следует
использовать для генерации эффективного кода.
Изучение компиляторов — это также изучение вопроса о
том, насколько теория соответствует практике.
Комментариев нет:
Отправить комментарий