Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Технология контекстного программирования и ее применение Иосенкин Вячеслав Яковлевич

Технология контекстного программирования и ее применение
<
Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение Технология контекстного программирования и ее применение
>

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

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Иосенкин Вячеслав Яковлевич. Технология контекстного программирования и ее применение : диссертация ... кандидата технических наук : 05.13.11.- Москва, 2005.- 214 с.: ил. РГБ ОД, 61 06-5/146

Содержание к диссертации

Введение

Глава 1. Исследование современного состояния комплексной проблемы взаимодействия открытых информационных систем и технологий программирования 10

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

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

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

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

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

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

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

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

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

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

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

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

Выводы 55

Глава 2. Разработка контекстной технологии программирования 57

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

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

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

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

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

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

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

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

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

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

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

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

Выводы 125

Глава 3. Реализация системы контекстного программирования и ее применение 127

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

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

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

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

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

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

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

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

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

ЗЛО. Сравнительный анализ контекстной технологии 165

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

Выводы 172

Заключение 174

Библиографический список

Введение к работе

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Научно-теоретической и практической базой для проведения
исследования послужили разработки Научно-исследовательского

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

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

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

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

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

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

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

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

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

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

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

принадлежит разработка механизма компиляции и аспектов применения технологии в телекоммуникационных системах, в статье [161] — система контекстного программирования и аспекты ее применения в моделировании, в [111] - рассмотрение некоторых вопросов формализации семантики искусственных языков, в [194] — экономическая эффективность применения технологии, в [82] - вопросы, связанные со снижением сложности и повышением надежности программного обеспечения, а также определение и обоснование целесообразности применения технологии в ряде областей, [167] — разработка контекстной модели описания предметной области и ее применение, [171] — разработка механизма компиляции знаний с использованием предложенной технологии.

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

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

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

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

На практике дела с 00 подходом обстоят не так хорошо. Как отмечает Т. Льюис [1] 00 модель далека от реальности. Например, в объектной линии DLE-OLb-ActiveX различные версии этих продуктов столь не похожи друг на друга, и столь архитектурно ущербны, что становится ясно: в процессе разработки вместо заранее продуманного плана имели место мало управляемые мутации. Сходные проблемы имеются и у Microsoft. Об этом свидетельствует и статистика [2]: в 1995 году ожидалось, что только 9% проектов, выполняемых крупными компаниями, будут завершены в срок и без превышения запланированного бюджета; 52% проектов должны были стоить в среднем 189% от их первоначально оцененной стоимости; в то же время 31% всех проектов вообще ожидало приостановление или полное прекращение, причем затраты на них - ничем не компенсируемые убытки - оценивались ни много ни мало в 81 млрд. долларов.

Корни этой проблемы - в объективной трудоемкости, интеллектуальной и технологической сложности процесса программирования. По данным фирмы Software Productivity Research [18] наиболее надежной мерой для измерения производительности программистского труда (и одновременно содержательной метрикой применительно к программе) признается функциональный пункт (function point, FP) - взвешенная сумма присутствующих в блоке программного кода вводов, выводов, запросов к данным и общих обрабатывающих операций с учетом наличия распределенной обработки, степени повторного использования кода и т.п. Производительность труда программиста, выражаемая в виде усредненной стоимости одного FP возрастает в среднем на 4.6% в год и составляет сейчас приблизительно 1000 долларов на FP. Усреднение проводилось по специальной методике, позволяющей учесть различные виды программных приложений, написанные на различных языках и имеющие разные размеры.

Особенно остро проблемы проектирования программных средств выступают на фоне сверхбыстрого развития индустрии аппаратных средств, прежде всего - производства всё более быстрых процессоров и средств коммуникации: в соответствии с законом Мура, производительность микропроцессоров в среднем удваивается каждые 18 месяцев при неизменном уровне цен, что означает рост со скоростью 48% в год [19]. методология предлагает небольшой, и в определенном смысле исчерпывающий набор из пяти принципов [20]. В совокупности они предлагают нечто большее, чем обычно упоминаемая триада из инкапсуляции, наследования и полиморфизма.

1). Децентрализация. 00 методология позволяет сфокусироваться на высокоуровневой структуре программной системы, издаваемой как сеть сотрудничающих агентов-объектов, между которыми определены только два отношения: поставщик-клиент и родитель-наследник. Именно эти ограничения обеспечивают концептуальную целостность системы (conceptual integrity). При этом уходят от таких понятий, как «основная программа», «глобальные переменные», «проектирование сверху вниз» и т.п., предполагающих, что система обязательно имеет некий центр.

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

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

