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

кандидата технических наук
Иосенкин, Вячеслав Яковлевич
город
Москва
год
2005
специальность ВАК РФ
05.13.11
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Технология контекстного программирования и ее применение»

Автореферат диссертации по теме "Технология контекстного программирования и ее применение"

РОССИЙСКАЯ АКАДЕМИЯ НАУК ИНСТИТУТ ПРОБЛЕМ УПРАВЛЕНИЯ им. В. А. ТРАПЕЗНИКОВА

На правах рукописи

ИОСЕНКИН ВЯЧЕСЛАВ ЯКОВЛЕВИЧ

ТЕХНОЛОГИЯ КОНТЕКСТНОГО ПРОГРАММИРОВАНИЯ И ЕЕ ПРИМЕНЕНИЕ

Специальность: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

Москва, 2005

2М& /72/9

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

На правах рукописи

ИОСЕНКИН ВЯЧЕСЛАВ ЯКОВЛЕВИЧ

ТЕХНОЛОГИЯ КОНТЕКСТНОГО ПРОГРАММИРОВАНИЯ И ЕЕ ПРИМЕНЕНИЕ

Специальность: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

Москва, 2005 -

' ** Н(ти4»4

••* и ;

т/466

Работа выполнена в Приднестровском государственном университете им. Т.Г. Шевченко

Научный руководитель

B.C. Выхованец, кандидат технических наук, доцент

Официальные оппоненты:

H.A. Абрамова, доктор технических наук, профессор В.В. Макрусев, доктор физико-математических наук, ст. науч. сотр.

Ведущая организация

ОАО «Институт электронных управляющих машин»

Защита состоится 21 марта 2005 г. в 11 часов на заседании диссертационного совета Д002.226.03 Института проблем управления им. В.А.Трапезникова РАН по адресу: 117997, Москва, ул. Профсоюзная, 65.

С диссертацией можно ознакомиться в библиотеке инсти-

тута.

Автореферат разослан 11 февраля 2005 г.

Ученый секретарь диссертационного совета,^/ д-р техн. наук

ЮС НАЦИОНАЛЫ*! БИБЛИОТЕКА С,П«тм|№Г О» Щ ИТ

'и*-1'

Б.В. Юркевич

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

Актуальность темы. При всем кажущемся благополучии в области построения открытых информационных систем узким местом остается создание эффективной технологии программирования и соответствующего формального языка, составляющих основную часть прикладного интерфейса. Недостатком современных технологий программирования остается объективная трудоемкость, интеллектуальная и технологическая сложность процесса программирования.

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

Последствиями этого являются:

- сложность постановки задач;

- высокая стоимость разработки программных средств;

- низкая эффективность и надежность программирования;

- большой объем кода программы.

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

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

В настоящее время для решения проблемы семантического разрыва используется повышение уровня абстракций языков программирования в рамках объектно-ориентированной и аспекта о-ориентированной методологии проектирования программных средств. Однако последнее снимает только часть проблем, не затрагивая существенным образом семантику и синтаксис языков программирования Появление новых объектно-ориентированных технологий разработки и интеграции приложений, таких как .Net и Java, показало важность обеспечения как мультиязыковой, так и кросс-платформенной среды разработки. Это явилось следствием стремления использовать такую технологию программирования, которая позволяет повысить скорость разработки программ и приблизить процесс проектирования к парадигмам постановки и решения прикладных задач. При этом требуется обеспечить не только уровень абстракции, необходимый для описания прикладных задач, но и использовать естественные структуру и синтаксис их определения, не накладывая при этом ограничений на переносимость и мультиязычность.

Объектом исследования являются формальные языки и методы их грамматического разбора и компиляции.

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

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

В соответствии с поставленной целью решались следующие задачи:

1) исследование явления семантического разрыва в современных информационных системах и определение эффективной технологии его сокращения;

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

3) разработка технологии контекстного программирования;

4) реализация компилятора для системы контекстного проектирования программных средств.

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

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

Теоретические основы исследования. Важное методологическое значение для разработки исследуемой темы имели труды зарубежных и отечественных ученых в области анализа и разработки технологий программирования и инженерии знаний, принципов трансляции, а также синтаксического и семантического разбора, в частности: Липаева В.В., Богатырева Р., Гасаненко М.Л., Мартыненко Б. К., Михелева В. М., Буч Г., Морозова М.Н., Дехтяренко И.А. Поспелова Д.А., Заслонко А.Н., Джексона П., Ястрежембского В.Р., Майера Б., Вирта Н., Франца М.', Броди Л., Рейуорд-Смита В., Ахо А., Ульмана Д., Дахм М., Маддока Д., Страуструпа Б. и других.

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

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

Внедрение результатов исследования. Результаты, полученные в диссертационной работе, используются в учебном процессе по дисциплинам «Теория автоматов», «Основы искусствен-

ного интеллекта» и «Технология программирования» для специальности 220100 «Вычислительные машины, комплексы, системы и сети» в Приднестровском государственном университете им. Т.Г. Шевченко, в программном средстве ViBuilder Organizer (www.vibuilder.com) корпорации VI Soft Inc. (США, Нью-Йорк).

Основные положения, выносимые на защиту:

1) принципы построения языковых средств с контекстной интерпретацией лексем;

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

3) принципы технологии контекстного программирования;

4) методика формализации знаний предметной области путем построения ее языковой модели.

Апробация работы. Основные результаты диссертации докладывались и обсуждались на семинарах в НИКБ «Компьютерные технологии» Приднестровского государственного университета им. Т.Г. Шевченко (Тирасполь, 2001-2003 гг.) и в Российской таможенной академии (Москва, 2004 г.), на международной научно-практической конференции «Региональные особенности развития машино- и приборостроения, информационных технологий, проблемы и опыт подготовки кадров» (Тирасполь, 2001 г.), на международной научно-практической конференции «Математическое моделирование в образовании, науке и производстве» (Тирасполь, 2001 г.), на второй международной научно-практической конференции «Современные информационные и электронные технологии» (Одесса, 2001 г.), на международной конференции «Параллельные вычисления и задачи управления» (Москва, 2001 г.), на второй международной конференции «Идентификация систем и задачи управления» (Москва, 2003 г.), на расширенном семинаре 31-й и 5-й лабораторий Института проблем управления им. В.А. Трапезникова РАН (Москва, 2004 г.) и в ряде других международных и региональных научно-практических конференциях.

Публикации. Основные положения и выводы диссертационной работы изложены в 17 научных статьях общим объемом 7,1 п.л. Часть материалов, отражающих некоторые вопросы диссертационной работы, опубликованы в соавторстве. В статье [2] автору принадлежит разработка механизма компиляции и аспектов применения технологии в телекоммуникационных системах, в статье [3] - система контекстного программирования и аспекты ее

применения в моделировании, в [4] - рассмотрение некоторых вопросов формализации семантики искусственных языков, в [5] -экономическая эффективность применения технологии, в [7] -вопросы, связанные со снижением сложности и повышением надежности программного обеспечения, а также определение и обоснование целесообразности применения технологии в ряде областей, [12] - разработка контекстной модели описания предметной области и ее применение, [13] - разработка механизма компиляции знаний с использованием предложенной технологии.

Структура и объем диссертации. Диссертационная работа объемом 211 страниц, из них 190 страниц основного текста, состоит из введения, трех глав, включая 11 рисунков, заключения, списка использованной литературы из 194 наименований и 11 приложений, содержащих акты внедрения результатов работы.

ОСНОВНЫЕ ПОЛОЖЕНИЯ ДИССЕРТАЦИИ

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

