Подпишитесь на наши новости
Вернуться к началу с статьи up
 

ГЕНЕРА́ЦИИ ПРОГРА́ММА

  • рубрика
  • родственные статьи
  • image description

    В книжной версии

    Том 6. Москва, 2006, стр. 550

  • image description

    Скопировать библиографическую ссылку:




Авторы: Л. П. Карпов

ГЕНЕРА́ЦИИ ПРОГРА́ММА, про­грамм­ное сред­ст­во, вы­пол­няю­щее пре­об­ра­зо­ва­ние или фор­ми­ро­ва­ние дан­ных. Г. п. (или ге­не­ра­тор) мо­жет быть не­за­ви­си­мой са­мо­дос­та­точ­ной про­грам­мой или встро­ен­ной ком­по­нен­той (реа­ли­зо­ван­ной в ви­де про­це­ду­ры или функ­ции) при­клад­ной или сис­тем­ной про­грам­мы. Г. п. де­лят на ге­не­ра­то­ры-пре­об­ра­зо­ва­те­ли и ге­не­ра­то­ры-фор­ми­ро­ва­те­ли. К ге­не­ра­то­рам-пре­об­ра­зо­ва­те­лям от­но­сят­ся ге­не­ра­то­ры ко­да в ком­пи­ля­то­рах, SQL-за­про­сов для баз дан­ных, XML-до­ку­мен­тов в сис­те­мах об­ме­на со­об­ще­ния­ми, а так­же разл. ви­ды мак­ро­ге­не­ра­то­ров (мак­ро­про­цес­со­ров), а к ге­не­ра­то­рам-фор­ми­ро­ва­те­лям – ге­не­ра­то­ры тес­тов, от­чё­тов, про­грамм лек­сич. и син­так­сич. раз­бо­ра, слу­чай­ных чи­сел и др.

Про­грам­ма ге­не­ра­ции ко­да – не­отъ­ем­ле­мая часть всех ком­пи­ля­то­ров с язы­ков про­грам­ми­ро­ва­ния (см. Ком­пи­ля­тор). Она ра­бо­та­ет на за­вер­шаю­щей ста­дии ком­пи­ля­ции (обыч­но по­сле про­ве­де­ния про­це­дур ма­шин­но-не­за­ви­си­мой оп­ти­ми­за­ции) и фор­ми­ру­ет объ­ект­ную про­грам­му (напр., в ви­де пе­ре­ме­щае­мо­го объ­ект­но­го мо­ду­ля, про­грам­мы с аб­со­лют­ны­ми ад­ре­са­ми, тек­ста на язы­ке ас­семб­ле­ра) ли­бо текст на язы­ке про­грам­ми­ро­ва­ния, от­ли­чаю­ще­го­ся от вход­но­го язы­ка ком­пи­ля­то­ра.

Ге­не­ра­тор SQL-за­про­сов в сис­те­мах управ­ле­ния ба­за­ми дан­ных (СУБД) пред­став­ля­ет со­бой транс­ля­тор, ко­то­рый осу­ще­ст­в­ля­ет пе­ре­вод за­да­ний с язы­ка (ви­да), удоб­но­го для поль­зо­ва­те­ля, в по­сле­до­ва­тель­ность за­про­сов на язы­ке SQL (Structured Query Language – Язык струк­ту­ри­ро­ван­ных за­про­сов), ко­то­рый яв­ля­ет­ся стан­дарт­ным язы­ком наи­бо­лее рас­про­стра­нён­ных ре­ля­ци­он­ных СУБД.

Ге­не­ра­тор XML-до­ку­мен­тов ис­поль­зу­ет­ся в сис­те­мах об­ме­на со­об­ще­ния­ми, по­с­т­ро­ен­ных на стан­дар­тах, со­от­вет­ст­вую­щих кон­цеп­ции се­те­вых служб. Ука­зан­ные стан­дар­ты тре­бу­ют ис­поль­зо­ва­ния язы­ка XML (Extensible Markup Lan­gu­age – Рас­ши­рен­ный язык раз­мет­ки) в ка­че­ст­ве ба­зо­во­го язы­ка всех со­об­ще­ний, рас­про­стра­няе­мых ме­ж­ду або­нен­та­ми вы­чис­лит. се­ти.

Про­цесс мак­ро­ге­не­ра­ции тек­стов со­сто­ит из вво­да мак­ро­оп­ре­де­ле­ний и об­ра­бот­ки мак­ро­вы­зо­вов. Мак­ро­ге­не­ра­то­ру за­да­ёт­ся ис­ход­ный текст, в ко­то­ром есть под­ле­жа­щие за­ме­не по­сле­до­ва­тель­но­сти сим­во­лов (мак­ро­вы­зо­вы), и с по­мо­щью мак­ро­оп­ре­де­ле­ний ука­зы­ва­ет­ся, чем они долж­ны быть за­ме­не­ны. В ре­зуль­та­те ра­бо­ты мак­ро­про­цес­со­ра по­лу­ча­ет­ся текст, в ко­то­ром вы­пол­не­ны не­об­хо­ди­мые за­ме­ны, т. е. сде­ла­ны мак­ро­под­ста­нов­ки. Ино­гда мак­ро­ге­не­ра­тор встраи­ва­ет­ся в ком­пи­ля­тор (напр., язы­ки PL/1, C, C++).

