Транслятор: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
пунктуация
м →‎Реализации: Исправление последствий "неполной" поправки. (Лёгкая несогласованность предложения).
Строка 35:
{{конец цитаты}}</ref>), но они являются исключением из правила в силу сложности и дороговизны. Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется '''компилятором'''.<ref name="Себеста">{{книга|автор=Роберт У. Себеста.|часть=1.7. Методы реализации|заглавие=Основные концепции языков программирования|оригинал=Concepts of Programming Languages|ответственный=Пер. с англ|издание=5-е изд|место=М.|издательство=[[Вильямс (издательство)|Вильямс]]|год=2001|страницы=45—52|страниц=672|isbn=5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)|тираж=5000}}</ref>
 
Процесс компиляции, как правило, состоит из нескольких этапов: [[лексический анализ|лексического]], [[синтаксический анализ|синтаксического]] и [[семантический анализ|семантического анализов]], генерации на основе результатов анализов промежуточного кода, [[оптимизация компилятора|оптимизации]] промежуточного кода и генерации результирующего объектного кода, в данном случае машинного. Помимо этого, программа, как правило, внешнююимеет внешние инфраструктуры: сервисы, предоставляемые [[операционная система|операционной системой]] и сторонние [[Библиотека (программирование)|библиотеки]] (например, файловый ввод-вывод или графический интерфейс), для чего машинный код программы необходимо ''связать'' с этими сервисами и функциями библиотек. Связывание со [[статическая библиотека|статическими библиотеками]] выполняется ''редактором связей'' или ''[[компоновщик]]ом'' (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и [[динамическая библиотека|динамическими библиотеками]] связывание выполняется при начале исполнения программы ''[[загрузчик программ|загрузчиком]]''.
 
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.