Наиболее эффективно реализующимися, с точки зрения процесса грамматического разбора и порождения кода, являются языки программирования, которые описываются контекстно-свободными (КС) грамматиками [125]. Для этих языков решаема проблема разрешимости [126. 18-20], что означает, что всегда возможно определить принадлежность произвольной строки в терминальном алфавите языку, порожденному КС-грамматикой. Т.о. имея текст программы на этом языке, можно однозначно сказать, за достаточно короткое время, является ли эта программа правильной или нет.

Контекстно-свободная грамматика G2 задается четверкой объектов V, W, Р, 1 , где V - алфавит терминальных знаков, W - алфавит синтаксических единиц (нетерминальных знаков), Р - множество правил вывода (продукции), I -аксиома или начальная синтаксическая единица [127]. Продукции контекстно-свободной грамматики имеют вид А-»а, где А - определяемая синтаксическая единица, AeW, ct - строка в алфавите VuW. Это означает, что синтаксические единицы языка определяются через комбинацию лексем и других синтаксических единиц. Такое определение грамматики означает, что некие понятия, сущности языковых конструкций, могут быть заданы в рамках указанных продукций. Произвольное понятие, используемое при описании языка программирования, представляется, как последовательность терминальных и нетерминальных знаков или как последовательность слов и понятий. Чтобы это показать, приведем часть грамматики арифметических выражений языка Си:

Выражение -» первичное идентификатор = аддитивное Аддитивное- мультипликативное! мультипликативное + мультипликативное ! мультипликативное - мультипликативное Мультипликативное - унарное унарное унарное I унарное У унарное Унарное - первичное ! - унарное Первичное - константа ( аддитивное ) префиксная идентификатор постфиксная Константа - цифра I цифра константа Цифра .- 0І1І2ІЗІ4І5І6І7І8І9 Префиксная - ++ - I " Постфиксная - ++ I - I С список ) I [ список ] Идентификатор - буква буква идентификатор Список -» выражение выражение , список " Слева стоят понятия, справа - определяющие их последовательности терминальных и нетерминальных знаков.

Выражение - это или первичное выражение, или идентификатор, после которого идет присваивание (может быть составное присваивание) какому-то аддитивному выражению.

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

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

Константа - это последовательность цифр.

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

Идентификатор — это последовательность букв.

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

Аддитивное выражение имеет самый низкий приоритет, мультипликативное - более высокий, унарное - еще выше, и самый высокий приоритет у префиксных и постфиксных операций, - всё так, как и должно быть.

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

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

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

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

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

виртуальной машины, на подобие Java-машины для Java-апплетов (в Форт-системах достаточно изменить уже используемый промежуточный код, состоящий, как правило, из исполнительных адресов других участков кода, так, чтобы отказаться от использования адресов), или генерировать промежуточный код в формате, принятом в технологии Juice в виде семантических деревьев (в Форт-системах сделать это будет относительно несложно, поскольку скомпилированный в них код хранится в виде, близком к семантическому дереву).

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

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

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

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

С учетом принципов объектно-ориентированной и компонентной методологий сформулируем принципы контекстной технологии программирования [143]:

1) Синтаксические сущности: понятия и предложения. Понятие представляет собой определение словаря, если проводить аналогию с декларативными языками, и близко по своему смыслу к определению классов в ООП. С грамматической точки зрения понятие — это нетерминальный знак языка, определяемый через терминальные знаки (слова языка) и другие понятия в виде правил (задающихся в виде предложений) его употребления в контексте языка. По аналогии предложение близко по смыслу к определению словарной статьи, или к функции-члену класса в традиционных ОО языках программирования. Эти структуры будем именовать понятиями (notion) и предложениями (sentence) по аналогии с естественными языками, а вместе они будут составлять сущности языка (essence).

Таким образом, понятия - это обычно абстрактные или конкретные объекты, а предложения - их описания с использованием ранее определенных понятий. Например, объект Солнце можно описать так: Солнце есть звезда: Крупнейшая звезда на небе, Солнце; Крупнейшая к Земле звезда, Солнце;