Первая глава посвящена исследованию современного состояния комплексной проблемы взаимодействия открытых информационных систем и известных технологий программирования. На основе проведенного анализа существующих объектно-ориентированных (00) технологий и ОО языков программирования и исследования преимуществ и недостатков технологий программирования Java, Juice, .Net, Форт и др. выявлены перспективные черты языковых средств с точки зрения решения проблемы сокращения семантического разрыва Показано, что перспективной является компонентная объектно-ориентированная технология программирования, основанная на следующих принципах:

- полная поддержка объектно-ориентированной методологии путем реализации децентрализации, контрактности, самодостаточности, классификации и бесшовности;

- независимость программного обеспечения от аппаратной и операционной платформ;

- расширяемость систем за счет миграции кода в распределенной компьютерной среде;

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

- использование вычислительной модели, опирающейся на взаимодействие «событие/обработчик»;

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

- выполнение независимой, раздельной и распределенной компиляции;

- разграничение описаний интерфейсной и реализационной частей модуля;

- возможность высокоуровневого (безопасного и переносимого) и низкоуровневого (опасного и непереносимого) программирования;

- поддержка многоязыковой среды программирования;

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

Исследована эволюция языков программирования, проанализированы их синтаксис и семантика, рассмотрены свойства и недостатки генераторов синтаксических анализаторов (Yacc, Bison, Zubr и др.). В результате был сделан вывод, что для повышения выразительности языковых средств и уменьшения семантического разрыва между моделями различных уровней иерархии, описывающей предметную область, достаточно эффективно могут быть использованы языковые конструкции, представляемые в формализме контекстно-свободных грамматик, однако наиболее широкого их класса, включающего, в том числе, и неоднозначные грамматики Для решения проблемы языковой неоднозначности, связанной с контекстной интерпретацией слов, предложено строить языковые конструкции на основе контекстной интерпретации лексем.

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

1) основные синтаксические сущности: понятия и предложения;

2) принцип аксиоматизации: имеется множество базовых сущностей;

3) принцип привязки: базовые сущности только декларируются, их реализация осуществляется средствами более низкого уровня;

4) принцип индукции: новые сущности описываются через ранее определенные и только через них;

5) принцип контекстности: семантическая интерпретация каждой сущности определяется окружающим ее контекстом;

6) принцип рекурсии: независимая декларация и реализация сущностей;

7) принцип детерминизма: два предложения, описывающих одно и то же понятие имеют различный семантический приоритет;

8) принцип структуризации: разделение программы на декларативную, процедурную и ситуационную части. Декларативная часть определяет иерархию понятий и структуру предложений. Процедурная часть задает интерпретацию понятий в контексте предложений. Ситуационная часть содержит описание проблемной ситуации и представляет собой исполняемую часть программы;

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

10) принцип интерпретации: процедурная часть привязывается к решаемой задаче или аспекту ее детализации.

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

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

Использование контекстной интерпретации лексем встречается в современных языках программирования, но, как правило, эпизодически и непоследовательно. Например, в языке Perl каждая операция и каждый терм вычисляются в определенном контексте, который определяет поведение операции и интерпретацию возвращаемого ею значения. В нем существует два основных контекста: скалярный и списковый. Переопределять или задавать пользовательский контекст нельзя.

В языке М тип значения вершины дерева не декларируется. Строковая, числовая или логическая интерпретация значения определяется контекстом операций в выражении.

Перегрузка операций в языке С++ также представляет собой контекстную привязку этих операций к типам данных, с которыми они работают. Однако число таких операций ограничено, и количество элементов контекста для каждой операции строго фиксировано.

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

и

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

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

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

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

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

- лексемы и шаблоны из области разбора предложения непосредственно сопоставляются терминальным знакам входного потока;

- выполняется код компиляции, текст которого приводится в квадратных скобках и компилируется во время декларации предложения;

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

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

Если грамматический разбор закончился неудачей, производится откат назад и выбирается следующее предложение в соответствии с определенной системой их приоритета. Если при текущем контексте и заданном состоянии входного потока ни одно из предложений не применимо, то выводится сообщение об ошибке в программе.

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

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

Стек контекста

Стек операндов

Описание предметной области

Базовое понятие

| Понятие 1 _

Понятие 2 —•

, Предложение 1

Предложение 2

Контекст понятие, понятие, понятие.

Разбор понятия, шаблоны, лексемы, [компиляция], .

Результат понятие

Интерпретация

{предложение, предложение, }

понятие 2 понятие 1 понятие О

А

Компилятор

ТГ

терм О

терм 1

терм N-1

Рис. Вычислительный механизм контекстной компиляции

объект 2

объект 1

И~£од

Входной поток

объект О ——

Виртуальная машина

возврат 1

лок. О

лок. М-1

возврат О

лок О

Стек возвратов

ложения, по своей сути, первичны Кодогенерация в этом случае осуществляется из текста компиляции путем использования единственного встроенного предложения, обозначаемого лексемой «@». Результатом работы компилятора является код виртуальной машины, состоящий из низкоуровневых (непереносимых) команд и высокоуровневых (переносимых) процедурных вызовов в область интерпретации предложения. Предлагается в зависимости от аспекта решаемой задачи один и тот же процедурный вызов интерпретировать по-разному, приводя несколько областей интерпретации.

Для демонстрации рассмотрим пример описания логических выражений с использованием реализованной системы контекстного программирования (СКП)

// Декларативная часть и процедурная часть

boolean follows // понятие «логическое», будет описано позже

logical as name' // понятие «логическая переменная»

'boolean' name floe' @]; // предложение декларации переменной

logical 'is' boolean [put' @] // присваивание значения переменной

logic as logical- // понятие «логическое значение»

logical ['gef @], logic; // конвертор переменной в ее значение

■false' ['0' logic; // константа «ложь»

true' [Т @], logic; // константа «истина»

'f boolean as а У, logic {а} // интерпретация скобок

negation is logic // понятие «отрицание»

'not' logic fnof @], negation // описание отрицания

conjunction is negation. // понятие «конъюнкция»

negation 'antf negation [and' @], conjunction, disjunction is conjunction. // понятие «дизъюнкция»

conjunction 'or' conjunction ['or' @], disjunction equaling is disjunction : // операция «эквивапенция»

disjunction as a 'equal' disjunction as b, equaling {a and b or not a and not b} implication is equaling - II операция «импликация»

equaling as a 'implicif equaling as b, implication {not a or b} boolean is implication // Ситуационная часть

{logical x, logical a, logical b, logical c, logical d

a is false, b is true, с is a, d is true or a, x is a or b and not (c or not d).}

Главным будет являться понятие «логическое», задающееся через понятие boolean. Но для его определения необходимо сначала создать понятие «логическая переменная» с помощью понятия logical, являющегося потомком понятия name, выражающего «имя переменной». Т.е. name - это слово, где первый символ буква, а далее буквы или цифры. Результатом применения предложения «Ъоо1еап' паше» является декларация переменной типа Ъоо1еап' (boolean х). Предложение «logical 'is' boolean» описывает конструкцию, которая присваивает ей логическое значение (х is true). Понятие logic является первичным логическим понятием и определяет, что такое есть значение логической переменной - константы «истина», «ложь» или любое логическое выражение в скобках. Затем определяется понятие отрицание через понятие logic (т. е. отрицание - это слово not, после которого следует логическая константа или выражение в скобках), далее через отрицание определяется конъюнкция. Понятие слева от 'and' есть контекст применения данного слова, так как операция конъюнкции может быть применена, только в том случае, если ей предшествовало отрицание или первичное выражение. Если же реально там будет стоять, например, строка, - то будет применено какое-то другое предложение, например, реализующее конкатенацию строк, либо будет обнаружена ошибка. Аналогично определяются дизъюнкция, эквиваленция и импликация.

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

