автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Автоматизированное конструирование программ на основе генерирующих модулей

кандидата физико-математических наук
Абдыкалыков, Талантбек Асиевич
город
Санкт-Петербург
год
1991
специальность ВАК РФ
05.13.11
Автореферат по информатике, вычислительной технике и управлению на тему «Автоматизированное конструирование программ на основе генерирующих модулей»

Автореферат диссертации по теме "Автоматизированное конструирование программ на основе генерирующих модулей"

САНКТ ПЕТЕРБУРГСКИЕ ГОСУДнРСТВЕННШ УНИВЕРСИТЕТ

НА ПРАВАЯ РУКОПИСИ

АБДНКАЛЬКОВ Талантбек Асиевич

АВТОМАТИЗИРОВАННОЕ КОНСТРУИРОВАНИЕ ПРОГРАММ НА ОСНОВЕ ГЕНЕРИРУЮЩИХ МОДУЛЕЙ

(u5.13.11 математическое и программное обеспечение вычислительных машин, комплексов, скстем и сетей!

АВТОРЕФЕРАТ диссертации на соискание ученой степени андидата физико-матеь.атических наук

САНКТ-ПЕТЕРБУРГ - 1991

Работа выполнена па кафедре НО ЭВМ математико-меха-нического факультета Сшь;т-Пвтербургекого государственно го университета.

Научный руководитель: доктор физико-математических наук Цейтин Г.С. >

Официальные слшонситм: доктор Физико-математических паук Баранов С.II. кандидат технических наук Вдовкин C.B.

i

Ведущая организация: Институт систем нцфорнатнки СО Ш! СССР (Новосибирск).

Защита состоится "Ой" Срв^ОХЯ 193,£,г. в Шр часов на заседании специализированного совета К ОСЗ.57.54 по присуждению ученой степе!ш кандидата физико-математическим наук в Санкт-Петербургском государственном университете по адресу: 190004, Санкт-Петербург, Старый Петергоф, Библиотечная площадь Д. 2.

1 *

С диссертацией моано ознакомиться в библиотеке, имени Л И.Горького Санкт-Петербургского государственного университета .

Автореферат разослан " " ноября 1001 г

Ученый секретарь специализированного совета, кандидат Физико-математических наук,

доцент

Кубенский А. А.

- з -

АКТУАЛЬНОСТЬ ПРОБЛЕМЫ. В настоящее время - в условней дальнейшего расширения сферы применения ЭВ!1 и возрастания стоимости создания программного обеспечения - решение задачи автоматизации (хотя бы частично!) программирования представ-тяот значительный интере'с. ¡Сак известно, одни из перспективных путей репенмя этой задачи состоит в создании систем с автоматическим синтезом программ, способный выдавать текст программы на традиционном языке высокого уровня ив ос спецн ■ Фшсаций, яыракешшх в некотором формализованном виде. Практика создания подобных систем выдвинула целый рлд проблем как чисто теоретических, связанных с необходимостью разработки средстп спецификации и синтеза программ, так и1 практических, связанных с внутренней организацией их работы м технологией их разработки.

ЦЕЛЬ ЛастояцеП диссертационной работы состояла в практическом репешш викеуказашш.ч- проблем путем разработки подхода г. конструирорания программ н создания экспериментальной сис темы синтеза программ на основе данного подхода. Подход к конструированы.'^ программ базируется на использовании специ алыю разработанного понятия - генерируюцего модуля.

МЕТОДИКА ИССЛЕДОВАНИЯ. 3 качестве основного приема рел лизпцнн использован объектно-ориентнрованный подход а ссчета нии с принципом модульности. Использован такяе опыт различных систем автоматического синтеза программ. Кроме того исполъэо вАНы общие методологические приемы, характерные для разработ ки трансляторов.

НАУЧНАЯ НОВИЗНА. В диссертации предлагается оригинальный подход к решеннго основных проблем, возникают!;: при автомати-зац:~1 процесса построения программы. С этой целью разработано понятие генерирующего модуля (г.м.), служащего Формой представления специфшсационних знаний. Па основе этого понятия разработан и реализован входной язык системы, являющийся языком спецификаций высокого уровня и идейно близкий к языкам с абстрактными типами данных и представления знаний. Разработаны методы реализации языка, основанные на '¡¡риненении методов искусственного питеялекта, и синтеза программ из заранее заготовленных г.м. Для предложенного подхода к автоматизации программирования разработаны принципы и методы внутренней ср-

ганнаации и Функционирования, воялощенные в экслериме» алъной системе, способной синтезировать программ! на различных целе-иьи языках.

ПРАКТИЧЕСКАЯ ЦЕННОСТЬ. Система может быть нсг. льзована как автономно для получения текстов программ на различных языках программирования, так и в составе других систем, которым по тем или иным причинам необходим автоматический синтез программ, разработанные в работе методы могут оказаться полезными при создании более мощных систем синтеза и при реали-эаци, трансляторов с объектно-ориентированныи языков.

АПРОБАЦИЯ РАБОТЫ. Результаты работы докладывались на заседаниях кафедры математического обеспечения ЭВМ математихо-механического факультета ЛГУ и на конференции молодых 'Применение персональных компьютеров в народном хозяйств«" (Фрунзе, 1989). <

ПУБЛИКАЦИИ. По материалам диссертации автором опублико-Заны три работы.

ОБЪЕЫ И СТРУКТУРА ДИССЕРТАЦИИ. Диссертация состоит из ¿ведения, четырех глав, разбиты» на разделы, заключения, сииска литературы и двух приложений.

Объем диссертации составляет 80 страниц машинописного текста, включает в себя 4 рисунка и список литературы из 27 наименований. '

СОДЕРЖАНИЕ РАБОТЫ.

Во введении раскрывается тема диссертационной работы и кратко описывается ее содержание по главам.

Первая глава посвящена описанию основных принципов предлагаемого подхода к автоматизации программирования. В ней характеризуются основные его особенности и отличия от других подходов с различных точек зрения, а также описано понятие Г.н. Как правило, при классификации систек^автоматического синтеза программ принимаются во внимание такие характеристики. как входной язик (язик спецификаций), целевой язык (язык синтезируемых программ), метод синтеза и предметная область к которой относится класс, синтезируемых программ. С этой точки Ърй-нип. наша система обладает следующими особенностями:

- в -

1) входным языком служит язык • спецификаций высокого

