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

283 байта добавлено ,  6 лет назад
стилевые правки
м (Интервики (всего 5) перенесены на Викиданные, d:q4462013)
(стилевые правки)
Язык, на котором представлена входная программа, называется ''исходным языком'', а сама программа — ''[[исходный код|исходным кодом]]''. Выходной язык называется ''целевым языком'' или ''[[Объектный код|объектным кодом]]''.
 
В общем случае, понятие трансляции относится не только к языкам программирования, но и к другим языкам — как формальным [[компьютерный язык|компьютерным]] (вроде [[язык разметки|языков разметки]] типа [[HTML]]), так и [[Естественный язык|естественным]] ([[русский язык|русскому]], [[английский язык|английскому]] и т. п.).<ref>СТ ИСО 2382/7-77 // {{книга|заглавие=Вычислительная техника. Терминология. Указ. соч}}</ref><ref>{{книга|заглавие=Толковый словарь по вычислительным системам|оригинал=Dictionary of Computing|ответственный=Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского|место=М.|издательство=Машиностроение|год=1990|страниц=560|isbn=5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания)|тираж=70&nbsp;000 (доп.)}}</ref>
 
== Виды трансляторов ==
{{конец цитаты}}</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>
 
Процесс компиляции, как правило, состоит из нескольких этапов: [[лексический анализ|лексического]], [[синтаксический анализ|синтаксического]] и [[семантический анализ|семантического анализов]], генерации на основе результатов анализов промежуточного кода, [[оптимизация компилятора|оптимизации]] промежуточного кода и генерации результирующего машинногообъектного кода, в данном случае машинного. Помимо этого, программа, как правило, зависитвнешнюю отинфраструктуры: сервисовсервисы, предоставляемыхпредоставляемые [[операционная система|операционной системой]] и стороннимисторонние библиотеками[[Библиотека (программирование)|библиотеки]] (например, файловый ввод-вывод или графический интерфейс), идля чего машинный код программы необходимо ''связать'' с этими сервисами и функциями библиотек. Связывание со [[статическая библиотека|статическими библиотеками]] выполняется ''редактором связей'' или ''[[компоновщик]]ом'' (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и [[динамическая библиотека|динамическими библиотеками]] связывание выполняется при начале исполнения программы ''[[загрузчик программ|загрузчиком]]''.
 
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.