Рассмотрев код понятия «эквиваленция»: {a and b or not a and not b}, можно заметить, что этот код есть не что иное, как ранее определенная дизъюнкция двух ранее определенных конъюнкций. Т.е. интерпретация понятия «эквиваленция» осуществляется также через ранее определенные понятия: дизъюнкцию, конъюн-

кцию и др., а значит, при ее определении используются конструкции этих понятий, соответственно работает и приоритет операций.

Результатом обработки кода ситуационной части будет создание логических переменных х, а, Ь, с, d и вычисление значения, равного «true», переменной х.

Определены четыре основных этапа построения модели предметной области и адекватного ей языкового средства на основе разработанной технологии:

1) классификация - декларация понятий, их родственных и перекрестных связей;

2) моделирование - представление знаний о предметной области через предложения и контекст их применения;

3) представление - задание интерпретации предложений в аспекте решаемой задачи;

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

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

Третья глава посвящена вопросам определения механизмов представления и компиляции знаний, а также практической реализации синтаксического анализатора и виртуальной машины на основе разработанной модели. Реализованный компилятор СКП имеет ряд важных в рамках исследуемой технологии черт: просмотр вперед для сопоставления правого контекста и проверки синтаксиса, расширенный перебор с возвратами, автоматическое создание локальных переменных, механизм реперных точек, компиляция на стековую машину, отсрочка порождения кода до момента исполнения, отсутствие предопределенных ключевых слов и встроенных типов данных, механизм конверторов.

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

Если в тексте по контексту требуется понятие А, но встречается унаследованное от него понятие В, то понятие, которое должно использоваться в контексте с понятием А, будет применено также и в контексте с понятием В. Если понятие В подобно понятию А, то для осуществления этого необходимо сначала выполнить некоторые преобразования над понятием В, определенные с помощью специального предложения - конвертора.

Сопоставление понятий в контексте и в области разбора предложения осуществляется с учетом обоих видов отношений. Оно осуществляется следующим образом:

1). При встрече понятия В в месте, где должно быть понятие А, компилятор осуществляет поиск вверх по дереву понятий, начиная с понятия А, по направлению к корню дерева в поисках понятия В.

2). Если текущее понятие находится с родителем в отношении наследования, то следующим понятием для сопоставления берется родительское И если оно и есть В, то процесс сопоставления прошел успешно, иначе сопоставление продолжается дальше по дереву.

3). Если текущее понятие подобно родителю, то среди предложений текущего понятия ищется конвертор Код конвертора добавляется в начало формируемого кода преобразования понятия В в понятие А И следующим для обработки выбирается понятие, на которое указывает найденный конвертор

4). Поиск продолжается до тех пор, пока не будет достигнут корень дерева понятий, или найдено понятие В или не будет обнаружено понятие, находящееся в отношении подобия с родителем и не имеющее конвертора в родительское понятие. В случае если понятие В не было найдено, выбирается следующий подходящий конвертор и процедура повторяется

Если понятие В было обнаружено в результате вышеописанной процедуры, то осуществляется конвертирование Понятия В в понятие А, - применяется код всех встреченных конверторов, и вместо понятия В подставляется А, иначе понятие (а значит и все предложение) признается не применимым в данном контексте.

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

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

Например, код процедурной части предложения, определяющего понятие implication из рассмотренного выше примера, будет представлять собой вызов предложения negation(l) и затем disjunction(l). Последовательность процедурных вызовов предложений, распознанных при грамматическом разборе, записывается в порядке их распознания На выходе виртуальной машины этот код может быть преобразован в ассемблерный код, наподобие такого' { pop еах; not еах; push еах; pop еах; pop edx; or еах, edx; push еах }.

При выполнении процедурных частей предложений объекты левой части предложения располагаются в стеке операндов в том же порядке, что и соответствующие им понятия в стеке контекста, более того, этот порядок соответствует порядку следования обозначаемых ими понятий в структуре вызываемого предложения Это позволяет описать структуру процедурных вызовов, а также соглашения по передаче параметров и возврату результата. Так прологом процедурного вызова будет являться сохранение адреса возврата из процедуры в стеке возвратов, извлече-

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

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

На основе проведенных экспериментов, получены данные, свидетельствующие об эффективности применения технологии в ряде областей применения информационных технологий. Было проведено сравнение разработанной системы с другими - С++, Prolog, в частности были проанализированы коды программ, реализующих языковые модели и задачи управления. Полученные экспериментальные результаты показали сокращение объема и повышение читабельности кода, а также уменьшение числа ошибок, однако следует отметить, что за это пришлось заплатить некоторым снижением скорости компиляции программ (по сравнению с другими технологиями).

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

- управление динамическими процессами;

- разработка поисковых систем;

- системы поддержки перевода естественных языков;

- представление мигрирующего кода в компьютерных сетях;

- поддержка многоязыковой среды разработки;

- тестирование трансляторов и синтаксических анализаторов.

На основе полученных в работе теоретических результатов

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

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

ОСНОВНЫЕ РЕЗУЛЬТАТЫ ДИССЕРТАЦИОННОЙ РАБОТЫ

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

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

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

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

5) реализован компилятор системы контекстного программирования;

6) показана эффективность применения технологии контекстного программирования в информационных системах.

ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ

1. Иосенкин В.Я. Объектно-ориентированный Forth // Материалы международной научно-практической конференции «Региональные особенности развития машино- и приборостроения, информационных технологий, проблемы и опыт подготовки кадров». - Тирасполь, РИО ПГУ, 2001. - С. 132-134.

2. Иосенкин В.Я., Выхованец В С. Технология контекстного программирования в телекоммуникационных системах // Труды второй международной научно-практической конференции «Современные информационные и электронные технологии». - Одесса: Друк, 2001.-С. 118-119.

3. Иосенкин В.Я., Выхованец B.C. Контекстное программирование в моделировании // Материалы международной научно-практической конференции «Моделирование. Теория, методы и средства». Часть 7. - Новочеркасск: УПЦ «Набла» ЮРГТУ (НПИ), 2001. - С.49-51. ISBN 5-88998-266-4

4. Иосенкин В.Я. Выхованец B.C. Формализация семантики искусственных языков // Материалы международной научно-практической конференции «Математическое моделирование в образовании, науке и производстве». - Тирасполь, РИО ПГУ, 2001. -С. 477-480.

5 Иосенкин В Я., Выхованец B.C. Технология контекстного программирования в экономике и бизнесе // Материалы межвузовской электронной научно-технической конференции «Управляющие и вычислительные системы. Новые технологии». - Вологда: РИО ВоГТУ, 2001. - С. 180.

6. Iosenkin V. The technology of context-sensitive programming in the telecommunication systems // Материалы международной научно-практической конференции «Развивающие интеллектуальные системы автоматизированного проектирования и управление». Часть 3. - Новочеркасск: УПЦ «Набла» ЮР-ГТУ(НПИ), 2001. -С. 19. ISBN 5-88998-270-2

7. Иосенкин В.Я., Выхованец B.C. Применение технологии контекстного программирования для решения больших прикладных задач // Труды международной конференции «Параллельные вычисления и задачи управления» (РАСО'2001). - М.: Институт

проблем управления им. В. А. Трапезникова РАН, 2001. - С (4) 121-139. ISBN 5-201-09559-3

8. Иосенкин В.Я. Контекстная интерпретация лексем // Материалы международной научно-практической конференции «Информационные технологии в науке и образовании». - Шахты: Изд-во ЮРГУЭС, 2001. - С.73-75.

