ТРАНСЛЯТОР, компилирующая программа, программирующая программа
— программа, предназначенная для перевода (трансляции) описаний алгоритмов с одного языка формального на другой. Первый из этих языков наз. входным, второй — выходным. Наиболее распространены Т. с языков процедурно-ориентированных в языки машинно-ориентированные и языки машинные. Входной и выходной языки Т. выбираются в зависимости от принятой схемы трансляции. В схеме непосредственной трансляции выходным языком служит команд система ЦВМ. В схеме ступенчатой трансляции используется язык промежуточный, общий для группы входных языков. Т. первой ступени переводит тексты с входного языка на промежуточный язык, а Т. второй ступени — с промежуточного языка на язык конкретной ЦВМ.
Т. являются одним из осн. средств автоматизации программирования. Применение Т. не только облегчает составление отдельной программы, но и позволяет использовать в различных ЦВМ один и тот же алгоритм, написанный на некотором языке программирования. В зависимости от степени различия между входным и выходным языками Т. содержит от нескольких тысяч команд до нескольких десятков (а иногда и сотен) тысяч команд.
Различают Т. интерпретирующего и компилирующего типов. В Т. интерпретирующего типа процесс трансляции совмещается с выполнением составляемой им выходной программы. Т.компилирующего типа выдают выходную программу, которая затем может выполняться по мере необходимости. Т. интерпретирующего типа менее эффективны при пакетной обработке программ, но удобны в диалога режиме программиста с ЦВМ. В последнем случае, напр., при обнаружении ошибки во входном тексте, Т. может приостанавливать свою работу и выдавать сообщение о причине остановки. На основании этого сообщения программист дает Т. указание о дальнейшей работе. Он может, нацр., внести исправление во входной текст и указать место, начиная с которого надо продолжать трансляцию. Подобные Т. наз. шаговыми. Шаговый принцип работы используется и в некоторых Т. компилирующего типа.
Процесс трансляции разделяется на несколько подпроцессов: синтаксический анализ и контроль текста на входном языке, анализ описаний данных и памяти распределение для объектов, обрабатываемых транслируемым алгоритмом, получение текста выходной программы и ее оптимизация, выдача результата работы Т. и др. Некоторые из этих подпроцессов, напр., оптимизация, могут отсутствовать.
С помощью синтаксического анализа текста на входном языке в нем распознаются некоторые синтаксические конструкции (операторы, выражения, переменные и т. п.). Одновременно выявляются допущенные синтаксические ошибки. В процессе анализа описаний данных систематизируются все сведения об обрабатываемых алгоритмом объектах. В функцию
распределения памяти входит установление соответствия между этими объектами и участками памяти ЦВМ. На основе синтаксического анализа и распределения памяти производится получение текста алгоритма на выходном языке. Выделенные синтаксические объекты входного языка заменяются на эквивалентные им группы синтаксических объектов выходного языка согласно семантике входного и выходного языков. В частности, если выходным языком является система команд ЦВМ, то объекты входного языка, определяющие некоторые действия, заменяются на группы команд.
Осн. целью оптимизации выходной программы является повышение скорости ее работы. Часто повышение скорости достигается за счет эквивалентных преобразований алгоритма на уровне входного языка. Примером такого преобразования может служить вынесение некоторых действий из циклически выполняющегося участка программы. Как правило, оптимизирующие алгоритмы используют нелинейный просмотр информации, что увеличивает время работы Т. Ввиду этого, зачастую целесообразно для одного и того же входного языка иметь два Т., один из которых позволяет осуществить быструю трансляцию, выдавая менее эффективные программы, а второй, хотя трансляция в нем происходит медленнее, выдает более эффективные программы. Первый из них целесообразнее использовать при обработке и отладке алгоритма (см. Отладочные программы), второй — при необходимости многократных просчетов по составленной программе.
В выдачу результатов работы Т. обычно включаются: печать в отредактированном виде входного текста, одновременная печать входного и выходного текстов, печать выявленных при трансляции ошибок, выдача выходной программы на внеш. носитель информации ЦВМ (перфокарты, перфоленту), запись выходной программы во внеш. память ЦВМ и др. Как правило, Т. накладывают некоторые количественные ограничения на входные тексты. Напр., ограничивается длина текста, к-во операторов и т.п. Нарушения этих ограничений рассматриваютсякак ошибки во входном тексте.
Для облегчения отладки составляемых программ Т. имеют спец. режимы работы, используя которые программист может внести в выходную программу операторы, предназначенные для выдачи дополнительной информации. Характер выдач может быть разнообразным — от выдачи значения отдельной величины до выдачи значений всех промежуточных результатов и информации о порядке выполнения операторов выходной программы. В последнем случае выходная программа выполняется в режиме интерпретации. Некоторые Т. могут составлять выходные программы разных уровней, причем программы более высокого уровня позволяют получить более подробные выдачи. Особое внимание уделяется тому, чтобы задание отладочных режимов работы Т. и выдача дополнительной информации во время отладки производились в терминах входного языка, поскольку во многих случаях пользователь хорошо знаком ТОЛЬКО с входным языком.
Развитие методов описания алгоритмических языков и методов трансляции привело к разработке метатрансляторов. Для работы метатранслятора задаются: входной текст и описание на метаязыке синтаксиса входного языка и семантических правил соответствия конструкций входного языка конструкциям выходного языка. Т. о., метатранслятор может использоваться в качестве Т. для целого класса входных и выходных языков.
Лит.: . В. В. Луцикович.