уровня, являющиеся языком представления знаний;

-

2) метод синтеза рассчитан на сборку программ;

3) она может быть настроена на определенный целевой язык и предметную область, т.е*. является в это!', смысле универсальной.

Важными и интересными характеристиками систем с автома-

*

тическич синтезом, программ являются способы представления и с использования в них знаний о программировании, целевом языке и предметной области. Знания, предстагляемые о системах автоматического синтеза программ, будем называть спсцификационны-ми. В напей системе для пре^тавлшм спецификационных знаки . используется специально разработанное средство, получившее название г.м. .

Понятие г<н. имеет ряд сходных черт с такими известными средствами представления знаний о ЗВН пак абстрактные типы данных и фреймы, но не подводится полтэстыз ни под одно из них. Представление спецификационных знаний в виде г.м. основано на соединяй« средств символьной обработки (макрогенерация, редактирование связей, умолчания) с си'змсяностями объек-тно-орнемтированного подхода к программировании. Г.м. призван играть роль связующего звена иезду спецификаций некс:орого понятия, алгоритма или программы и их реализацией на некотором языке программирования. •

' Г.п. могшо определить как совокупность компонент модуля, которые делают возможным его использование и обеспечивают доступ к нему. Люба- компонента модуля имеет свое имя - селектор. Dee компоненты модуля обязаны ,!меть различные селектору С капдыи модулем- связан набор базовых операций, к которым'относятся:

- операция создания объекта-экземпляра данного типа;

О

- операция выделения компоненты;

- операция генерации, реализующая переход к тексту на целевом языке.

базовые операции могут быть инициированы в контексте некоторого экземпляра типа, т.е. конкретчого объекта. Инициирование операции генерации з контексте объекта называется генерацией объекта. Генерация является одним из возможных дейсг-

- Б -

