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

100 байт добавлено ,  4 года назад
→‎Компилирование: пунктуация, стилевые правки, оформление
(→‎Реализации: оформление, стилевые правки)
(→‎Компилирование: пунктуация, стилевые правки, оформление)
 
Язык [[Ада (язык программирования)|Ада]] поддерживает объектно-базированное программирование, что и послужило причиной выбора его в качестве основного языка программирования для i432.
{{конец цитаты}}</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>
 
Процесс компиляции, как правило, состоит из нескольких этапов: [[лексический анализ|лексического]], [[синтаксический анализ|синтаксического]] и [[семантический анализ|семантического анализов]], генерации на основе результатов анализов промежуточного кода, [[оптимизация компилятора|оптимизации]] промежуточного кода и генерации результирующего объектного кода, в данном случае машинного. Помимо этого, программа, как правило, имеетиспользует внешниесредства внешней инфраструктуры: сервисы, предоставляемые [[операционная система|операционной системой]], и сторонние [[Библиотека (программирование)|библиотеки]] (например, файловыйдля файлового вводввода-выводвывода или графическийграфического интерфейсинтерфейса), для чего машинный код программы необходимо ''связать'' с этими сервисами и функциями библиотек. Связывание со [[статическая библиотека|статическими библиотеками]] выполняется ''[[Компоновщик|редактором связей'' или ''[[компоновщиккомпоновщиком]]ом'' (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и [[динамическая библиотека|динамическими библиотеками]] связывание выполняется [[загрузчик программ|загрузчиком]] при начале исполнения программы ''([[загрузчикдинамическое программ|загрузчикомсвязывание]]'').
 
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.
 
В случае, если исходный язык является [[язык ассемблера|языком ассемблера]] (низкоуровневым языком, близким к машинному языку), то компилятор такого языка называется ''[[ассемблер]]ом''.
 
=== Интерпретация ===