Звезда - источник жизни на Земле, Солнце. Все три определения являются определением одного объекта «Солнце», и любое из них, будучи встречено в тексте программы, может интерпретироваться, как «Солнце». Понятия и предложения были выбраны в качестве основных синтаксических единиц не случайно, а как основные формы логического познания [144]: понятие, как простейшая мыслительная форма, «первокирпичик» мышления [145], выражающееся как «слово» в языке [146, 147]; предложение фактически является аналогом предложения естественного

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

Большинство способов синтаксического анализа в настоящее время реализовано в виде деревьев [159]. Наиболее широко используется в машинных языках детерминированная контекстно-свободная грамматика, полагающая, что левая часть правила может быть заменена на правую без учета контекста и без отката и просмотра вперед, с ее помощью созданы высокоэффективные методы анализа. Недостаток этого метода - отсутствие запрета на грамматически неправильные фразы (например, в случае распознавания текста на естественном языке, подлежащее не согласовано со сказуемым в числе, для решения этой проблемы необходимо наличие двух отдельных, параллельно работающих грамматик: одной - для единственного, другой - для множественного числа [163]). Кроме того, необходима своя грамматика, как для описательных, так и для исполнительных конструкций, так как часто возникает необходимость не только представить проблемную ситуацию компьютеру, но и дать указания на выполнение определенных действий. Семантически неправильное предложение может породить огромное количество вариантов разбора, из которых один будет превращен в семантическую запись. Всё это делает количество правил огромным и, в свою очередь, традиционные языки программирования непригодными для определенного ряда задач (распознавание естественных языков, экспертные системы, системы искусственного интеллекта) [74].

Контекстная технология оперирует вместо традиционных для ООП объектов термином понятие. Понятия представляются в виде последовательности литер, которая позволяет программисту визуально идентифицировать конкретный объект и его тип. Так мы привыкли к тому, что целое изображается в виде последовательности цифр, логическая величина - в виде true или false. Интерпретация лексемы в зависимости от определенного контекста осуществляется следующим образом. Если в процессе интерпретации лексемы поиск пары контекст + лексема (+ правая часть конструкции -форвард) в базе словарей дает положительный результат, то проблем не возникает, - исполняется сопоставленное этой паре выражение, которое является либо ссылкой на другое слово (слова) из дерева словарей, либо физической реализацией каких-либо операций на языке более низкого уровня (языке-родителе или в коде виртуальной машины). В случае если поиск не удачен, — возникает ошибка компиляции: «в таком контексте данная лексема не употребляется» или же лексема представляется через последовательность элементарных понятий (корневых понятий).

Другой вопрос: контекстная интерпретация вызывает рост словарной базы или вернее количества предложений, определяющих понятия, и на первый взгляд ее объем составит количество первоначальных понятий в квадрате (или даже большей степени). Решение дает 00 подход. На обобщенном уровне представления создаются специализированные словари знаний для каждой области знаний. Имеется базовый словарь, который описывает основные понятия и обеспечивает привязку к языку-родителю или напрямую к аппаратной части. А текст программы - это описание проблемной ситуации или выполняемых действий, определенных в терминах предметной области, которая в свою очередь, представлена в виде дерева словарей. Словари образуют иерархическую структуру, соответствующую иерархии классов при 00 программировании. Словари находятся в отношениях наследования (так словарь «приматы» - наследник словаря «животные»). Таким образом, нет необходимости указывать в качестве контекста глагола «думает» все возможные варианта, такие как доцент, ученый, работник и т.д. — достаточно указать один контекст «человек», в то время как остальные будут являться его наследниками, и для них автоматически будет действовать уже определенный контекст. Кроме того, только малая часть контекстных сочетаний слов словаря реально имеет место, - контекстная интерпретация остальных не требуется.

Грамматики естественных языков неоднозначны, поэтому алгоритмы синтаксического анализа не могут работать детерминировано и используют для перебора вариантов backtracking (перебор с возвратами) [164]. Сущность предлагаемого подхода состоит в интерпретации ввода в целом, а не в интерпретации смысла и структуры его отдельных составляющих на более низком уровне. При использовании этого метода происходит сравнение уже имеющихся в системе словарных статей с текстом, поступившим на вход. Но статьи не просто представлены в виде списка соответствий между языковыми конструкциями и их интерпретациями, а имеют тесную связь межу собой через

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

Похожие диссертации на Технология контекстного программирования и ее применение