вий над объектом и состоит из имени объекта. Кроне того можно устанавливать связи между объектами и присваивать значения его компонентам.

Принятый в системе подход обладает следующими особенностями, отличающими его от других работ по представлению знаний и синтезу программ:

1) единый аппарат г.м. используется как для представления знаний, так и для спецификации алгоритмов и программ решения задач определенной предметной области;

2) знания о целевом языке не отделяются от знаний о предметной области или, точнее говоря, целевой язык рассматривается как одна из возможных предметных областей, которая должна быть описана в первую очередь; s»

3) целевая программа строится на основе описания.объединения ее различных, изолированна описанных аспектов;

4) предусматривается возможность накопления спецификаци-онных знаний в ЭВМ в виде библиотек г.м. (баз знаний) и использования этих знаний в пгоцессе построения программы.

Понятие г.м. служит основным понятием входного языка системы.

Вторая глава посвящена описанию входного языка системы. Данный язык подучил название SL (от Specification Language) и знач тельно отличается от традиционных Языков. В SL описываются новые модули, которые записываются в библиотеку для дальнейшего применения. Назначение языка состоит в том, чтобы позволять описывать различные виды спецификационных знаний, а также задавать спецификации программ, которые необходимо син-гезчроБать, используя определенную библиотеку модулей.

Особенность языка заключается в трактовке типов как значений и наличии абстрактных объектов. Считается, что любой модуль, имеющийся в библиотеке, определяет некоторый тип и существует операция языка, позволяющая строить его экземпляры. Объекты, используемые в языке, могут и^еть имя и значение. В качестве значений могут использоваться либо объекты-экземпляры типов, либо терминальные объекты, которыми являются строки и числыч Абстрактными являются объекты, не шлющие значение. Грубо говоря, абстрактный объект - просто некоторое имя. Наличие абстрактных объектов в языке дает воз-

можность учитывать те объекты, значении которых до этого мсь мента не определены или в разных контекстах бывают разными.

•V

Значение, абстрактному объекту может задаваться позже( при использовании модуля. Абстрактные,объекты являются полноправными объектами языка'» могут использоваться точно также как и конкретные, т.е. имеющие значение. При задании значений аб :т-рактному объекту объектом-экземпляром некоторого типа одновременно происходит и приписывание типа этому объекту. Это означает, что данный объект будет обладать всеми свойствами указанного типа. С этом и заключается трактовка типов как значений.

' Описание г.м. говорит,л1ользователю, что 'любой объек -этого типа состоит из определенного набора компонент с определенными именами, Каждая компонента представляет собой некоторый объект -конкретный или абстрактный. 1С любой из них могшо обратиться в соответствии с ее природой - получить доступ к конкретному или задать значение абстрактному объекту. Компоненты модуля могут быть связаны друг с другом и с объектами, использгоГ/ими при описании модуля. Интерфейс между объектами осуцествляется в символьной форме Росредствсм именованных компонент. Задание значения компоненту объекта называется уточнением. Уточнения определяют некоторые изменения в конкретном объекте. Для абстргктного же объекта' они определяют некоторые условия на тип, используемый в качестве значения для этого объекта. Значения представляет собой либо терминальные объекты, либо ссылку на некоторый объект. В случае, если компоненты разли .ных объектов пли одного объекта ссылаются на один и тот .те объект, то они стождествляются. Это означает, что данные компоненты ранее рассматривавшиеся независимо, в дальнейшем будут представлять один и тот же объект. Отождестьление компонент приводит к току, что изменения в одной из них одновременно вызывают изменения и в других, связанных с ней. Таким образом,каждый модуль, имекщнй структуру и связи, Фиксирует некоторый шаблон связей. Эти связи вместе с объектами, используемыми при описании моМля, образуют собственный контекст модуля, который фогмируетс^-,при его описании и .~естко связан с ним. Важным свойством модуля является настраиваемость ¡1а контекст использования. Средством наст-

ройки служат параметры модуля, которые является, как повило, абстрактными объектами. Контекст использования Формируется из собственного контекста модуля посредством уточнения (конкретизации) параметров. При отсутствии параметров оба контекста совпадают, т.е. модуль не является настраиваемым.

Описание синтаксиса языка выполнено заданием грамматических правил в виде модифицированных форм Бэкуса-Наура, а семантики г результатом генерации модулей, описанных в приведенных примерах. В качестве целевого «зыка выбран Алгол-68.

Программа на SL представляет собой описание одного из пяти возможных видов модулей: первичного модуля, схемы, программы, контекстного или кластерного модулей, Наличие различ-

-

ных видов модулей позволяет обеспечить возможность накоплена'-различных видов спецнфнкадионкых знаний.

Описание первичного модуля доглядит следующим образом: <имя>="<текст>" END.

Здесь <имя> - имя.под которым модуль после трансляции

ч

должен быть помещен в библиотеку, а под текстом понимается произвольная последовательность символов. Содержание текста транслятором никак не анализируется. Первичные модули (п.м.) являются атомарными, т.е.! не имеющими структуры и компонент. Результатом генерации л.и. является порождение его тела, т^е. последовательности .символов, заданных в'описании. П.м. предназначены для представления конкретных знаний, спецификация и реализация таких модулей совпадают. В виде п. и. можно описы-ьать и Фрагменты конкретных программ на целевой языке.

Программа на 6L, описывающая не атомарные модули, состоит из следуюаих частей: заголовка, тела модула и конца END. Конкретный вид заголовка it тела модуля зависит от вида модуля, но существуют конструкции обиие для всех видов модулей.

Первой такой конструкцией являются описания. Описания в языке могут быть трех видов: описания параметров, данных и

связей. Описание параметров модуля представляет собой одно

0

или несколько имен, записанных после слова PARAM. Таким образом, каждый параметр представляет собой просто имя.

Данные задаются в^виде одного или нескольких объекто., ¿^данных после слова LET. описание объекта имеет вид: <о6ъ-окт>:<описатель>, где <объект> - некоторое имя, а описатель*

>еделяет значение объекта. Описателен может быть:

1) имя типа, хранящегося в библиотеке;