Ге­не­ра­тор тес­тов или тес­то­вых по­сле­до­ва­тель­но­стей ана­ли­зи­ру­ет фор­маль­ное опи­са­ние объ­ек­та (язы­ка про­грамми­ро­ва­ния, про­грам­мы, сис­те­мы управ­ле­ния) и фор­ми­ру­ет не­об­хо­ди­мое чис­ло тес­то­вых при­ме­ров, об­ла­даю­щих за­дан­ны­ми ха­рак­те­ри­сти­ка­ми по уров­ню по­кры­тия опи­са­ния (напр., по чис­лу за­ло­жен­ных функ­ций, по чис­лу вет­вей по­то­ка управ­ле­ния). Сфор­ми­ро­ван­ные тес­ты ис­поль­зу­ют­ся в даль­ней­шем для про­вер­ки со­от­вет­ст­вия ис­сле­дуе­мо­го объ­ек­та его фор­маль­но­му опи­са­нию. Ре­зуль­та­ты тес­тов яв­ля­ют­ся од­ним из кри­те­ри­ев оцен­ки ка­че­ст­ва из­го­тов­лен­но­го про­грамм­но­го обес­пе­че­ния (см. Ве­ри­фи­ка­ция в ин­фор­ма­ти­ке).

Ге­не­ра­тор от­чё­тов по­зво­ля­ет под­го­то­вить не­об­хо­ди­мые поль­зо­ва­те­лю от­чёт­ные фор­мы про­из­воль­ной струк­ту­ры, вклю­чаю­щие таб­ли­цы, гра­фи­ки, тек­сто­вую ин­фор­ма­цию, ил­лю­ст­ра­ции.

Ге­не­ра­тор про­грамм лек­сич. и син­так­сич. раз­бо­ра пред­став­ля­ет со­бой про­грам­му, по­зво­ляю­щую по за­дан­но­му фор­маль­но­му опи­са­нию (в ви­де на­бо­ров ре­гу­ляр­ных вы­ра­же­ний или грам­ма­тич. пра­вил) не­ко­то­ро­го язы­ка про­грам­ми­ро­ва­ния ав­то­ма­ти­че­ски стро­ить про­грам­мы, про­из­во­дя­щие со­от­вет­ст­ву­ю­щий раз­бор пред­ло­же­ний это­го язы­ка. Ге­не­ри­руе­мая про­грам­ма раз­бо­ра со­сто­ит из на­бо­ра про­це­дур, ра­бо­таю­щих с ин­фор­ма­ци­ей, раз­ме­щён­ной в строя­щих­ся ге­не­ра­то­ром таб­ли­цах. Сфор­ми­ро­ван­ные про­це­ду­ры обыч­но яв­ля­ют­ся за­го­тов­ка­ми про­грамм, ко­то­рые по­сле руч­но­го ре­дак­ти­ро­ва­ния мо­гут ис­поль­зо­вать­ся при соз­да­нии ком­пи­ля­то­ров с язы­ков про­грам­ми­ро­ва­ния.

Ис­поль­зо­ва­ние слу­чай­ных чи­сел свя­за­но с по­треб­но­стью слу­чай­но­го вы­бо­ра в ма­те­ма­тич. ста­ти­сти­ке и тео­рии игр. По­лу­че­ние дей­ст­ви­тель­но слу­чай­ных чи­сел – очень не­про­стая за­да­ча, по­это­му б. ч. рас­чё­тов на ЭВМ про­из­во­дит­ся с ис­поль­зо­ва­ни­ем т. н. псев­до­слу­чай­ных чи­сел. Ге­не­ра­тор псев­до­слу­чай­ных чи­сел – про­грам­ма, ге­не­ри­рую­щая по­сле­до­ва­тель­ность чи­сел, эле­мен­ты ко­то­рой поч­ти не­за­ви­си­мы друг от дру­га и под­чи­ня­ют­ся за­дан­но­му рас­пре­де­ле­нию. Дан­ные про­грам­мы при­ме­ня­ют­ся при ре­ше­нии за­дач ма­те­ма­тического мо­де­ли­ро­ва­ния, ко­ди­ро­ва­ния, крип­то­гра­фии (напр., ге­не­ра­тор клю­чей или па­ро­лей в про­грамм­ных сис­те­мах обес­пе­че­ния безо­пас­но­сти об­ра­бот­ки и пе­ре­да­чи дан­ных) и др.

Лит.: Brown P. J. Macro processors and techniques for portable software. L., 1974; Бра­ун П. Мак­ро­про­цес­со­ры и мо­биль­ность про­грамм­но­го обес­пе­че­ния. М., 1977; Paxson V. Flex Fast lexical analyzer generator. Berk., 1995; Кнут Д. Э. Ис­кус­ст­во про­грам­ми­ро­ва­ния. М., 2000. Т. 2: По­лу­чис­лен­ные ме­то­ды; Donnelly C., Stallman R. Bison. The Yacc-compatible parser generator. Version 2.1. S. l., 2005.

Вернуться к началу