пятница, 3 августа 2012 г.

Влияние на компиляторы

Переход к языкам высокого уровня

Поскольку разработка языков программирования и разработка компиляторов тесно связаны между собой, новые достижения в области языков программи­рования приводят к новым требованиям, возникающим перед разработчиками компиляторов, которые должны придумывать алгоритмы и представления для трансляции и поддержки новых возможностей языка. Кроме того, с 1940-х годов произошли существенные изменения и в архитектуре вычислительных систем, так что разработчики компиляторов должны не только учитывать новые свой­ства языков программирования, но и разрабатывать такие алгоритмы трансляции, которые смогут максимально использовать преимущества новых аппаратных воз­можностей.

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

Комментариев нет:

Отправить комментарий