Генерации программа
ГЕНЕРАЦИИ ПРОГРАММА, программное средство, выполняющее преобразование или формирование данных. Генерации программа (или генератор) может быть независимой самодостаточной программой или встроенной компонентой (реализованной в виде процедуры или функции) прикладной или системной программы. генерации программы делят на генераторы-преобразователи и генераторы-формирователи. К генераторам-преобразователям относятся генераторы кода в компиляторах, SQL-запросов для баз данных, XML-документов в системах обмена сообщениями, а также различные виды макрогенераторов (макропроцессоров), а к генераторам-формирователям - генераторы тестов, отчётов, программ лексического и синтаксического разбора, случайных чисел и др.
Программа генерации кода - неотъемлемая часть всех компиляторов с языков программирования (смотри Компилятор). Она работает на завершающей стадии компиляции (обычно после проведения процедур машинно-независимой оптимизации) и формирует объектную программу (например, в виде перемещаемого объектного модуля, программы с абсолютными адресами, текста на языке ассемблера) либо текст на языке программирования, отличающегося от входного языка компилятора.
Реклама
Генератор SQL-запросов в системах управления базами данных (СУБД) представляет собой транслятор, который осуществляет перевод заданий с языка (вида), удобного для пользователя, в последовательность запросов на языке SQL (Structured Query Language - Язык структурированных запросов), который является стандартным языком наиболее распространённых реляционных СУБД.
Генератор XML-документов используется в системах обмена сообщениями, построенных на стандартах, соответствующих концепции сетевых служб. Указанные стандарты требуют использования языка XML (Extensible Markup Language - Расширенный язык разметки) в качестве базового языка всех сообщений, распространяемых между абонентами вычислительной сети.
Процесс макрогенерации текстов состоит из ввода макроопределений и обработки макровызовов. Макрогенератору задаётся исходный текст, в котором есть подлежащие замене последовательности символов (макровызовы), и с помощью макроопределений указывается, чем они должны быть заменены. В результате работы макропроцессора получается текст, в котором выполнены необходимые замены, т. е. сделаны макро-подстановки. Иногда макрогенератор встраивается в компилятор (например, языки PL/1, С, С++).
Генератор тестов или тестовых последовательностей анализирует формальное описание объекта (языка программирования, программы, системы управления) и формирует необходимое число тестовых примеров, обладающих заданными характеристиками по уровню покрытия описания (например, по числу заложенных функций, по числу ветвей потока управления). Сформированные тесты используются в дальнейшем для проверки соответствия исследуемого объекта его формальному описанию. Результаты тестов являются одним из критериев оценки качества изготовленного программного обеспечения (смотри Верификация в информатике).
Генератор отчётов позволяет подготовить необходимые пользователю отчётные формы произвольной структуры, включающие таблицы, графики, текстовую информацию, иллюстрации.
Генератор программ лексического и синтаксического разбора представляет собой программу, позволяющую по заданному формальному описанию (в виде наборов регулярных выражений или грамматических правил) некоторого языка программирования автоматически строить программы, производящие соответствующий разбор предложений этого языка. Генерируемая программа разбора состоит из набора процедур, работающих с информацией, размещённой в строящихся генератором таблицах. Сформированные процедуры обычно являются заготовками программ, которые после ручного редактирования могут использоваться при создании компиляторов с языков программирования.
Использование случайных чисел связано с потребностью случайного выбора в математической статистике и теории игр. Получение действительно случайных чисел - очень непростая задача, поэтому большая часть расчётов на ЭВМ производится с использованием так называемых псевдослучайных чисел. Генератор псевдослучайных чисел - программа, генерирующая последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению. Данные программы применяются при решении задач математического моделирования, кодирования, криптографии (например, генератор ключей или паролей в программных системах обеспечения безопасности обработки и передачи данных) и др.
Лит.: Brown Р.J. Macro processors and techniques for portable software. L., 1974; Браун П. Макропроцессоры и мобильность программного обеспечения. М., 1977; Paxson V. Flex Fast lexical analyzer generator. Berk., 1995; Кнут Д. Э. Искусство программирования. М., 2000. Т. 2: Получисленные методы; Donnelly С., Stallman R. Bison. The Yacc-compatible parser generator. Version 2.1. S. 1., 2005.
Л. П. Карпов.