2) строка!

3) ЧИСЛО!

4) компонента некоторого объекта или параметра;

5) генерирующее выражение - последовательность строк и ектов £ли параметров.

Описатедь-тиЯ создает объект-экземпляр типа с определен-нменем. Каждый модуль, хранящийся в библиотеке, можно ис-ьзовать в качестве описателя. В этой случае можно связы-

ь с компонентами используемого модуля значения. Объекты,

■ ф.

даваение компонентами» могут бить как абстрактными, так и кретными. Остальные описатели позволяют обозначить одним нем, например, некоторую символьную строку.

Приведем пример описания параметров и данных. AM ara > ñamo; r:real,í:4,"з:=",а:агв.паие,Ь:г" "f,o:r" "в"0", d:-m:="f;

Здесь описаны параметры AKG и HAMS; В описан как объект a ¿EAL; F служит обозначением числа 4: А является компо-той НАЛЕ параметра АШ; В, С, D - объекты, заданные разными генерирующими выражениями.

В SL нет традиционных выделенных агрегатов данных, т.е. сивов, структур и т.д. Вместо этого данные и параметры моя связываются посредством уточнений. Описание связей моду-представляет собой одно или несколько уточнений, идущих ле слова LIMK5. Уточнение имеет вид: <компонента> ! оле-т>=<значение>. Элементом называется числовая компонента удя, их имеют так называемые базовые модули. Значением мо-быть объект, параметр или терминальный объект, т.е. строили число. Уточнения одного объекта (параметра) могут быть аны вместе в одном месте, следующим образом: <объект>!<па-етр>(<ссылка»,...), где <ссылка» - <имя>!<число>=<значе->. Совокупность уточнений объекта (параметра) называется тройкой даннетб объекта (параметра).

Слздукщал конструкция является обязательной для схемных программных модулей. Она описывает операцию генерации для х видов модулей и представляет собой последовательность

генераций данных и параметров модуля, записанных после слов GEN. ''

Генерация имеет вид: <параметр»!«объект»!«компонента» <генерирующее выражение». Результат генерации зависит от вид; объекта.

В случае конкретного объекта результат зависит от конкретного экземпляра типа, т.е. объекта с учетом его связей.