9. Иосенкин В.Я. Java-процессор // Материалы II международной научно-практической конференции «Микропроцессорные, аналоговые и цифровые системы: проектирование и схемотехника, теория и вопросы применения». Ч. 1. - Новочеркасск, НПО «ТЕМП», 2002.-С. 11-13. ISBN 5-94633-011-Х

10. Иосенкин В.Я. Аппаратная реализация интерпретируемых языков // Материалы II международной научно-практической конференции «Микропроцессорные, аналоговые и цифровые системы проектирование и схемотехника, теория и вопросы применения». Ч. 1. - Новочеркасск, НПО «ТЕМП», 2002. - С. 24-25. ISBN 594633-011-Х

11. Иосенкин В.Я. Качество и надежность проектирования программных средств // Надежность и качество. Труды международного симпозиума /Под ред. Н.К. Юркова. - Пенза: Изд-во Пенз гос. ун-та, 2002. С 135-137 ISBN 5-94170-011-3.

12. Иосенкин В.Я., Выхованец B.C. Контекстная модель технологического процесса предприятия // Труды II международной конференции «Идентификация систем и задачи управления» (SICPRO'03). - М.: Институт проблем управления им. В. А. Трапезникова РАН, 2003. - С. 859-871. ISBN 5-201-14948-0.

13. Выхованец В С , Иосенкин В.Я. Компиляция знаний, представленных на языке Esse // Тезисы докладов II международной конференции по проблемам управления, Том 2. - М., 2003 - С 165.

14. Иосенкин В Я Базовые принципы контекстной технологии программирования // Материалы V международной научно-технической конференции «Искусственный интеллект. Интеллектуальные и многопроцессорные системы», Том 1. - Таганрог-Донецк-Изд-во ТРТУ, 2004. - С. 231-236.

15 Иосенкин В.Я. Некоторые вопросы реализации семантически управляемой компиляции естественно-языковых текстов // Материалы V международной научно-технической конференции «Искусственный интеллект Интеллектуальные и многопроцессор-

ные системы», Том 2. - Таганрог-Донецк: Изд-во ТРТУ, 2004. -С. 43—48.

16. Иосенкин В.Я. Контекстно-ориентированное программирование // Искусственный интеллект. - 2004, №3. - С. 667-677.

17. Компилятор-интерпретатор системы контекстного программирования «Esse» / Иосенкин В.Я. - № 281; Заявл.08.09.04; Опубл.

- Право и общество. - 2004, № 3.

18. Выхованец B.C., Иосенкин В.Я. Понятийный анализ и контекстная технология программирования // Проблемы управления.

- 2005, № 4. (20 стр., в печати).

Автореферат диссертации Иосеикин Вячеслав Яковлевич

ТЕХНОЛОГИЯ КОНТЕКСТНОГО ПРОГРАММИРОВАНИЯ И ЕЕ ПРИМЕНЕНИЕ

ИЛ №06150. Сер. АЮ от 21.02.02. Подписано в печать 29.01.05. Формат 60x90/16. Уч.-изд. л. 1,50. Тираж 120 экз

Изд-во Приднест. ун-та. 3300, г Тирасполь, ул. 25 Октября, 128

1-3 4 12

РНБ Русский фонд

2006-4 17219

Оглавление автор диссертации — кандидата технических наук Иосенкин, Вячеслав Яковлевич

ВВЕДЕНИЕ.

Глава 1. ИССЛЕДОВАНИЕ СОВРЕМЕННОГО СОСТОЯНИЯ КОМПЛЕКСНОЙ ПРОБЛЕМЫ ВЗАИМОДЕЙСТВИЯ ОТКРЫТЫХ ИНФОРМАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ

ПРОГРАММИРОВАНИЯ.

1.1. Открытая информационная система.

1.2. Базовые понятия концепции открытых систем.

1.3. Проектирование программных средств.

1.3.1. Объектно-ориентированная методология.

1.3.2. Объектно-ориентированные технологии.

1.3.3. Объектно-ориентированные языки.

1.4. Компонентная технология программирования.

• 1.4.1. Технология программирования Java.

1.4.2. Технология программирования Juice.

1.4.3. Язык С# и технология .NET.

1.5. Система программирования Форт.

1.6. Проблемы совершенствования программных средств.

Выводы.

Глава 2. РАЗРАБОТКА КОНТЕКСТНОЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ.

2.1. Развитие синтаксиса и семантики языковых средств.

2.2. Проблема семантического разрыва и пути ее решения.

2.3. Контекстно-свободные языки программирования.

2.4. Контекст в объектно-ориентированных языках.

2.5. Контекстные языки.

2.6. Объектно-ориентированный Форт.

2.7. Реализация объектно-ориентированной методологии в Форт.

2.8. Базовые требования для реализации контекстной технологии.

2.9. Принципы контекстной технологии программирования.

2.10. Вычислительный механизм контекстной компиляции.

2.11. Система контекстного программирования.

2.12. Задачи контекстной технологии программирования.

Выводы.

Глава 3. РЕАЛИЗАЦИЯ СИСТЕМЫ КОНТЕКСТНОГО ПРОГРАММИРОВАНИЯ И ЕЕ ПРИМЕНЕНИЕ.

3.1. Синтаксический анализ языковой модели.

3.2. Механизм конверторов.

3.3. О сущностях предметной области и их структуре.

3.4. Контекстная интерпретация понятий.

3.5. Построение языковой модели предметной области.

3.6. Механизм компиляции знаний.

3.7. Генерация кода и исполнение.

3.8. Языковая модель процессов управления.

3.9. Высокоуровневая форма мигрирующего кода.

3.10. Сравнительный анализ контекстной технологии.

3.11. Преимущества и недостатки контекстных языковых средств 170 Выводы.

Введение 2005 год, диссертация по информатике, вычислительной технике и управлению, Иосенкин, Вячеслав Яковлевич

Актуальность темы исследования. При всем кажущемся благополучии в области построения открытых информационных систем узким местом остается создание эффективной технологии программирования и соответствующего формального языка, составляющих основную часть прикладного интерфейса. Недостатком современных технологий программирования остается объективная трудоемкость, интеллектуальная и технологическая сложность процесса программирования [1,2].

Основной проблемой известных технологий программирования является наличие семантического (или смыслового) разрыва между математической моделью предметной области и языком программирования, с помощью которого она описывается, а также между математической моделью предметной области и ее описанием на естественных языках [3].

Последствиями этого являются:

- сложность постановки задач;

- высокая стоимость разработки программных средств;

- низкая эффективность и надежность программирования;

- большой объем кода программы.

Наиболее эффективный метод сокращения семантического разрыва -приближение языков программирования к языку описания предметной области, т.е., как правило, к естественному языку, который используется для постановки и описания прикладных задач. Однако использование естественного языка в компьютерных системах связано с существенными трудностями из-за присущих ему нерегулярностей, двусмысленностей, неоднозначностей, неопределенностей и т.п. Главное препятствие заключается в отсутствии формальной семантики естественного языка, которая имела бы достаточно эффективную операционную поддержку [4, 5]. Почти все существующие технологии программирования реализуются посредством языков программирования, порождаемых узким классом контекстно-свободных формальных грамматик. Ограничением выразительных качеств современных языков программирования является бесконтекстность правил вывода, что не согласуется с явлением контекстной интерпретации слов в естественных языках и, как следствие этого, ограничивает их выразительную мощность, уменьшает надежность программирования, устанавливает серьезный барьер между языком программирования и естественными языками.