Результатом генерации параметра является порождение еп изображения, т.е. его имени, заключенного в угловые скобки.

Если объект задан строкой или числом, то генерация порождает саму эту стирку или число.

В случае использования компоненты результат генерацш также зависит от вида объекта представляемого компонентой. Если это конкретный объект, то порождается его операция генерации. В противном случае порождается некоторый комментарий, представляющий собой ^текст следующего вида: /* компонента <имя компоненты» у <объект» */.

Порождение такого комментария возможно в двух случаях:

1) объект у которого берется компонента является абстрактным;

2) объект является конкретным, но не имеет компоненты с данным именем.

Генерирующее выражение задает целый блок действий, состоящий из генераций его операндов. Порядок генерации определяется последовательностью операндов.

Рассмотрим, например, объекты, описанные в выше приведенном примере. Так генерация объекта F породит/», а объекта S породит з:=. Генерация объекта А породит /* компонента näma у arg */. так как ARG является абстрактным объектом. Генерация объектов В, С, D породит соответственно real 4, real s:=0 и m:=4. Здесь предполагается, что объекты типа REAL, генерируют real.

Тело и заголовок схемы имеют вид: SCHEMA <имя>t<парамет-ры>:П<данные>;И<связи»;1«операция генерации». Операция генерации схемы определяется блоком генераций, определенным в теле ее описания. Поэтому ее выполнение заключается в выполнении всего этого блока генераций.

Наличии схемных модулей создает широкие возможности для различных видов абстракций и позволяет описывать абстрактные

модули общего вида и спецификации синтаксических конструкций

целевого языка. Например, такую конструкцию плгола-68 как

присваивание можно описать в виде схемы следующим образом:

SCHEMA assign;

РАПАМ deat,3ource;

GEN dest":="source END.

Здесь do&t и source - параметры модуля. Операция генерации, выполненная над объектами типа ASSIGN сгенерирует следующий текст <de3t>:=<souree>.

Заголовок и тело программного модуля имеют вид: PROGRAM <имя>;t <параметры>;11<даниые>^) I<связи>;J<операция генерации». Как видно, программные и схемные модули выглядят аналогично. Разница между этими видами модулей заключается в интерпретации операции генерации. В программном модуле предполагается, что минимальной единицей соответствующей каждой генерации, выполняемой в теле модуля, является Фраза (оператор) целевого языка. При генерации каждый оператор, как правило, генерируется с новой строки и отделяется от других в соответствии с синтаксисом целевого языка.

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

4 ОДУ Л Я .

?KOGRAM prim; jET a:as3isn,n:"n"; alWKS a(dest=n,source=5); JEtl "real "n;a EHD.

В этом модуле использован ранее определенный модуль IS5IGH. Объекту А типа ASSIGH задаются уточнения, Формирующие ' него контекст использования. Объекты типа PRIM будут гене->ировать следующий фрагмент программы на Алголе-68: eal п; .-.=5

Заголовок и тело контекстного модуля имеют вид: <имя> 13 протптип>;<контекст>.

о

Здесь <прототип> - некоторый модуль, имеющийся в библио-

еке.

Описание контекста имеет вид : i«параметры?;П<ддн-

- 12 -

ные>;1<настройка>I<добавление операций)1.

!

Описание настройки - последовательность ссылок прототи па, заданных после слова CONTEXT.

К прототипу можно добавлять не только новые параметры но и абстрактные операции или компоненты, являющиеся модуля ми. Добавление операций представляет собой одно или нескольк описаний операций, записанным после слова ADDOF и разделенны точкой с запятой.

Описание операции имеет вид: <иия операции>="t<тело one рации>'Ч". Тело операции мохет быть задано либо последова тельностыо генераций^ либо настройкой некоторого модуля. Нас фройка модуля состоит из имени модуля, представляющего собо прототип для данной операции и ряда ссылок его параметров записанных после слова WHERE. Ссылки могут отсутствовать. /16 страктная операция, представленная описанием операции генера ции, оформляется как операция генерации программного модуля.