В настоящее время для решения проблемы семантического разрыва используется повышение уровня абстракций языков программирования в рамках объектно-ориентированной и аспектно-ориентированной [6] методологии проектирования программных средств. Однако последнее снимает только часть проблем, не затрагивая существенным образом семантику и синтаксис языков программирования. Появление новых объектно-ориентированных технологий разработки и интеграции приложений, таких как .Net и Java, показало важность обеспечения как мультиязыковой, так и кросс-платформенной среды разработки. Это явилось следствием стремления использовать такую технологию программирования, которая позволяет повысить скорость разработки программ и приблизить процесс проектирования программных средств к парадигмам постановки и решения прикладных задач. При этом требуется обеспечить не только уровень абстракции, необходимый для описания прикладных задач, но и использовать естественные структуру и синтаксис их определения, не накладывая при этом ограничений на переносимость и мультиязычность программ.

Объектом исследования являются формальные языки и методы их грамматического разбора и компиляции.

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

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

В соответствии с поставленной целью решались следующие задачи:

1) исследование явления семантического разрыва в современных информационных системах и определение эффективной технологии его сокращения;

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

3) разработка технологии контекстного программирования;

4) реализация компилятора для системы контекстного проектирования программных средств.

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

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

Теоретические основы исследования. Важное методологическое значение для разработки исследуемой темы имели труды зарубежных и отечественных ученых в области анализа и разработки технологий программирования и инженерии знаний, принципов трансляции, а также синтаксического и семантического разбора, в частности: Липаева В.В., Богатырева Р., Гасаненко МЛ., Мартыненко Б. К., Михелева В. М., Буч Г., Морозова М.Н., Дехтяренко И.А. Поспелова Д.А., Заслонко А.Н., Джексона П.,

Ястрежембского В.Р., Манера Б., Вирта Н., Франца М., Броди Л., Рейуорд-Смита В., Ахо А., Ульмана Д., Дахм М., Мадцока Д., Страуструпа Б. и других.

Научно-теоретической и практической базой для проведения исследования послужили разработки Научно-исследовательского компьютерного бюро (НИКБ) «Компьютерные технологии» (позже НИЛ «Бюро компьютерных технологий») Приднестровского государственного университета им. Т.Г. Шевченко и ученых Института Проблем Управления им. В.А. Трапезникова РАН (Выхованец B.C., Малюгин В.Д., Трахтенгерц Э.А.), посвященные проблемам повышения эффективности процесса разработки программного обеспечения.

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

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

Реализация и внедрение результатов исследования. Результаты, полученные в диссертационной работе, используются в учебном процессе по дисциплинам «Теория автоматов», «Основы искусственного интеллекта» и «Технология программирования» для специальности 220100 «Вычислительные машины, комплексы, системы и сети» в Приднестровском государственном университете им. Т.Г. Шевченко, в программном средстве ViBuilder Organizer (www.vibuilder.com) корпорации VI Soft Inc. (США, Ныо-Йорк).

Основные положения, выносимые на защиту:

1) принципы построения языковых средств с контекстной интерпретацией лексем;

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

3) технология контекстного программирования;

4) методика формализации знаний предметной области путем построения ее языковой модели.

Апробация работы. Основные результаты диссертации докладывались и обсуждались на семинарах в НИКБ «Компьютерные технологии» Приднестровского государственного университета им. Т.Г. Шевченко (Тирасполь, 2001-2003 гг.) и в Российской таможенной академии (Москва, 2004 г.), на международной научно-практической конференции «Региональные особенности развития машино- и приборостроения, информационных технологий, проблемы и опыт подготовки кадров» (Тирасполь, 2001 г.), на международной научно-практической конференции «Математическое моделирование в образовании, науке и производстве» (Тирасполь, 2001 г.), на второй международной научно-практической конференции «Современные информационные и электронные технологии» (Одесса, 2001 г.), на международной конференции «Параллельные вычисления и задачи управления» (Москва, 2001 г.), на второй международной конференции «Идентификация систем и задачи управления» (Москва, 2003 г.), на расширенном семинаре 31-й и 5-й лабораторий Института проблем управления им. В.А. Трапезникова РАН (Москва, 2004 г.) и в ряде других международных и региональных научно-практических конференциях.

Публикации. Основные положения и выводы диссертационной работы изложены в 17 научных статьях общим объемом 7,1 п.л., включая авторское свидетельство на разработанный компилятор системы контекстного программирования. Часть материалов, отражающих некоторые вопросы диссертационной работы, опубликованы в соавторстве. В статье [162] автору принадлежит разработка механизма компиляции и аспектов применения технологии в телекоммуникационных системах, в статье [161] — система контекстного программирования и аспекты ее применения в моделировании, в [111] - рассмотрение некоторых вопросов формализации семантики искусственных языков, в [194] - экономическая эффективность применения технологии, в [82] - вопросы, связанные со снижением сложности и повышением надежности программного обеспечения, а также определение и обоснование целесообразности применения технологии в ряде областей, [167] — разработка контекстной модели описания предметной области и ее применение, [171] — разработка механизма компиляции знаний с использованием предложенной технологии.

Структура и объем диссертации. Диссертационная работа объемом 211 страниц, из них 190 страниц основного текста, состоит из введения, трех глав, включая И рисунков, заключения, списка использованной литературы из 194 наименований и И приложений, содержащего акты внедрения результатов работы.

Заключение диссертация на тему "Технология контекстного программирования и ее применение"

Выводы

Синтаксический анализ модели осуществляется на основе поиска предложения с областями контекста и разбора, соответствующими текущему состояния стека контекста и входному потоку. Для решения проблемы содержательной эквивалентности и подобия понятий предлагается механизм сопоставления понятий, задаваемый с помощью наследования и языковых конструкций специального вида, названных конверторами. Его реализация осуществляется с помощью рекурсивного восходящего перебора предложений, описывающих те понятия, с которыми текущее понятие связано нисходящими связями понятийного наследования и на которые указывают конверторы.

При грамматическом разборе предложения в общем случае проходят 3 фазы: разбора, компиляции и реализации. Во время разбора императивных описаний предложений необходимо создавать их компилированное представление, состоящее из последовательности процедурных вызовов предложений, распознанных при грамматическом разборе и записываемых в порядке их распознания.

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

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

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

ЗАКЛЮЧЕНИЕ

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

В ходе проведенного диссертационного исследования получены следующие научные результаты:

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

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

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

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

5) реализован компилятор системы контекстного программирования;

6) показана эффективность применения технологии контекстного программирования в информационных системах.

Библиография Иосенкин, Вячеслав Яковлевич, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Lewis Т. Software Architectures: Divine plan or digital Darwinism // Computer. 1996 № 8. - P. 13-15.

2. Canceled Software Development Project costs Billions // Computer. 1995 № 8. - P. 94.

3. Майерс Г. Архитектура современных ЭВМ. Т.1. М.: Мир, 1985. - 363с.

4. Partee В. The development of formal semantics in linguistic theory, in Shalom Lappin, ed., The Handbook of Contemporary Semantic Theory, Blackwell Handbooks in Linguistics Series, Oxford: Blackwell. 1996. - P. 11-38.

5. Морозов M.H. Модели и методы решения задач // Системы искусственного интеллекта. http://khpi-iip.mipk.kharkiv.edu.

6. Kiezales G., Lamping S., etc. Aspect-Oriented Programming // Proceedings of the European Conference on Object-Oriented Programming (ECOOP'97). Finland, Springer Verlag, INCS 1241, June 1997.

7. Липаев В.В. Направления развития методов и стандартов открытых систем // Информатика и вычислительная техника. Науч.-техн. сборник. Выпуск 1-2. -М. 1995.

8. Лезер Н. Архитектура открытых распределенных систем: Модель OSF DCE // Открытые системы. 1993 № 3. - С. 10-16.

9. Филинов Е.Н. Выбор и разработка концептуальной модели среды открытых систем // Открытые системы. — 1995 № 6. С. 71-77.

10. Зиндер Е. Революционные изменения базовых стандартов в области системного проектирования // Директор информационной службы. -2001 №5.

11. ISO/IEC TR 10000/1-1995. Information technology. Framework and taxonomy of International Standardized Profiles. Part 1: General Principles and Documentation Framework.

12. ISO/IEC TR 10000/2-1995. Information technology. Framework and taxonomy of International Standardized Profiles. Part 2: Principles and Taxonomy for OSI Profiles.

13. ISO/IEC TR 10000/3-1995. Information technology. Principles and taxonomy of International Standardized Profiles. Part 3. Principles and Taxonomy for Open System Environment Profiles.

14. ISO 7498-1984. Information processing systems. Open Systems Interconnection. Basic Reference Model ITU-T Rec. X.200 (1994).

15. ISO/IEC DTR 14252. Portable Operating System Interface for Computer Environments (POSIX) IEEE, PI003.0. Draft Guide to the POSIX Open System Environment, February 1995.

16. Сухомлин В.А., Зуев E.A. и др. Система программирования тройного стандарта ЗС++. // Тез. докл. первой российской конференции «Индустрия программирования '96», 3-4 октября 1996г., Москва.

17. Booch G. The end of objects and the last programmer // ACM conference on object-oriented programming, systems, languages, and applications, April 1993. vol. 4, №2. P. 3-8.

18. Lewis T. The next 10,0002 years. Part 2 // Computer. 1996 № 5. - P. 7886.

19. Аджиев В. А. Объектная ориентация: философия и футурология // Открытые системы. 1996 № 6. С. 40-45.

20. Meyer В. Object Technology: The Conceptual Perspective // Computer. -1996 № l.-P. 86-88.

21. Аджиев В. А. Философия и перспективы объектной ориентации // Открытые системы. 1996 № 38.

22. Booch G. Object-oriented analysis and design with applications (2nd edition). Addison-Wesley, 1993. - 608 p.

23. Rumbaugh J. R., Blaha M. R. and oth. Object-Oriented Modeling and Design. Prentice Hall, 1990. - 500 p.

24. Shlaer S. Object-oriented systems analysis: modeling the world in data. -Pearson Education POD, 1988. 144 p.

25. Wilkinson N. M. Using CRC cards: an informal approach to object-oriented development. NY: SIGS Publications, 1995 - 226 p.

26. Wirfs-Brock R., McKean A. Object Design: Roles, Responsibilities, and Collaborations. Addison Wesley, 2002. - 416 p.

27. Yourdon, E., Coad, P. Object-Oriented Analysis N.J.: Prentice-Hall, 1990.-233 p.

28. Yourdon, E., Coad, P. Object-Oriented Design. N.J.: Prentice-Hall, 1991. -197 p.

29. Gurus share insights on objects // Computer. 1996 № 6. - P. 95-98.

30. Booch G. Objects solutions: managing the object-oriented project. -Addison-Wesley, 1996.

31. Rumbaugh J., Jacobson I., Booch G. Unified Modeling Language Reference Manual, the 2nd edition. Addison-Wesley, 2004. — 752 p.

32. Henderson-Sellers В., Graham I. OPEN: Toward Method Convergence? // Computer. 1996 № 4. - P. 86-89.

33. Вирт H. Долой жирные программы // Открытые системы. 1996 № 6.

34. Богатырев P. Java и Juice: дуэль технологий?! // Компьютерра. 1996 № 34. - С. 30-33.

35. Yourdon Е. Java, the Web and Software Development // Computer. 1996 № 8. - P. 25-30.

36. Венско E. Акцент на прогрессивные технологии // Экономика и время. - 2000 № 29.

37. Гагин А. История Java // Планета Internet. 1996 № 1. - С. 28-38.

38. O'Connel М. Java: The inside story // Sun World. 1995 № 7.

39. Баженова И.Ю. Язык программирования Java. M.: Диалог МИФИ,1997.

40. Богатырев Р. Феномен технологии Java // Computer Week Moscow. -1996 №23, 31.

41. Urquhart R. Открытое будущее Java // Computer Week Moscow. - 1997 № 31. - C. 40-41.

42. Богатырев P. Гадание на кофейной гуще // Мир ПК. 1998 №2. - С. 120-133.

43. Гослинг Дж. Что такое Java // Computer Week Moscow. 1997 № 29. -С. 21-22.

44. Kistler Th., Franz M. A Tree-Based Alternative to Java Byte-Codes // University of California at Irvine. Dept. of Information and Computer Science. 1996. Technical Report № 96-58.

45. Франц M. Java: критическая оценка // Мир ПК. 1997 № 8. С. 56-60.

46. Ladue М. When Java was one: threats from hostile byte code // Proceedings of the 20th national information systems security conference, 1997.

47. Optimizing NET compilers for improved Java performance // IEEE Computer. 1997. V. 30, № 6. P. 67-75.

48. Franz M. Code-Generation On-the-Fly: A Key to Portable Software: Doctoral Dissertation № 10497. ETH Zurich. 1994.

49. Ebcioglu K., Altman E., Hokenek E. A Java ILP Machine Based on Fast Dynamic Compilation // IBM T.J. Watson Research Center, 1997.

50. Franz M., Kistler Т. Есть ли у Java альтернативы? // Computer Weekly. 1998 № 14. - P. 26-28, 45-46.

51. Franz M., Kistler T. Slim Binaries // Communications of the ACM. V. 40.12.

52. Богатырев P. Java на марше // Мир ПК. 2002 № 9.

53. Филев A. Visual Studio.NET. Новые горизонты. www.dotsite.spb.ru.

54. Богатырев Р. Мир языков программирования // Мир ПК. 2002 № 8. -С. 124-125.

55. Чистяков В. Microsoft Visual Studio.Net (7.0) // Технология Клиент-Сервер.-2001 № 1.

56. Федоров A. Microsoft Visual Studio .NET // КомпьютерПресс. 2001 №10.

57. Углубление в С#: интервью с ведущим разработчиком Microsoft -Андерсом Хейлсбергом (Anders Hejlsberg). www.dotsite.spb.ru.

58. Бобровский С. История объектно-ориентированного программирования // PC Week/RE. 2003 № 28. - С.10.

59. Бобровский С. История объектно-ориентированного программирования // PC Week/RE. 2003 № 29. - С.20.

60. Колесов А. Развитие софтверных технологий: 2004-???? гг. // PC Magazine/RE. 2004 № 1. - С. 106.

61. Филев А. Сравнивая Java и .NET. www.dotsite.spb.ru.

62. Brodie L. Thinking FORTH. A language and philosophy for solving problems. Englewood Cliffs, N.J., Prentice-Hall, Inc., 1984.

63. Вульф А. Операционные системы реального времени в русле развития вычислительной техники // Электроника. 1985 № 17. - С. 46-56.

64. Семенов Ю.А. Программирование на языке Форт. М.: Радио и связь, 1991.-240с.

65. Келли М., Спайс Н. Язык программирования Форт: Пер. с англ. М.: Радио и связь, 1993. - 320 с.

66. Броуди JI. Начальный курс программирования на языке ФОРТ. — М.: Финансы и статистика, 1990.

67. Черезов А. Форт и Java. http://www.enet.ru.

68. Учебное пособие по языку ФОРТ. ИТФ «Технофорт». www.forth.org.ru.

69. Баранов С. Н., Ноздрунов Н. Р. Язык Форт и его реализации. JI.: Машиностроение. Ленингр. отд-ние, 1988. - 157 с.

70. Dahm M. «OOF, an Object Oriented Forth», 1991 FORML Conference Proceedings, p.338-352, FIG, Oakland, USA, 1992.