Например, спецификацию операции присваивания нулю чере, прототип ASSIGN можно описать следующим образом: clear IS assign; CONTEXT зоигсе=0 END.

Модуль CLEAR имеет параметр DEST по наследству от модул! ASSioN, а его операция генерации порождает текст следующее вида: <dect>:=0. -

Наличие механизма, контекстных модулей дает возможност! пользователю частично и полностью изменять 'прототип бе--* втор-¡кения в его исходный текст и зафиксировать эти изменения 1 виде нового модуля. Контекстные модули позволяют настраивав некоторые общие абстрактные модули на конкретную.область применения, а также выразить, например, тот факт, что данный алгоритм должен получаться путем адаптации другого, более общего алгоритма.

Заголовок и. тело кластерного модуля имеют вид: CLUSTEI <имя>;<тело кластера:». Тело кластера состоит из возможны; описаний параметров, данных, связей и ряда описаний операций.

Кластерный модуль определяет тип как множество операций, возможно, имеющих общие параметры. Операция генерации кластерного модуля не имеет смысла, т.е. не порождает ннкакогс текста. Операция генерации может быть применена к его компо-

ienTnti. Абстрактные операции кластерного модуля можно исполь-ювать как для создания объектов, так и генерации..

Кластерные.модули представляют собой абстракции второго гровнп по отноыёниш к модулям, используемым в качестве опера-1Ий. Они позволяют специфицировать структуры данных, алгорит-1Ы и концептуальные понятия путем связывание подулей, выража-зцих' их доведение в различных аспектах в одну структуру. Мо-1улн связываются посредством параметров. Таким образом, меха-шзм кластерных модулей позволяет описывать концептуальное знание.

Так, например, понятие переменной,^огно описать следующим модулем. DUSTER variable;

?АПАМ mode,name; «

iecl=tGEH node" "namsí; a33gn=íassign VíHERH dest=narael ÍI1D.

Тип VARIABLE определен как множество операций описания (ВЕСЬ) н присваивания значения {ASSGH). Операция ASSGU имеет параметр SOURCE, являющийся параметром прототипа. Использо-зать 'данный модуль можно, например, следующим образом: PROGRAM priml;

[jET vi vari лЫе ,r: "real" ,a: v.aasgn; íilíJKS a.source=5, (mode=r,name="a"); 3EN v.decl; a END.

Здесь операции модуля VARIABLE используются как для сознания объектов, так и для генерации. Объекты типа PRIM1 будут генерировать следующий текст на Алгоде-68: real з; а:=5.

Третья глава содержит описание технологии конструирования программ из (г.м.). Аппарат г.и. позволяет реализовать сборку программ, основанную на символьных связах. Основная идея состоит в том, чтобы иметь возможность обозначить именем в первоначальном тексте "идею" некоторого действия или некоторую структуру данных. В дальнейнем можно определять для этого имени нужное макрорасширение. В терминах г.м. это означает, что данное имя нужно описать как параметр. Макрорасширение для этого параметра определяется Путем уточнения при использовании модуля.

Конструирование программ из г.м базируется на из коп ¡i е-

нии спецификациоиных знаний в ЭВМ и автоматической синтес программ и? основе этих знаний. Для обеспечения этого систем предоставляет средства, позволяющие:

1) определять в виде г.н. основные понятия программиро вания (идентификаторы, описания, вызовы, опгратори, скобочны структуры, массивы и т.д.) и фрагменты программ па целевом языке;

2) определять в виде г.м. концептуальные понятия опреде ленной предметной области;

3) формировать окружение, необходимое для синтеза кош; ретных программ решения задач определенной предметной облас ти;

4) поддерживать разработку алгоритмов и программ ка! "сверху-вниз", так и "снизу-вверх".

Можно выделить следующие этапы при конструировании программ из генерирующих модулей:

1) описание целевого языка;

2) формирование окружения, необходимого для разработк! конкретных алгоритмов и программ решения задач определенно? предметной области;

3) разработка конкретных алгоритмов и программ.

Здесь под разработкой конкретных алгоритмов и программ понимается определение их спецификаций в виде г.м. (програм^^т ных или контекстных), из которых система автоматически синтезирует, текст программы на целевом языке. Целевая программа при этом собирается из заранее заготовленных модулей окружения. Формирование окружения предполагает разработку целой системы взаимосвязанных модулей. Роль модулей в этом окружении может быть различной. Могут быть абстрактные модули, удобные для определения на их основе других модулей, и чспо-могательные модули, не имеющие сами по себе смысла. В виде модулей могут быть оформлены некоторые понятия, встречающиеся фактически, но редко оформляемые формально в распространенных яхыках и системах программирования.

При формировании окружения для определенной предметной области необходимо выбрать основные понятия и действия, которые надо впоследствии отразить в наборе г.м. Поскольку г.м. представляет собой многократно используемый программный эле-

т, то можно предположить, что такой набор не будет слишком ноэдким. Важную роль при этом играет возможность обобще-, т.е. определения некоторого параметризованного г.м., крстигацпя которого в различных контекстах задает различ-види понятия или алгоритма, выражаемого им. Под различны-видами имеется ввиду, презде всего, выражение данного по-ия илII алгоритма на различных языках программирования. Не-орме такие модули оформлены в виде базовых модулей и со-;катся в системной библиотеке г.м. или базе знаний системы, иде базогых модулей оформлены некоторые основные понятия грамиировашш (абстрактные итера-ор^ скобочные структуры .д.). Также базовыми являются некоторые другие модули, волякщие управлять процессом размещения при генерации, подать стандартные идентификаторы и т.п.

В третьей главе дано подробное описание базовых модулей темп. База знаний системы содержит знания в наиболее об, абстрактной Форме. На их основе может быть построено :саиие целевого языка, а вернее некоторого его подмножест-

Паказано как ногио определить некоторые понятия языка Ад-

(

на основе базовых модулей средствами языка БЬ. Такхе .ерхится больиое количество примеров, демонстрирующих воз постн конструирования программ из г.м.

В четвертой главе-освещаются вопросы реализации системы, качестве основы для реализации была использована система 'граммировання на ассоциативных сетях Г.С.Цейтина. Данная гтеиа обладает подходящими качествами как для реализации :., так и сборки программ. Этим и был обусловлен ее выбор, ■лаве приведены основные принципы и описана реализации сос-ных частей системы: транслятора с входного языка системы, ератора программ1 и базовых модулей.

В Заключении сформулированы основные результаты диссер-ионной работы:

1. Предложено средство для спецификации и синтеза прог-м - г.м.

2. На основе данного понятия разработан яуык специфика -

1 высокого уровня, являющийся языком представления знаний и

:адающий достаточно гибкими средствами представления алго-

с

мов и данных, вне зависимости от цепе.вогб л!пкз и предмет-

ной области.

3. Реализован транслятор-с языка СЬ, запрограммировать на ассоциативных сетях и основанный на применении методов не кусственного интеллекта.

4. Разработан метод синтеза программ, основанный н< сборке программ из г.м.

5. Предложен подход к конструированию программ, базирующийся на накоплении спецификаиионных знаний в ЭВМ (в внд< библиотек, г.-'.) и автоматическом синтезе программ на основе этих знаний.

6. Написана и осажена экспериментальная система синтеза программ, позволившая показать на практике жизнеспособность м Удобство предложенного подхода.

Приложение 1 содержит описание синтаксиса языка 5Ь в виде модифицированных форм Бэкуса-Наура.

В приложении 2 содержится перечень сообщений об ошибках транслятора с языка ЗЬ.

По теме диссертации опубликованы следующие работы:

1. Абдыкалывов Т.А. Применение искусственного интеллекта для синтеза программ // Применение персональных компьютеров в народном хозяйстве. Фрунзе., 1989.С.53..

2. Абдыкалыков Г.А. Язык спецификаций БЬ // Депонировано в ВИНИТИ N: 3214 - В от 16.06.89.

3. Абдыкалыков Т.Д. Синтез программ на основе абстрактных тиров данных // Вестм. Ленингр. Ун-та. Сер.1., 1989. Вып. 3 (Н г 15}. С.90-91.

Типография АН Республики Кыргызстан Заказ № 286 Тираж 100. Бесплатно