71. Плисс О.А. Объектно-ориентированная система MEDIUM // Инструментальные средства поддержки программирования. Л.:ЛИИАН, 1988.

72. Программное самообеспечение // Приложение к газете «Коммерсантъ» №161(3000) от 01.09.04.

73. Экономическая роль индустрии информационных технологий // Информационный бюллетень «Влияние уровня компьютерного пиратства на развитие мировой экономики». По материалам исследования компании IDC. -www.microsoft.com.

74. Entry Natural Language Understanding // Encyclopaedia of Artificial Intelligence. New York: John Wiley and Sons Ltd, 1992. - P. 660-677.

75. Колегов A.B. Грамматика языка-посредника Эльюнди. Тирасполь: РИО ПГУ, 1998.-220 с.

76. Сыромятников В. Н. Общая характеристика программного обеспечения информационных технологий. www.uspu.ru.

77. Бен-Ари М. Языки программирования. Практический сравнительный анализ. М.: Мир, 2000. - 366 с.

78. Костин Г. В. Языки программирования: эволюция и анализ // Материалы конференции «Информация, инновации, инвестиции». Пермь: Пермский ЦНТИ, 2003.

79. Парфенов В.В., Терехов А.Н. RTST технология программирования встроенных систем реального времени // Системная информатика. - 1997 №5. -С. 228-256.

80. Жоголев Е.А. Лекции по технологии программирования: учебное пособие. -М.: изд. отдел ф-та ВМиК МГУ, 2001. 151 с.

81. Одинцов И. Профессиональное программирование. Системный подход. СПб: BHV, 2002. 512 с.

82. Липаев В.В. Системное проектирование сложных программных средств для информационных систем. М.: СИНТЕГ, 2002. - 268 с.

83. Липаев В.В. Отладка сложных программ. М.: Энергоатомиздат, 1993.-382 с.

84. Иосенкин В.Я. Качество и надежность проектирования программных средств // Надежность и качество. Труды международного симпозиума / Под ред. Юркова Н.К. Пенза: Изд-во Пенз. гос. ун-та, 2002. - С. 135-137.

85. Марченко А.Л. С++. Бархатный путь. М.: Горячая линия — Телеком, 2001.-400 с.

86. Aho A., Sethi R., Ullman J. Compilers: principles, techniques, and tools. -Addison-Wesley, 1986. 500 p.

87. Bishop J. Data Abstraction in Programming Languages. Wokingham, England: Addison-Wesley, 1986.

88. Chomsky N. On certain formal properties of grammars // Information and Control. 1959 № l.-P. 91-112.

89. Stroustrup B. What is object-oriented programming? IEEE Software vol.5 (3), 1988.-P. 10.

90. Meyer B. Object-oriented software construction. NY:Prentice-Hall, 1988.

91. Варсанофьев Д.В., Дымченко А.Г. Основы компиляции. http://codenet.al.ru.

92. Легалов А.И. Основы разработки трансляторов. www.softcraft.ru.

93. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. 4-е изд. СПб: Питер, 2002. - 688 с.

94. Волкова И.А., Руденко Т.В. Формальные грамматики и языки. Элементы теории трансляции. М.: Издательский отдел факультета ВМиК МГУ, 1999.-62 с.

95. Knuth D. Е. On the translation of languages from left to right, Information and control 8:6, 1965. P. 607-639.

96. DeRemer F. F. Simple LR(k) grammars, Comm. ACM 14:7, 1971. P. 453-460.

97. Ахо А., Сети P. и др. Компиляторы: принципы, технологии и инструменты. М.: Издательский дом «Вильяме», 2001. - 768 с.

98. Pennello Т. J., DeRemer F. Efficient Computation of LALR(l) Look-Ahead Sets, TOPLAS 4:4, 1982. -P.615-649.

99. Anderson Т., Eve J., Horning J.J. Efficient LR(1) parsers, Acta Informatica 2:1, 1973.-P. 12-39.

100. Tokuda T. Eliminating unit reductions from LR(k) parsers using minimum contexts. Acta Informatica 15, 1981. P. 447-470.

101. Костельцев A.B. Построение интерпретаторов и компиляторов. — СПб: Наука и Техника, 2001. 224 с.

102. Aho A., Jonson S. LR parsing, Computing Surveys 6:2, 1974. P. 99124.

103. Jonson S. Yacc: Yet Another Compiler-Compiler. Bell Laboratories, Murray Hill, New Jersey 07974.

104. Jonson S. Yacc: Yet another compiler compiler. In UNIX Programmer's Manual, volume 2, Holt, Rinehart, and Winston, New York, USA, 979. P. 353-387.

105. Доннелли Ч., Столлмен P. Bison генератор синтаксических анализаторов, совместимый с YACC для Bison версии 1.35, 25 февраля 2002. -http://www.linux.org.ru.

106. Aycock J. Why Bison is becoming extinct. NY: ACM Press, 2001.

107. Дехтяренко И.А. Декларативное программирование. www.softcraft.ru.

108. Мельников Б.Ф. Подклассы класса контекстно-свободных языков. -М.: Изд-во Моск. ун-та, 1995. 174 с.

109. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. М.: Бином, 1998. - 560 с.

110. Ш.Иосенкин В. Я., Выхованец B.C. Формализация семантики искусственных языков // Материалы международной научно-практической конференции «Математическое моделирование в образовании, науке и производстве». Тирасполь, 2001. С. 477-480.

111. Матросов А., Чаунин М. Самоучитель Perl. СПб, 2000. - С. 100102.

112. Wall L., Christiansen Т., Orwant J. Programming Perl. O'Reilly, 2000. -1092 p.

113. Original Canadian National Standard for Language Specification (identical to ANSI XI 1.1-1995) NSC 11756-1995.

114. Revised ANSI Standard for Language Specification. ANSI/MDC XI 1.11995.

115. Flanagan D. JavaScript: The Definitive Guide, 4th Edition. O'Reilly, 2001.-936 p.

116. Страуструп Б. Язык программирования С++, 3-е изд./Пер. с англ. -СПб.; М.: «Невский Диалект» «Издательство БИНОМ», 1999. - 991 с.

117. Плискин М. Эволюция языков программирования. www.dotsite.spb.ru.

118. Таненбаум Э. Многоуровневая организация ЭВМ. — М.: Мир, 1979.547 с.

119. Селич Б. Практические аспекты разработки на базе моделей // Открытые системы. 2003, №12.

120. Czarnecki К. Generative Programming: Principles and Techniques of Software Engineering Based on Automated Configuration and Fragment-Based

121. Component Models. PhD thesis, Technische Universitat Ilmenau, Germany, 1998. (chapter Aspect-Oriented Decomposition and Composition).

122. Павлов В. Аспектно-ориентированное программирование // Технология Клиент-Сервер. — 2003, № 4.

123. Ваганов С. A. Flora Ware ускорить разработку приложений -www.softcraft.ru.

124. Латкин А. Паутина нам поможет // Известия науки www.inauka.ru.

125. Гинзбург С. Математическая теория контекстно-свободных языков. -М.: Мир, 1970.-326 с.

126. Выхованец B.C. Теория автоматов: Учеб. пособие для вузов. — Тирасполь: РИО ПГУ, 2001. 87 с.

127. Ахо А., Ульман Д. Теория синтаксического анализа, перевода и компиляции. Т.1. Синтаксический анализ. -М.: Мир, 1978. 612 с.

128. Hopcroft J.E., Ullman J.D. Formal languages and their relation to automata. Addison-Wesley pub. Сотр. 1969, 242 p.

129. Выхованец B.C. Технология безопасного программирования //Тезисы докладов 7-й Международной конференции «Проблемы управления безопасностью сложных систем». М., 1999. - Т. 2. - С.89-91.

130. Астановский Ф.Г., Ломунов В.Н. Интерпретируемые системы программирования и их аппаратная поддержка. Процессор, ориентированный на язык Форт. Таллин: Ин-т кибернетики АН ЭССР, 1988.

131. Philip J., Koopman Jr. Stack Computers: the new wave. Chichester England: Ellis Horwood, 1989.

132. Hayes J.R., Fraeman M.E., Williams R.L., Zaremba Т. A 32 Bit Forth Microprocessor 7/ Rochester Forth Conference Proceedings. Institute for Applied Forth Research Inc. 1987.

133. Moore. C. ShBoom on ShBoom: A Microcosm of Software and Hardware Tools // University of Rochester Forth Conference Proceedings, Rochester, New York, 1990.-P.21.

134. Sahai V., Berggren H., Rible J. The QS1 Stack Processor. University of Rochester Forth Conference Proceedings, Rochester, New York, 1991. P.73.

135. Scleisiek-Kern K. FRP 1600 16-Bit real time processor. University of Rochester Forth Conference Proceedings, Rochester, New York, 1992. - P.79.

136. Schoeberl M. Design Rationale of a Processor Architecture for Predictable Real-Time Execution of Java Programs // 10th International Conference on Real-Time and Embedded Computing Systems and Applications, RTCSA 2004, Gothenburg, Sweden, August, 2004.

137. Gassanenko M.L. Context-Oriented Programming: Evolution of Vocabularies. Proc. of the euroFORTH'93 conference, 15-18 October 1993, Marianske Lazne (Marienbad), Czech Republic. P. 14.

138. Gassanenko M.L. Context-Oriented Programming. Proc. of the euroFORTH'98 conference, Marianske Lazne (Marienbad), Czech Republic.

139. Войшвилло Е.К. Понятие как форма мышления. М.: Изд-во МГУ,1989.

140. Ахмедов М.М. Понятие как форма логического познания // Диалектика научного познания. Самарканд, 1983.

141. Войшвилло Е.К. Понятие. М., 1967.

142. Резников JI.O. Понятие и слово. Л., 1958.

143. Галкина-Федорук Е.М. Суждение и предложение. М., 1956.

144. Попов П.С. Суждение. М., 1957.

145. Лиманов B.C. Логическая природа суждений. Л., 1958.

146. Серебрянников О.Ф., Бродский И.Н. Дедуктивные умозаключения. -Л., 1969.

147. Справочник по искусственному интеллекту / под ред. Поспелова Д.А. Кн. 2. Модели и методы. М.: Радио и связь, 1990.

148. Соломатин Н.М. Информационные семантические системы. // В уч. пос. Перспективы развития вычислительной техники в 11 кн. Кн. 1. - М.: Высшая школа, 1989.

149. Джексон П. Введение в экспертные системы. М.: Издательский дом «Вильяме», 2001. - 624 с.

150. Рейуорд-Смит В. Дж. Теория формальных языков. М.: Радио и связь, 1988.- 130 с.

151. Иосенкин В.Я. Контекстно-ориентированное программирование // Искусственный интеллект. 2004, №3. - С. 667-677.

152. Компилятор-интерпретатор системы контекстного программирования «Esse» / Иосенкин В.Я. № 281; Заявл.08.09.04; Опубл. -Право и общество. - 2004, № 3.

153. Иосенкин В.Я. Контекстная интерпретация лексем // Материалы международной научно-практической конференции «Информационные технологии в науке и образовании». Шахты: Изд-во ЮРГУЭС, 2001. - С.73-75.

154. Regex++, Index, -http://www.boost.org/libs/regex/.

155. Селезнев К. Обработка текстов на естественном языке // Открытые системы, 2003, №12.

156. Гасаненко МЛ. Расширение возможностей перебора с откатом (бэктрекинга) // Информационные технологии и интеллектуальные методы. Выпуск №2. СПб.: СПИИРАН, 1997. - С.23-35.

157. Трахтенгерц Э.А. Компьютерная поддержка принятия решений. — М.: СИНТЕГ, 1998.-811 с.

158. Ястрежембский В.Р. Динамическая модель предприятия и Корпоративная Информационная Система нынешнего поколения // Управление и автоматизация. М. 1998.

159. Маклаков С. Применение CASE-средств в автоматизации банковской деятельности. По материалам публикаций Interface Ltd. -www.interface.ru.

160. Создание модели процессов в BPwin (IDEFO). Interface Ltd. -www.interface.ru.

161. Марк Д.А, Гоуэн К.М. Методология структурного анализа и проектирования SADT. М.: Метатехнология, 1993. - 240 с.

162. Выхованец B.C., Иосенкин В.Я. Компиляция знаний, представленных на языке Esse // Тезисы докладов II международной конференции по проблемам управления, Том 2. М.: Институт проблем управления им. В.А. Трапезникова РАН, 2003. - С. 165.

163. Breuer Р.Т., Bowen J.B. A PREttier Compiler-Compiler: Generating Higher Order Parsers in С // Software Practice and Experience, November 1995. -25(1):1263-1297.

164. Breuer P.T., Bowen J.B. A Concrete Grammar for Z // Oxford University Computing Laboratory Technical Report PRG-TR-22-95, September 1995.

165. Breuer P.T., Bowen J.B. PRECCX user manual. http://www.afm.lsbu.ac.uk/redo/precc/.

166. Younger D.H Recognition and parsing of context-free languages in time n3 // Information and Control 10:2, 1967. P. 189-208.

167. Kasami T. An efficient recognition and syntax analysis algorithm for context-free languages, AFCRL-65-758, Air Force Cambridge Research Laboratory, Bedford, Mass, 1965.

168. Братчиков И.Л. Синтаксис языков программирования. М.: Наука,1975.

169. The Arity/Prolog Language Reference Manuel. Concord: Arity Corporation, 1988.

170. Крицкий С.П. Предикативные грамматики и аксиоматическое определение языков программирования и переводов. http://public.uic.rsu.ru/~skritski/.

171. Гасаненко М.Л. Стандартные и нестандартные структуры управления в Форт-системе Т32. Документация к Форт-системе Т32 ООО ИТФ "Технофорт, 2000. http://www.forth.org.ru/~mlg.

172. Зайцев С.С., Кравиунов М.И., Романов С.В. Сервис открытых информационно-вычислительных сетей: Справочник. М.: Радио и связь, 1990. ITU-T (CCITT), Rec. Х.200-Х.219, 1988.

173. Рамодин Д. Лукошко разработчика // Мир ПК. 1997, №10. - С. 4652.

174. Выхованец B.C. Контекстная технология программирования // Труды IV международной научно-технической конференции по телекоммуникациям (Телеком-99). Одесса, 1999. - С. 116-120.

175. Храмцов П. Зачем нам нужен язык XML? www.citforum.ru.

176. Мартыненко Б. К. Синтаксически управляемая обработка данных. Автореф. дисс. докт. физ.-мат. наук. СПб: СПбГУ, 1998.

177. Мартыненко Б.К. Синтаксически управляемая обработка данных. -СПб: СПбГУ, 1997.-362 с.

178. Stroustrup В. Generalizing Overloading for С++2000. Overload, Issue 25. April 1, 1998.

179. Dougherty R. C. Natural language computing an English generative grammar in Prolog. -N. J.: LEA, 1994. 349 p.

180. Dougherty R. C. Beginners workbook in computational linguistics. — N. J.: LEA, 1994.-400 p.

181. Matthews C. An introduction to natural language processing through Prolog. Learning about language series. London: Longman, 1998. 320 p.

182. Natural Language // Adventure in Prolog by AMZI Inc. -http ://oop web. com.