А.А. Красилов ИНФОРМАТИКА В СЕМИ ТОМАХ Том 2. Информатика смысла (Машинная лингвистика Москва 1997 - 2003 ИНФОРМАТИКА Том 1. Основы информатики (Введение в информатику) Том 2. Информатика смысла (Машинная лингвистика) Том 3. Концептуальная информатика (Толковый словарь по информатике) Том 4. Представление знаний (Структуры данных) Том 5. Основания информатики (Теоретические основы) Том 6. Методы информатики (Изобретание, проектирование, разработка и сопровождение) Том 7. Интеллектуальные системы (Системы решения проблем) Альберт Александрович Красилов УДК .................... Аннотация Смысл текста и других средств и методов представления знаний определяется путем вычисления значения понятия, фразы или абзаца из фраз. Исходным данными для вычислений является смысл понятия. Без связи с другими или стандартными понятиями данное понятие не имеет смысла. Каждому объекту или понятию соотносится пара имя понятия - его смысл. В томе рассматривается основной атрибут объекта вычисления смысла - язык. Первая сторона языка совокупность правил формирования фраз и их значений, вторая сторона языка - анализ фраз для установления соответствия текстов правилам языка. Правила определяются в семантической грамматике русского (и любого другого) языка, анализ фраз осуществляется средствами реализации распознающей грамматики. Семантическая и распознающая грамматики связаны между собой как алгоритм и средства его реализации. Основой для контроля правильности текстов и возможности вычисления смысла текстов является формальный язык Лейбниц как формальная основа языка профессиональной прозы. The sense of the text and other means and methods of representation of knowledge is determined by calculation of value of concept, a phrase or the paragraph from phrases. The data for calculations the sense of concept is initial. Without connection with other or standard concepts the given concept is not meaningful. To each object or concept the pair a name of concept - his sense corresponds. In volume the basic attribute of object of calculation of sense - language is considered. The first side of language - set of rules of formation of phrases and their values, the second side of language - the analysis of phrases for an establishment of conformity of texts to rules of language. Rules are determined in semantic grammar Russian (and any another) language, the analysis of phrases is carried out by means of realization of recognizing grammar. Semantic and recognizing grammar are connected among themselves as algorithm and means of his realization. Basis for the control of correctness of texts and an opportunity of calculation of sense of texts is formal language Leibniz as a formal basis of language of professional prose. (www.translate.ru) ОГЛАВЛЕНИЕ Введение Глава 1. Общение в системе человек-ВМ 1.1. Основные средства общения 1.2. Классификация языков общения в системе человек-ВМ. Языки ФРАК 1.3. Сравнение языков автокод, высокого уровня и ФРАК 1.4. Основа общения - язык, о способах задания языков 1.5. Языки профессиональной прозы 1.6. Языки сценариев 1.7. Языки представления знаний о языках, метаязык Марков Глава 2. Семантическая грамматика русского языка Введение в сущность СеГ 2.1. Проблемы информатики смысла. 2.1.1. Основания для новой грамматики 2.1.2. Основной тезис для построения СеГ 2.1.3. Отладка знаний и язык 2.1.4. Источники проблемы смысла 2.1.5. Процесс формализации знаний 2.2. Знаки и лексемы 2.3. Слова, имена и термины 2.4. Понятия, классы понятий и лексиконы 2.4.1. Понятия 2.4.2. Классы понятий 2.4.3. Лексиконы 2.4.4. Предварительные сведения о представлении знаний 2.5. Фразы и абзацы 2.6. Смысл фразы 2.6.1. Понятие смысла 2.6.2. Смысл и значение 2.6.3. Принципы для определения смысла фразы 2.6.4. Вычисление смысла 2.6.5. Роли частей речи СиГ 2.7. Система смысла и применения СеГ 2.7.1. Алгоритм вычисления смысла текста 2.7.2. Рекурсивность алгоритма вычисления смысла 2.7.3. Универсальная грамматика и ее применение 2.7.4. Универсальный язык и проблемы СеГ Глава 3. Языки меню 3.1. Методы общения с программами 3.2. Основные работы в меню Интеллсист 3.2.1. Работа с файлами 3.2.2. Справочная служба 3.2.3. Сервис Интеллсист 3.2.4. Параметры Интерфейса 3.2.5. Статистика Интеллсист 3.2.6. Настройка Интеллсист 3.2.7. Вхождение пользователя в Интеллсист 3.3. Иерархия работ и подработ 3.3.1. Формирование структуры Интеллсист 3.3.2. Работа с языками в Интеллсист 3.3.3. Формирование лексикона 3.3.4. Работы с библиотекой 3.3.5. Формирование БЗ 3.3.6. Работа с запросами 3.3.7. Формирование новой Интеллсист 3.3.8. Системные работы 3.4. Проектирование работ для меню 3.5. Пиктографические меню 3.6. Общая характеристика других работ 3.7. Инсталляция программ Глава 4. Язык Лейбниц (формальное представление знаний) 4.1. Формальное определение ЯПП 4.1.1. Прагмы 4.2. Лексемы 4.2.1. Символьные литералы 4.2.2. Логические литералы 4.2.3. Числовые литералы 4.2.4. Агрегаты литералов 4.2.5. Строковые литералы 4.2.6. Литералы дат 4.2.7. Литералы времени 4.2.8. Литералы комплексных чисел 4.2.9. Ссылочные литералы 4.2.10. Другие литералы 4.3. Определение типов (предметная область) 4.3.1. Символьный тип 4.3.2. Логический тип 4.3.3. Типы перечислимых 4.3.4. Числовые типы 4.3.5. Индексируемые типы 4.3.6. Строковый тип 4.3.7. Именуемые типы 4.3.8. Табличные типы 4.3.9. Ссылочный тип 4.3.10. Множественные типы 4.3.11. Последовательностные типы 4.3.12. Подпрограммные типы 4.3.13. Абстрактный тип 4.4. Логические выражения 4.4.1. Имена 4.4.2. Кванторы 4.4.3. Вызов функции 4.4.4. Вызов процедуры 4.4.5. Преобразование типа 4.4.6. Квалифицированное выражение 4.4.7. Атрибуты 4.4.8. Индексируемые компоненты и отрезки 4.4.9. Именуемый компонент 4.4.10. Запись алгоритма 4.5. Разделы записей на языке Лейбниц 4.5.1. Раздел пользователя 4.5.2. Определения типов. Раздел о предметной области 4.5.3. Определения понятий. Раздел о предметной области 4.5.4. Определения метапонятий. Раздел о предметной области 4.5.5. Определения синонимов. Раздел о предметной области 4.5.6. Определения отношений. Раздел о предметной области 4.5.7. Определения операций. Раздел о проблемной области 4.5.8. Определения исключений. Раздел о проблемной области 4.5.9. Определения правил. Раздел о проблемной области 4.5.10. Определения подстановок. Раздел о проблемной области 4.5.11. Определения масштаба. Раздел о проблемной области 4.5.12. Определения библиотек. Раздел о библиотеках 4.5.13. Базы знаний. Раздел области знаний 4.5.14. Определения запросов. Раздел области запросов 4.5.15. Определения меток. Раздел о проблемной области 4.5.16.Анкеты и шаблоны. Раздел о проблемной области 4.5.17. Неявные описания и вводные фразы 4.6. Стандартное окружение 4.7. Связь с программированием 4.7.1. Вызов готовых программ. Язык Вызов 4.7.2. Спецификации представлений 4.7.3. Переработка знания с ЕЯ 4.7.4. Избыточность и умолчание в языках 4.7.5. Вводные слова, термины и фразы 4.7.6. Ударение в словах 4.7.7. Смысл косвенной речи 4.7.8. Роль синтаксической грамматики ЕЯ Глава 5. Распознающие грамматики 5.1. Граф языка и примеры. 5.1.1. Общие сведения 5.1.2. Словари 5.1.3. Формальные языки 5.1.4. Граф языка 5.1.5. Примеры ФЯ 5.1.6. Распознающие грамматики 5.1.7. Графическое представление примеров 5.2. Графический метаязык. Алгоритмы порождения и распознавания 5.2.1. Графический метаязык 5.2.2. Алгоритмы порождения и распознавания 5.2.3. Применения алгоритмов 5.3. Система команд МГР типа 1 5.4. Система команд МГР типа 2 и Расширение системы команд МГР 5.5. Система команд МГР типа 3 5.6. Система команд МГР типа 4 5.7. Эквивалентность МГР и машины Тьюринга Глава 6. Использование МГР и математические машины 6.1. Концепция математических машин 6.1.1. Введение 6.1.2. Общие характеристики ММ 6.1.3. Формальное описание ММ 6.1.4. Примеры проектирования ММ 6.1.5. Операции конструирование ММ 6.2. Математическая машина диалога 6.3. Математическая машина экрана (заметка) 6.4. Машина грамматического разбора для лексического анализа 6.5. Машина грамматического разбора для синтаксического и семантического анализа 6.6. Машины логического и алгебраического выводов 6.7. Машина генерации кода синтезируемой программы Глава 7. Транслятор текстов ЯПП на ФЯ 7.1. Общее понятие о режимах работы Интеллсист 7.2. Реализация режимов и параметров работ 7.3. Схемы транслятора ЯПП на язык Лейбниц 7.4. Состав БЗ для сохранения и трансляция текстов 7.5. Генератор вопросов 7.6. Алгоритмы и их запись 7.7. Диспетчер мыслишек Литература Приложение 1. Таблица символов для лексического анализа Приложение 2. Список типов данных в языке Лейбниц Приложение 3 Синонимы для операций языка Лейбниц Приложение 4 Предопределенные атрибуты Приложение 5 Список прагм Приложение 6 Граф языка Лейбниц Приложение 7 Сводка правил порождающей грамматики языка Лейбниц Приложение 8 Характеристики, зависящие от реализации Приложение 9. Фундаментальные знания Приложение 10. Список базовых операций Приложение 11. Список стандартных операций Приложение 12. Паспорта структурных данных Приложение 13. Список стандартных исключений Приложение 14. Список обозначений расширений для имен файлов Приложение 15. Список ошибок, обнаруживаемых в Интеллсист Сокращения для терминов АП - алгоритм порождения АР - алгоритм распознавания БД - база данных БЗ - база знаний ВМ - вычислительная машина ГЯ - граф языка ЕЯ - естественный язык ИИС - инструментарий интеллектуальной системы ИМГР - интерпретатор машины грамматического разбора Интеллсист - интеллектуальная система КС - контекстно-свободный МАВ - машина алгебраического вывода МГР - машина грамматического разбора МГР1 - машина грамматического разбора первого типа МГР2 - машина грамматического разбора второго типа МГР3 - машина грамматического разбора третьего типа МГР4 - машина грамматического разбора четвертого типа ММ - математическая машина МТ - машина Тьюринга ППП - пакет прикладных программ ПЭВМ - персональная электронная вычислительная машина СВТ - средства вычислительной техники СеГ - семантическая грамматика СиГ - синтаксическая грамматика СП - синтезированная программа СУБД - система управления базой данных СУБЗ - система управления базой знаний т. - том публикации Информатика ФРАК - формульный автокод ФЯ - формальный язык ЭВМ - электронная вычислительная машина ЭС - экспертная система ЯВУ - языки высокого уровня ЯЛ - язык Лейбниц ЯПП - язык профессиональной прозы Язык философии - язык понятий Введение Программисты прекрасно ориентируются в программировании, поскольку оно определяет их предметную и проблемную области знания. Однако такие знания весьма полезны для решения важных программистских проблем: создание предметов общего системного программирования, разработка операционных систем, программных комплексов обслуживания и автоматизации процессов использования вычислительной техники. Прямой пользователь ВМ решает свою проблему применения ВМ, ее характеристики выходят за пределы характеристик предметной и проблемной областей программиста. Различие в знании программиста и прямого пользователя не способствует эффективному применению ВМ для решения проблем прямого пользователя при использовании им усилий программиста. Итак, хорошее знание только процедурного вида знаний и плохое знание предметной и проблемной областей прямого пользователя не обеспечит качественного использования ВМ и получение своевременного результата, соответствующего проблеме. Решение проблем или конкретных заданий, по которым строится алгоритм их решения, связано с получением и вводом знаний от прямого пользователя в ВМ. Здесь имеется порог, который преодолеть почти невозможно. Прямой пользователь является специалистом в своей конкретной области знания. Программист чаще всего не имеет таких же знаний в этой области. Конечно, за время общения с прямым пользователем программист многому научился и готов решать проблемы пользователя. При построении алгоритмов программист будет (он почти вынужден) терять часть знаний из-за неточностей в понимании пользователя. Непонимание может быть неуловимым. Понятие приближенных знаний еще не раскрыто, а проблемы уточнения знаний не разрешены. Поэтому программист осуществляет алгоритмизацию знаний пользователя заведомо с потерей точности в процедурном представлении знаний. Говорят часто о том, что некоторые знания плохо формализуемы. Что это такое? Плохо формализуемые знания можно интерпретировать так. Действительно, некоторым знаниям сложно сопоставить точный процедурный эквивалент, им сопоставляется подходящая процедура, отображающая часть знаний. Прекрасно понимается точность представления чисел, неточность представлений чисел находится под контролем самого алгоритма или программиста. Точность представления знаний, если она выражается численно, также будет находиться под контролем. Не все знания представляются числами, поэтому часть знаний находится не под контролем программиста, они плохо формализованы. Такие рассуждения показывают о возможной утрате знаний пользователя в случае, когда программист использует только процедурное представление знаний. Знания плохо формализуются из-за использования финитных средств их представления. Это вполне оправдано для процедурного подхода в информатике. Программирование связано с ФЯ, который необходимо изучать и наилучшим образом использовать. Некоторые трудности можно ожидать по этой причине при решении проблем прямого использования ВМ. Будет ли соответствовать ФЯ области знаний, которой интересуется прямой пользователь? Хватит ли языковых средств и методов для представления данных и знаний? Обеспечит ли язык эффективность и надежность программы и процесса ее построения? Имеются и другие вопросы по проблеме соотношения ФЯ - знания. Такие вопросы являются малоизученными, они требуют специального рассмотрения. Это не менее важная причина беспокойств процесс внедрения ФЯ при использовании ВМ. Почти каждый ФЯ опирается на 30 стандартных зарезервированных слов, которые должны обеспечивать (а фактически не обеспечивают) точность перевода лексикона проблемной области прямого пользователя на этот ФЯ. Конечно же, имеются большие сомнения относительно выполнения требований точного перевода. Здесь издержки обязательны. В связи с такой ситуацией актуальными становятся методы использования естественных национальных языков. Слово «национальных» важно в силу того, что перевод с одного ЕЯ на другой также как и перевод на ФЯ обладает теми же недостатками в применениях относительно представления знания. Знания должны представляться для ввода в ВМ теми средствами, на которых эти знания зарождались. Перевод знания в памяти ВМ должен обеспечивать максимальную точность передачи исходных знаний. Казалось бы, что спасительным вариантом для устранения любых беспокойств является совместная работа программиста и прямого пользователя. Для организации эффективной совместной работы необходимо обеспечить программиста знаниями в его области, а прямого пользователя в области программирования, построить технологию использования ВМ таким образом, чтобы их деятельность была направлена на решение проблем прямого пользователя. Надо быть каждому хорошим специалистом в своем деле! Реализация этого лозунга и является тормозом при использовании программиста в качестве посредника на пути передачи ВМ точных знаний в рамках процедурного программирования. Из всех рассуждений вытекает, что прямой пользователь должен быть реальным прямым пользователем без программиста между ним и ВМ. Это означает, что средства передачи знаний ВМ должны ограничиваться ЕЯ или его частью, удовлетворяющей пользователя в его области знания. На первых ВМ работали исследователи сложных технических систем, которые применяли вычислительную технику для моделирования динамики поведения этих систем, а задания были написаны на математическом языке и проблемы алгоритмизации почти не возникали. Расчет траекторий, распространение тепла в телах, характеристики проникновения частичек в сложных средах и др. применения ВМ использовали математические зависимости. Моделирование технических систем требовало знания математики и приближенных вычислений, что хорошо согласовалось с возможностями процессора ВМ. Может быть и наоборот, процессор ВМ строился так, чтобы максимально удовлетворить запросы моделирования. В качестве языка использовалось цифровое (а затем буквенное) кодирование команд. Впоследствии началось тиражирование СВТ, что привело к существенному увеличению числа прямых пользователей, исключая программистов. Прежде всего, на вычислительный центр пошел коммерсант, специалист, непрерывно обрабатывающий огромное количество бумажных документов. Как и в предыдущем случае между ВМ и прямым пользователем стоял (и стоит) программист, который с успехом справлялся со своими обязанностями перевода пожеланий пользователя, которые излагались на ЕЯ, в процедурные знания. Кроме этого, сам программист становился прямым пользователем, поскольку ВМ использовалась для составления программ для таких пользователей. Постепенно осуществлялась мечта Лейбница об использовании ВМ для обработки символов таким же образом, как и чисел. С увеличением числа прямых пользователей с одной стороны повысилась роль ЕЯ, а с другой стороны программистам стало работать намного сложнее из-за расширения используемых областей ЕЯ. ИИС в самых общих чертах представляет собой программный комплекс, с помощью которого собираются словари и характеристики каждого термина (знако или словосочетания), на основе словаря формируется лексикон и грамматика языка профессионала, формируется БЗ из отдельных сообщений пользователя, «обучение Интеллсист», и подготавливается работа процессора логического и алгебраического выводов из вводимого запроса искомого ответа. ИИС напоминает учителя или преподавателя, обучающего своему мастерству учеников (в нашем случае - ВМ). Интеллсист напоминает специалиста, который после обучения становится квалифицированным консультантом и решателем проблем по данной специальности с помощью части ЕЯ, которая обозначена как ЯПП. Так должна выглядеть процедура работы с ВМ. При этом надо учитывать требовательность по быстродействию и физическим размерам памяти ВМ. Итак, в памяти ВМ, в которой находится Интеллсист, имеется лексикон конкретной предметной и проблемной области, БЗ и процессор логического вывода нового знания из имеющегося знания. Каждый прямой пользователь желает решить свою проблему на основе БЗ. Он формулирует свой запрос, ставит вопрос или составляет задание, для решения его проблемы. Запрос, вопрос или задание на выполнение работ передается ВМ для выполнения. Интеллсист в результате логического вывода по БЗ выводит и печатает ответ или формулирует свои вопросы прямому пользователю для уточнения запроса, вопроса или задания. Прямой пользователь в таком случае будет замыкать цикл запрос-ответ путем принятия решений относительно полученного от ВМ ответа. Если ответ не удовлетворителен, то Интеллсист может запросить дополнительные знания для уточнения ответа. Если ответ удовлетворителен, то прямой пользователь может переходить к разрешению других запросов, вопросов или заданий (подробно процедуры работы ИИС и Интеллсист даны в томе 7). Запросы, вопросы или задания могут иметь значительные размеры. Имеется в виду запрос, состоящий из сотни тысяч символов. Работа с таким запросом потребует специальной технологии общения с ВМ. Работа в таком случае должна опираться на такие методы информатики как модульное (структурное, сверху вниз или снизу-вверх и др.) проектирование и разработка. Эти методы требуют специальных знаний в информатике, применяемых в данной области или отрасли знаний. Методам программирования и информатики описаны в томе 6. Из предварительного рассуждения видно, что использование ВМ начинается с построения средств общения в системе человек-ВМ. Худшим вариантом общения является передача для ВМ знания в форме кода или машинного языка. Конечно же, улучшенным вариантом является использование ФЯ. Наилучшим вариантом общения является передача для ВМ знания на ЕЯ. Эти варианты будут рассмотрены ниже как противоположные с точек зрения эффективности работы ВМ и пользователя. Рассуждение об Интеллсист приведены только для ориентира, который нужно иметь в виду, если прогнозировать развитие информатики. Все мы невежды, но только в разных областях. У. Роджерс Глава 1. Общение в системе человек-ВМ Компьютер (для универсальности конструкции компьютера употребляется аббревиатура ВМ - вычислительная машина) становится привычным орудием исследования. Им пользуются научные работники, финансисты, работники торговли или управления, студенты и дети, а в недалеком будущем и домашние хозяйки. Многие люди, стремящиеся решать на ВМ свои задачи, считают, что ВМ - это рабочее место программиста. Во многом они правы, поскольку без составления программы новую задачу на ВМ не решить. Чаще всего для новой задачи еще не существует программы или имеющаяся программа не совсем подходит к решению новой задачи. Действительно, составление программы является уделом программистов, если не существует программы составляющей программы по информации, которой располагает желающий решить новую задачу, а пользователь ВМ является специалистом в своей области знания и не должен знать программирование. Для того чтобы успешно решать свои новые задачи на ВМ каждый специалист должен иметь средства общаться с ВМ на его профессиональном языке независимо от того, в какой области знания он работает. Только программист может общаться с ВМ на языке программирования. Попробует разобраться в вопросе использования ВМ каждым специалистом, научным работником, финансистом, работником торговли или управления, студентом и детьми. Рассмотрим такие средства общения с ВМ, которые близки пользователям ВМ. Работа с ВМ - это диалог с предложениями от человека по выполнению заданий и с ответами ВМ на предложения. Диалог естественным образом подразумевает язык, с помощью которого формируются сообщения от человека для ВМ и от ВМ для человека. Нельзя при этом забывать об общении человек-человек и ВМ-ВМ. Общение человек-человек подразумевает использование ЕЯ, а общение ВМ-ВМ последовательности кодов. Указанные средства важны для информатики, поскольку они влияют на средства общения человек-ВМ и способствуют углубленному пониманию смысла передаваемых сообщений. Изучение диалога человек-ВМ представляется сложным и быстро прогрессирующим делом. История такого диалога насчитывает уже достаточное число лет [Бакланов78, Белнап81, Белый10, Бидер76, Богодист74, Брябрин81, Ван Дейк78, Виноград76, Денинг84, Косарев89, Коутс90, Красилов78б, Ловицкий80, Машина86, ПоповЭ82, Рубашкин89, Сильдмяэ83, Фреге77, Ыйм78]. 1.1. Основные средства общения Самая общая классификация средств общения включает предметы, рисунки и символы. Такая последовательность в перечислении является исторической. На ранней стадии своего развития человек (по-видимому) общался с другим человеком предметно, затем появились рисунки для передачи мыслей между людьми и, наконец, родились знаки (условные обозначения рисунков) для повышения эффективности общения. Знаковые системы до сих пор развиваются и пока не видна альтернатива таким средствам общения. Использование знаков привело к необходимости построения системы из правил сочетания знаков в последовательности, появилась грамматика. В информатике реализуется обратная последовательность. Вначале развития СВТ использовались символы для передачи информации в системах, в которые входит человек и ВМ. С развитием СВТ стали использовать средства визуализации информации и средства передачи информации рисунками. Дальнейшее развитие СВТ приведет к возможности использования реальных предметов для передачи информации. Более тонкая классификация имеет смысл внутри основных средств общения. По мере необходимости будем рассматривать тонкую классификацию. Общение в системах человек-человек строится на основе широкого использования всех органов чувств человека: зрения, слуха, осязания, обоняния, вкуса и др. Знаки, как единицы сообщений, имеют самые разнообразные формы и структуры. Информатика стремится использовать те же основы общения в системах человек-ВМ. Полная реализация программы общения человек-человек в системах человек-ВМ не представляется пока возможным. Эта ситуация объясняется достаточно еще слабыми результатами развития СВТ и сложностями формализации процессов общения человекчеловек. Сегодня еще имеется недостаточное представление о проблеме передачи интонации, длинного контекста и условностей общения. Пути развития средств общения в системах человек-ВМ можно проследить на имеющихся средствах. Конечно, Здесь не будет никакого касательства технических средств конструирования устройств общения. Здесь рассматриваются только информатические вопросы и проблемы общения. Символическое и предметное общение в системе человек-ВМ имелось и остается - это использование клавиш (предметов) для воздействия на программы или ход вычислительного процесса. Общение с помощью рисунков еще предстоит осваивать, поскольку графика используется еще не достаточно широко. Несмотря на имеющиеся успехи необходим огромный труд по освоению методов, средств и операций ввода, преобразования и вывода графики, картинок и рисунков. Информатика рисунков (графическая информатика) находится в зачаточном состоянии. Известны средства их ввода, печати и некоторые простейшие операции для преобразования. Эффективное использование зрения, связанного с информатикой рисунков, находится в стадии развития. Телевизионное изображение вводится в память ВМ и частично обрабатывается. Решаются некоторые задачи на основе зрительных образов. Известны программы создания не только мультфильмов, но и фильмов с реальными объектами. Методы и средства решения таких задач основаны на использовании программистских приемов. Не так долго осталось ждать широкого применения ввода, преобразования и вывода зрительных образов с помощью зрительных сенсоров. Хуже обстоит дело с использованием слуха человека. Имеются технические средства восприятия и воспроизведение звуковых сигналов, их распознавание (осмысливания) и синтез звука по текстам. Можно сказать, что начальное общение человека с ВМ на основе звуков освоено. Предстоит важная работа по синтезу текстов, являющихся результатами решения задач, преобразованию текстов в звук с учетом интонаций, образов и ситуаций передачи результатов работы ВМ звуком. Осязание также используется в СВТ, например, при передаче информации с помощью экрана дисплея. Но это все пока только начальная стадия внедрения осязательных возможностей человека, реализующая предметное общение. Важно, чтобы в память ВМ вводилась осязательная информация в таком количестве, чтобы Интеллсист могла не только решать оперативные задачи, но и по необходимости ставить задачи автоматически. Совсем плохо дело обстоит с обонятельным и вкусовым общением человека с ВМ, поскольку моделирование таких способностей человека не достигло уровня, на котором можно реализовать такие средства в системе человек-ВМ. Нужны ли такие средства общения? Бесспорно, нужны. Если человек эффективно их использует, то эффективность использования органов чувств человека можно повысить в связи с применением СВТ и в особенности системы человек-ВМ. Следует обратить внимание на то обстоятельство, что внутренняя обработка информации реализуется с помощью начальных программ. Это значит, что главная трудность в использовании всех возможностей человека лежит в области создания СВТ и программ обработки соответствующего вида информации. Использование программ ввода того или иного вида информации не заставит себя ждать. Итак, будем ориентироваться на символьные средства общения. Смысл предмета, явления или процесса можно передать только средствами языка. В связи с этим исследование языков и методов их применения является важной составляющей частью информатики. Именно поэтому проблемы языкового общения в системе человек-ВМ рассматриваются в виде самостоятельного тома (см. т.4). Конечно, основным рассматриваемым средством общения будем считать язык. Самая общая классификация языков известна и она определяется следующей фразой: языки подразделяются на рассудительные и командные языки. Язык рассуждений представляются текстами описания предметов, явлений и процессов, фактами на эти объекты. Языки команд также представляются текстами описания предписываемых действий и требуют специального рассмотрения. Языки команд ВМ освоены широко в программировании, проблема командного общения человека нуждается в поисках новых путей реализации, исключая простые средства типа команда человека – одна процедура или подпрограмма. А начнем именно с рассудительного языка, а затем рассматриваются некоторые командные языки. История информатики начиналась с использования командных языков. В первую очередь к языкам команд относятся языки программирования. Специальным языком команд является язык МГР, который описывается в главе 5. Основные функции языка связаны с задачами, которые решаются в процессе коммуникации и познания. Язык выполняет следующие основные функции: 1. Описательная функция - сообщения о реальном или мыслимом положении вещей. Сюда можно отнести разделы, в которых описываются величины, употребляемые в командах. Язык предназначен для изложения смысла, передачи осмысливаемых сообщений. Язык определяет предметы, явления и процессы. С помощью языка осуществляется накопление фактов. К нормативным функциям языка относится формирование норм (правил) для понимания сообщений (приемником). 6. С помощью языка реализуется изменение мира слов путем передачи команд и оценок состояния (приемника). 7. Языком осуществляется выражение разнообразных чувств, отношений к реальному миру. Все эти функции можно усмотреть при неформальном и формальном описании ЯПП. 2. 3. 4. 5. 1.2. Классификация языков общения в системе человек-ВМ. Языки ФРАК Классификация языков. Существуют самые разнообразные классификации языков общения в системе человек-ВМ. Каждая из них удовлетворяет какому-либо критерию или признаку. Как было отмечено, в информатике рассматриваются два основных класса языков: рассудительные и командные. Рассудительные языки охватываются средствами ЯПП. Для командных языков будем придерживаться простейшей классификации: языки кодов, языки ассемблера (автокоды), языки ФРАК, ЯВУ, ЯПП и ЕЯ. Если рассматривать с конца данного перечисления, то ЕЯ считается известным языком, ЯПП изучается в данном томе, ЯВУ - известны программистам, а прямому пользователю знание их не обязательно, ФРАК представлен в самых общих чертах в данном разделе, коды и автокоды отчасти будут рассмотрены в томе 6. В этой классификации отражена история развития информатики программирования. С каждым уровнем классификации связано появление нового способа написания программ ВМ. Языки кодов выражают язык ВМ, в них используются цифры в некоторой системе счисления - коды адресов ячеек и коды команд ВМ. Автокоды используют символьное обозначение для адресов и кодов команд, что является нововведением в программировании символического кодирования. В автокодах используются слова и знаки (идентификаторы) в качестве символьного обозначения. ФРАК исключает покомандное написание программы и использует формулы для программирования вычислений, что является нововведением в программировании формульного кодирования (как в математике). ЯВУ использует типы данных и операторы - обобщение команд ВМ, что является нововведением в программировании понятия оператора А.А. Ляпунова. ЯПП использует часть ЕЯ, в которой выделены термины предметов и действий, что является нововведением в программировании понятия термина и его смысла. Грамматика ЕЯ включает правила СиГ, что является нововведением в информатике является грамотность в написании мыслей для передачи их в Интеллсист. Иногда используют другие классификации. Вот несколько примеров признаков: признак уровня языка: (низкий, высокий, сверхвысокий, промежуточный, эволюционный, диалект, с типизацией); признак популярности языка: (коммерческий успех, хороший, плохой, модный, гибридный, объем литературы с пропагандой языка, эффективность компиляторов, средства проектирования, стандартизация, минимальное число порождаемых ошибок); признак важности надежность). (поддержка, библиотека, преемственность, точность, В статье [Любарский90] предложена такая классификация: язык информационной потребности (у нас - это часть ЕЯ), язык семантических групп (у нас - это ЯЛ) и язык семантических сетей (описание записей с полями), язык синтаксических структур (у нас - это язык Марков), язык доступа к данным, язык проблемных сфер, язык диспетчерских решений (у нас - это некоторый ЯПП), язык представления ответов и язык форм отображения. Иерархия этих языков отражается в конкретных реализациях подсистем Интеллсист в форме последовательного преобразования запроса пользователя по БЗ в ответ. Имеются и другие подходы к классификации. Все они отражают конкретные разработки так же, как и принятая здесь классификация для новых Интеллсист. Хоронить перечисленные признаки классификации языков нельзя, они сами отомрут, когда мода (практическая потребность) на них пройдет и не появится язык, покрывающий возможности имеющегося и находящегося в деле языка. Командные языки использовали и будут использовать как накопленный арсенал методов программирования, которые ориентированы на структурное, модульное, объектно-ориентированное, параллельное, графическое, картинное, предметное, синтезирующее представление команд при передаче ВМ алгоритмического знания. Устойчиво выживут только ЕЯ и близкие к нему языки. Существующие подходы к разработке языков программирования управляющих ВМ исторически складывались следующим образом. Конечно, первое использование ВМ было связано с ручным кодированием команд для ВМ (программ) и данных. В это же время стали развиваться языки программирования высокого уровня. Вместе с ними развивались языки ассемблерного уровня для системного программирования управляющих ВМ. Однако ассемблерный уровень отличается от использования кодового программирования применением слов из букв и цифр. Почему же нельзя использовать языки высокого уровня для управляющих ВМ? Программирование для встраиваемых ВМ ранее использовалось и используется сейчас для реализации начальных алгоритмов новой ВМ - операционных систем. Необходимо понять причины запаздывания во внедрении средств языков высокого уровня. Они возникали из-за ограниченных возможностей ВМ по памяти и быстродействию. Эти же причины действуют и для начального программирования любой новой по архитектуре ВМ. Вообще же имеются две главные причины: Причина 1. Как уже упоминалось, существовали ограничения по памяти и быстродействию. ВМ, встраиваемая в техническую систему, должна обладать рядом ограничительных свойств. Ограничения вызваны жесткими условиями применения ВМ в составе технической системы: малый отводимый для ВМ объем пространства, следовательно, малая память и малое быстродействие, а число выполняемых функций непрерывно росло. Поэтому каждая ячейка памяти становится ценной, каждая секунда работы процессора или набора процессоров должна использоваться полностью для выполнения многочисленных функций. Причина 2. Доступ ко всем ресурсам ВМ - это переход на машинные команды. Программирование встроенных ВМ связано с использованием всех характеристик процессора, памяти и каналов обмена ВМ с внешним миром, с управляемым устройством. Это вызвано тем обстоятельством, что ВМ проектировалась именно для такого использования, часть функций ВМ в системе заложены в архитектуру процессора, памяти или канала. Программы таких ВМ должны эффективно использоваться для реализации функций управления и переработки сообщений, поступающих извне или передаваемых во внешнюю среду для управления. Доступ ко всем ресурсам ВМ необходим для реализации функций технической системы, быстродействия алгоритмов переработки сообщений и экономии кодирования данных. Крайний случай в программировании состоит в использовании машинных кодов для построения программ управления. Технология разработки управляющих программ описана в литературе достаточно широко [Анализ84, Берг76, Изерман84, Крамм89, Красилов79б, 81а, 81в, 81г, 83в, Тамм85]. Рассмотрим только один прием организации программирования встроенных ВМ. Он базируется на следующей идее. Поскольку встроенная ВМ ограничена по своим возможностям, для разработки программ используется универсальная ВМ в качестве инструментальной. На универсальной ВМ разрабатывается косвенная операционная система встроенной ВМ (КОС), которая включает: транслятор языка ФРАК (в коды встроенной ВМ), загрузчик подпрограмм (создание макета выполняемой программы), документатор объектных кодов, интерпретатор кодов для отладочного исполнения, имитатор внешних воздействий на встроенную ВМ, средства отладки (обнаружение, локализация, индикация и информация об ошибке в программе), генератор загружаемых кодов (для прошивки ППЗУ), сервисные программы. Именно поэтому такие операционные системы называются косвенными. Языки ассемблера. Существенной проблемой разработки начального и во многих случаях функционального программного обеспечения проектируемой ВМ, в особенности входящей в состав систем реального времени, является проблема формирования эффективного языка программирования и отличного от языка машин. (Недостатки программирования в кодах ВМ известны.) Общепринятое решение проблемы - описание и реализация языка символьного кодирования (автокода 1:1 или ассемблерного языка), который обеспечивает использование словесных имен вместо кодовых адресов и чисел для обработки. Главный недостаток автокодов состоит в отсутствии рекурсивных определений для объектов и операций. Частично этот недостаток устраняется введением в автокод макроописаний и макрокоманд. Имеется и другой подход к увеличению изобразительных средств программы и к сохранению всех положительных свойств автокодов. Он связан с языками ФРАК. Рассмотрим метод устранения большинства недостатков автокодов. Основой подхода к построению метода ФРАК является процедура сопоставления языков программирования высокого уровня и архитектуры конкретной ВМ. Результатом такого сопоставления являлись, к примеру, язык программирования PL 360, разработанного Н. Виртом для ЭВМ IBM серии 360. Далее будут рассмотрены и другие примеры. Основная цель подобных рассмотрений - подойти к таким средствам общения в системе человек-ВМ, которые обеспечивают максимальное приближение к ЕЯ. Исторически к этому многих привела, в частности, технология создания языков ФРАК. Именно эту веху желательно раскрыть. Заметим, что ФРАК можно использовать не только для разработки программ управляющих ВМ, но и для разработки программ, ориентированных на любой класс проблем. В результате сопоставления языков программирования высокого уровня с архитектурой ВМ обычно разрабатывались машинно-ориентированные языки высокого уровня, сочетающие высокую эффективность реализации программ с изобразительными средствами ЯВУ. Такие языки именуются формульными автокодами, или сокращенно - ФРАК. Первая реализация языка ФРАК появилась в результате сопоставления языка Фортран и архитектуры ЭВМ БЭСМ-6. Язык был разработан В.Г. Суховым и получил название PL-БЭСМ-6. ФРАК является средством составления программ начального программного обеспечения, он используется системными программистами. Всего было разработано 5 языков ФРАК [Красилов74а, 74б, 78б, 81б]. Схематическое определение языков типа ФРАК можно пояснить следующим образом. ФРАК активно использует свойства и возможности кода и автокода: - явно или неявно (по умолчанию) предоставлять доступ ко всем операциям и ресурсам ВМ, - определять все типы простых и некоторых составных данных, с которыми может оперировать ВМ на базе реализованных в ней команд, - транслировать записи программ за 1 или 2 прохода, - получать кодовые программы с эффективностью 1:1 или с незначительной потерей в эффективности (на 5-10%). ФРАК может включать в себя макросредства и возможности использования корреляции между командами ВМ. ФРАК активно использует свойства и изобразительные возможности языков высокого уровня и систематически применяет рекурсивные определения для конструирования объектов, операций и логики программ, он максимально использует опыт, приемы и обозначения ЯВУ. ФЯ ФРАК определяются как проекции языков типа Фортран, алгол-60 [Красилов67], алгол-68 [Красилов78в], PL\1 [Универс68] и др. на архитектуру ВМ. И это определение будет в дальнейшем уточняться через приемы конструирования и сравнения языка ФРАК с языками ассемблера и ЯВУ. Кроме этого ФРАК в конкретных условиях его применения использует ориентацию на область применения ВМ, на пользователя этой ВМ, обеспечивая сервисные средства для эффективного решения проблем системного программирования. ФЯ ФРАК определяется своим синтаксисом, семантикой и прагматикой. Синтаксис определяет два уровня: ядро, соответствующее архитектуре ВМ, и оболочку - расширение, учитывающее возможности операционной системы или специальных системных программ, встроенных в ВМ (управляющие или обменные программы). В особом положении находятся технические системы со встроенными ВМ, которые могут и не иметь операционной системы. В связи с этим одним из главных требований к языкам ФРАК встроенных ВМ является требование хорошей эффективности функциональных программ по памяти и времени их работы. Ядро языка ФРАК определяет: - форматы только тех данных, над которыми в архитектуре ВМ и операционной системе (если таковая имеется) определены операции, а изображаются они средствами ЯВУ; - операции и операторы, эквивалентные командам или наборам команд в отношении 1:1, одна операция : одна команда; - четыре группы операций: формульные, управляющие, специальные и вспомогательные; - форматы величин (переменных), имеющих адресуемые единицы памяти; - ключевые форматы операторов в соотношении 1:1, один ключ: одна машинная команда (ключ - это зарезервированное слово, или синтаксический символ языка ФРАК); - форматы явного или подразумеваемого задания преобразований одних типов данных в другие; - программный модуль или модуль данных для реализации технологии построения программ и наборов данных коллективом программистов; - средства явной подкачки кодовых подпрограмм для обеспечения возможности понижения уровня программирования в специальных случаях или использования накопленной библиотеки подпрограмм. Оболочка языка ФРАК определяет: - классы только тех структур данных, над которыми в архитектуре ВМ и ОС определены операции и которые определяют предметную область прикладного или системного программирования; - операции и операторы (составные операторы), сокращающие наборы операций или операторов ядра языка ФРАК; - операторы обмена или управления, процедуры которых описаны средствами ядра языка ФРАК; - операторы мультиобработки, обработки прерываний и связи с управляющими подпрограммами, написанными на языке ядра; - аппарат макросредств (макроопределения и макрокоманды), не требующий перетрансляции; подстановка макроопределений вместо макрокоманд должна осуществляться одновременно с трансляцией исходного текста программы. Семантика языка ФРАК содержит таблицу сопоставления символов и кодов операций, арифметику типов данных для всех операций, методы раскрутки рекурсивных определений и условия идентификации лексем всех сортов. Прагматика языка ФРАК включает (кроме количественных ограничений на языковые конструкции) описание программ и данных, точных эквивалентов внешнего и внутреннего представлений данных, характеристик быстродействия операций и способов оптимального использования всех конструкций языка. Именно так порождается структура языка ФРАК в результате сопоставления архитектуры ВМ и средств ЯВУ. Эти же сопоставления порождают алгоритмы транслирующей системы. Сами сопоставления сведены в приводимую ниже таблицу. Использование языка ФРАК. Практически была разработана технология создания и реализации семейства языков, с одной стороны, высокого уровня, а с другой стороны, ориентированного на архитектуру ВМ [Красилов78б]. Проекция архитектуры ВМ на ЯВУ означает, что в ФРАК используются только те базовые операции ЯВУ, которые реализуются в кодовой программе по схеме 1:1. Структура языков семейства ФРАК (это также способствует пониманию языков ФРАК) выявляется при сопоставлении объектов языка, машины и действий в транслирующей системе. Сравним ЯВУ и языки семейства ФРАК: семантика не зависит от ВМ - машинно-зависимая семантика, неадекватность примитивов языка и архитектуры ВМ - полное соответствие примитивов языка примитивам архитектуры ВМ, оптимизация программы достигается вариацией применяемых операторов оптимизация заложена в определении языка, ограничитель требует емкой командной интерпретации - ограничитель соответствует одной команде, употребление идентификатора может предшествовать его описанию - описание идентификатора должно предшествовать его употреблению. По другим параметрам имеется полное или частичное соответствие языков, как в определении языка, так и по его примитивам. Конкретное сопоставление приведено ниже в таблице. Таблица. Сопоставление элементов языка ФРАК и архитектуры ВМ № п/п Конструкция языка Конструкция ВМ 1 Идентификатор Адрес 2 Константа Данное 3 Индекс Регистр 4 Формульный тип Форматы данных 5 Формула Форматы команд 6 Ссылки Косвенный адрес 7 8 Операция Описание величины 9 Оператор процедуры 10 12 Математические операции Стандартные идентификаторы Ядро Алгол-68 Коды операций Операции процедуры возврата Операции перехода с управления и возвратом передачи параметров Экстракоды 13 Присваивание 14 Циклы 11 Операции транслятора Распределение памяти, идентификация, формирование таблиц лексем Формирование команд с непосредственными данными Распределение памяти на регистрах Идентификация операций и операций Распределение командной памяти Программирование приведений и балансировка типов Программирование формул Распределение памяти Программирование Программирование функции обращений к экстракодам Определение форматов Программирование операций с команд регистрами Форматы данных и команды Подстановка команд преобразования данных преобразования типов данных Команды записи и чтения Арифметика типов с данных балансировкой Операции перехода Раскрутка рекурсивных 15 Условный оператор Команды условного перехода 16 Оператор выбора 17 Оператор останова 18 19 Оператор выхода Оператор перехода 20 Метка Команды условного перехода Команды управления процессорами Команда перехода Команда передачи управления Адрес команды 21 22 Синонимы Отождествление адресов Параллельные процессы Команды управления 23 Операторы 24 Модуль 25 Общие величины Команды параллельного запуска Команды управления и восстановления состояний Базовые регистры определений операторов Порождение схемы программы, раскрутка рекурсивных определений операторов Порождение схемы программы Организация мультиобработки и режимов прерывания Организация выхода из модуля Порождение схемы программы Формирование таблицы переходов Совмещение памяти Организация мультиобработки процессорами Организация мультиобработки Формирование данных для загрузчика и архивной системы Формирование таблиц базирования данных В таблице перечислены только некоторые важные элементы языка и программ. Важно отметить, что табличное сопоставление указывает на хорошую технологию формирования как самого языка ФРАК для данной ВМ, так и подход к проектированию системы трансляции языка в объектный код машины. Важное требование: структура языка ФРАК целиком должна зависеть от архитектуры ВМ, отступление хотя бы от одного элемента архитектуры означает отход от сущности языка ФРАК. Также важно, что языки ФРАК внешне существенно отличаются от языков ассемблера и напоминают своими многими средствами ЯВУ. Из такого беглого сопоставления видны преимущества языков семейства языков ФРАК перед ассемблерными языками по изобразительным средствам, а по сравнению с ЯВУ - по эффективности реализации. В этом подведении итогов сравнения видны глобальные преимущества ФРАК. Следует упомянуть и о недостатках языков ФРАК: машинная зависимость ограничивает (и притом существенно) переносимость программ и данных, осуществляется локальная организация разработок программного обеспечения встроенных ВМ, обычно имеющих ограниченное распространение, некоторая жесткость конструкций языка приводит к ограничениям представлений проблемной области, частично остается необходимость в кодовом представлении некоторых команд и данных. Принципиальная возможность формирования семейства языков ФРАК заложена во взаимно однозначном соответствии примитивов языков программирования элементам архитектуры ВМ. Можно сказать, что языки ФРАК являются алгебраическим выражением архитектуры ВМ. Соответствие можно подтвердить сопоставлениями, представленными в таблице: Пункт 1 2 3 4 5 6 7 8 9 10 11 12 13 Язык ФРАК метаязык данные константы синтаксический анализатор выражение арифметика типов условия операторы управления операторы ввода-вывода описание комментарий операторы отладки арифметика типов Архитектура ВМ Техническое описание память командная память дешифратор арифметическое устройство аппаратура контроля логический процессор устройство управления устройство ввода-вывода конфигурация оборудования пультовая индикация пульт ВМ аппаратура контроля Дадим общее замечание: представляет интерес такое сопоставление Интеллсист и архитектур новых ВМ. Сопоставление будет рассмотрено в томе 7. Создание языков ФРАК базируется на следующих принципах: обязательное полное соответствие примитивов языка ФРАК и данных всем элементам архитектуры ВМ; систематическое использование рекурсивных определений, не требующих при раскрутке дополнительных машинных команд кроме тех, которые используются при программировании в кодах; использование стандартных имен из числа имен всех базовых элементов архитектуры ВМ; разделение совокупности операций на 4 группы, охватывающих все функции архитектуры ВМ; использование общеупотребительных в программировании обозначений для переменных, ключевых слов, констант и операций; формирование ядра языка ФРАК и возможностей его расширения операциями, не ухудшающих производительность программ; использование возможности подключения кодовых данных и структур для прямого кодового программирования (если это крайне необходимо) специальных подпрограмм обмена или управления; описание языка должно обеспечивать трансляцию записей в 1 - 2 прохода (определение объекта программы должно предшествовать его использованию в программе); учет всех возможностей и конструкций, имеющихся и планируемых языков программирования высокого уровня, без потери эффективности программ; максимальный учет пользовательских запросов на обозначения и применения объектов языка, определяемых областью использования ВМ. Критериями отбора конструкций языка ФРАК следует считать: полный охват возможностей архитектуры примитивами языка и данных, использование гибких форматов для учета частностей языка; максимальная оптимальность кода после трансляции; максимальное отражение в мнемонике языка его потребительских свойств. К этому необходимо добавить оценку средств ФРАК «самой» архитектурой ВМ с позиций системного программиста, программиста и пользователя. Соотношение средств или методов программирования и архитектуры способствует эффективному логическому проектированию ВМ, поскольку разработка языка ФРАК и соответствующей системы программирования может предшествовать разработке ВМ. Обычно со встроенными ВМ это и происходит. Для языка ФРАК обычно создается кросс-система или косвенная операционная система программирования еще до реализации разработок встроенной ВМ [Красилов74а, 74б]. Каждый человек работает в одной или нескольких областях деятельности, используя соответствующие области знания и способы их представления. 1.3. Сравнение языков автокод, высокого уровня и ФРАК Принципиальная возможность формирования языков ФРАК определяется наличием однозначного соответствия между компонентами архитектуры ВМ и основными понятиями языков высокого уровня, которые проектировались под прямым воздействием архитектур с учетом запросов практики применения ВМ. Заметим, что языки семейства ФРАК целесообразно писать не только для программирования ВМ, но и для программирования виртуальных или математических машин, для любых процессов, которые моделируются на ВМ. Можно указать такие примеры ММ как МГР [Красилов78а], ММ диалога [Красилов81б, 89а] и пакеты прикладных программ [Ершов82, Тамм77]. Важной информатической мыслью, возникающей в связи с конструированием языка ФРАК, является следующая: каждая программа (независимо от средств ее изображения) адекватна формуле со скобочной структурой. Каждая лексема (представляющая данные или величины) программы является операндом соответствующей формулы, а каждый ограничитель (запятая, точка с запятой или зарезервированное слово) программы является операции соответствующей формулы. Такое толкование любой программы унифицирует алгоритмы трансляции, обеспечивает проблему аналитических выкладок с текстами программы и указывает на принцип построения синтаксиса языка ФРАК [Красилов73б, 85а]. Процедура конструирования языка ФРАК состоит в формировании его синтаксиса, семантики и прагматики при последовательном изучении архитектуры ВМ, языков высокого уровня, выполнении принципов, требований и пользовательских запросов по области применения ВМ. Преимущества языка ФРАК (как указывалось) для системного программирования вытекают, например, из-за возможности доступа ко всем элементам архитектуры ВМ с помощью средств ЯВУ. Конечно, предлагаемые возможности языка ФРАК обладают одним существенным недостатком - язык является машинно-ориентированным. Ниже используется табличный метод сопоставления языков, который способствует определению места языка ФРАК среди языков программирования. Сопоставление, представленное в табл.2.3, отражает только главные понятия языков и решает задачу выявления преимуществ одного сорта языков перед другими (автокод ныне именуется языком ассемблера). Таблица 2.3. Сравнение автокода, языков высокого уровня и ФРАК № п/п Автокод 1 2 Символьные имена Управление памятью 3 4 5 6 7 8 9 10 11 12 13 14 15 ЯВУ Символьные имена Автоматическое распределение памяти Аббревиатура операций Универсальные средства выбора обозначений Машинная семантика Семантика не зависит от конкретной ВМ Полное отражение системы Неадекватность средств языка команд и ВМ Форматная запись программы Бесформатная запись программы Любая степень оптимизации Уступка оптимизации рабочей рабочей программы программы изобразительным средствам Ограничители избыточны Ограничители порождают команды Описание предшествует Описание и использование использованию независимы Трансляция за 1 - 2 прохода Многопроходная трансляция Отсутствие рекурсий Декомпозиция формул и операторов операторов Прямая связь с операционной Ограниченная связь с системой операционной системой Отсутствует динамическая Имеется динамическая память память Локальность контроля Контроль формализован Машинный уровень Необходимы средства реализации автоматизации автоматизации Язык ФРАК Символьные имена Автоматизированное распределение памяти Универсальные средства выбора обозначений Семантика отражает свойства данной ВМ Соответствие система команд языковым примитивам Свободный формат записи программы Оптимизация зависит от пользователя Ограничитель - команда ВМ Описание предшествует использованию Трансляция за 1 - 2 прохода Декомпозиция формул и операторов Прямая связь с операционной системой Частично имеется динамическая память Контроль формализован Необходимы средства автоматизации Из приведенного сравнения видны многие существенные преимущества языков ФРАК перед автокодом и некоторые преимущества перед языками высокого уровня, отсутствуют недостатки по сравнению с автокодом и имеются некоторые недостатки по сравнению с ЯВУ. Оценивая сопоставления необходимо иметь в виду, что языки ФРАК ориентированы на системное программирование, а ЯВУ предназначен для программирования в прикладных областях применения ВМ. Язык ФРАК эффективный инструмент программирования операционных, транслирующих и управляющих систем. Языки ФРАК нашли практическое применение. Кроме уже упомянутых языков PL 360 для ЭВМ фирмы IBM, PL-БЭСМ-6 для указанной в названии ЭВМ, известны язык Эль-76 для ЭВМ Эльбрус, язык Ассоль для ЕС ЭВМ, языки ФРАК-Гелий и ФРАКПламя для встроенных технических систем. Последние два языка ориентированы на системное программирование управляющих встроенных ВМ и использованы при разработках технических систем управления. Известны и другие языки ФРАК. Ниже будет рассмотрен язык ФРАК для МГР текстов (программ). Эффективность применения языков ФРАК стала возможной следующим факторам: он является высокоуровневым языком типа ПЛ/1 или Алгол; благодаря он «заставляет» программировать оптимально в соответствии с возможностями ВМ и квалификацией программиста; он обеспечивает высокую степень автоматизации программирования в соответствии с формализованной технологией и методологией информатики, применением корреляционной зависимости команд. Из сказанного следует, что язык ФРАК является алгоритмической моделью архитектуры ВМ с позиции пользователя. Такой взгляд позволяет сделать вывод о возможности проектирования ВМ по алгоритмическому описанию архитектуры, что заведомо обеспечит современный уровень программирования на будущей ВМ. (Если мир компьютеров не будет ориентироваться на единую архитектуру.) Сформулированный подход к проектированию ВМ позволяет оптимально решать проблемы соотношения аппаратных и программных средств, обеспечивающих полноту охвата классов решаемых с помощью ВМ задач. 1.4. Основа общения - язык, о способах задания языков Самое общее определение языка дается так: множество знаков и множество правил образования слов и текстов из слов с помощью знаков. Совокупность правил вместе с алфавитом букв, цифр и знаков препинания составляет грамматику, именуемая грамматикой, например, русского языка. Грамматика определяет метапонятия грамматические категории, которые выделяют подмножества слов или текстов и образуют словарь метапонятий, который является частью языка. Любой язык задается своими алфавитом и грамматикой. ФЯ также определяются алфавитом и грамматикой. Обычно используют порождающие грамматики, для которых метаязыком является формализм Бэкус-Наура, возникший по работам, представленным в публикации [Хомский61] для описания языков программирования. Здесь используется чуть видоизмененный формализм под названием язык Марков. Будем рассматривать распознающие грамматики для описания любых языков [Красилов74в, 75а, 78а, 79а, 83б, 86а]. Основы распознающей грамматики рассмотрены в главе 5. Общение в системе человек-ВМ использует все языковые средства: ЕЯ и его подмножества, ФЯ и их модификации, разнообразные командные языки и языки меню для программирования работ системы, языки сценариев и др. Любой из перечисленных языков описывается с помощью грамматики. Возникновение грамматик выдвинуло проблему ее представления. По современному пониманию грамматика состоит из алфавита символов, алфавита грамматических понятий (категорий), правил построения частей текста (синтаксис) и правил понимания текстов (семантика). В исключительных случаях, в научных целях или в формальных грамматиках, язык может определяться конечным набором слов. В таких случаях грамматика не формируется и проблемы представления грамматики не существует. Современные языки имеют определенную степень сложности, ограниченный алфавит, словари большого объема и требуют задания или определения грамматики. Словари и грамматика определяют способ задания языка. Все ЕЯ определяются грамматиками. Самый простой способ задания языка общения в некоторой системе состоит в декларировании применения ЕЯ. Следует указать пороки такого задания (см. п.1.5). Они частично здесь изучаются. Из ЕЯ выделяется очерченное подмножество, с помощью которого можно передать для Интеллсист осмысливаемые системой тексты. Особое место занимает язык меню, передающий для Интеллсист глобальную последовательность действий пользователя при сообщении им задания на поиск новых фактов или новых правил построения фактов. Средства построения и реализации языка меню включают использование дерева подработ Интеллсист, пиктограммы выбора работ, аналоги или стандарты последовательностей работ или формальная запись выполняемых последовательностей работ. Так поступают в разработках всех современных программных систем. Любой язык может задаваться одним из способов: - описательно так, как это реализуется в учебниках, - на образцах так, как это делается в статьях, - может представляться формально так, как это делается в информатике, - грамматикой так, как это делается в лингвистике, - может определяться метаязыком так, как это делается при описании некоторых языков программирования, - может определяться в форме распознающей грамматики - графом языка так, как рассматривается в главе 5. Имеется широкий спектр разнообразных средств определения языков различного назначения. 1.5. Языки профессиональной прозы Средством общения людей является ЕЯ. Имеется большое число отличительных черт, выделяющих ЕЯ по сравнению с ФЯ, широко распространенных в общении людей различных профессий с ВМ. Это наиболее важная черта ЕЯ для применений Интеллсист. (Они же и определяют сложность ЕЯ.) Имеется в виду сложность ЕЯ, которая определяет невозможность реализации средств ЕЯ [Бакланов78, Белый10, Виноград76, Калугина79, ПоповЭ82] в «глобальных» Интеллсист. Вначале определим сложности в использовании ЕЯ. Основные атрибуты сложности ЕЯ препятствуют его изучению и использованию для построения машинных систем работы с текстами ЕЯ. Отметим лишь некоторые. Значительные размеры контекста для определения смысла понятия, многозначность слов или понятий, большое число грамматических категорий СиГ и огромный размер словаря терминов (да и слов также) - это основные атрибуты сложности ЕЯ для Интеллсист. Первая сложность состоит в том, что понятие в ЕЯ имеет обширный контекст его определения. Это означает, что каждое понятие имеет определение, но оно локализуется весьма сложно (возможно и не в данном тексте). Например, контекстом данного понятия может быть память человека (порождение нового слова или термина), контекстом может быть содержимое книг библиотеки и др. Вторая сложность состоит в том, что ЕЯ использует синонимы таким образом, что некоторые два синонима могут иметь различные значения в некоторых контекстах с другими терминами. Их смысл определяется также по обширному контексту. Еще одна (третья) сложность использования ЕЯ: число грамматических категорий СиГ оценивается несколькими сотнями, что порождает сложности понимания ЕЯ для Интеллсист. Кроме этого, подавляющая часть грамматических категорий СиГ не способствует определению смысла текста. Работа с ЕЯ в условиях ограниченной памяти или быстродействия алгоритмов (для передачи знаний или для перевода текстов) представляет большую проблему. И, наконец, последняя (четвертая) сложность: наличие огромного словарного запаса ЕЯ. Для решения проблем пользователя конкретной специальности огромный запас слов или терминов просто не нужен. Этих четырех черт ЕЯ достаточно для понимания сложности работ с ЕЯ. Охват всего ЕЯ пока немыслим. Попробуем взять часть ЕЯ, которой пользуются специалисты (все люди) в данной области знания. Такую часть ЕЯ будем именовать ЯПП. Во-первых, каждому специалисту достаточен такой язык, поскольку он решает свои проблемы по своей специальности. Во-вторых, такое ограничение приемлемо в любой Интеллсист. Наконец, в третьих, использование ЯПП постепенно приближает нас к ЕЯ и составляет существенный шаг в открытии доступа к ВМ для любого пользователя. Основные принципы, характеризующие ЯПП по сравнению с ЕЯ, можно сформулировать так: Определение понятий ЕЯ помещается в памяти человека или находится в контексте большого объема (включая книги библиотеки), а определение понятия ЯПП помещается в памяти ВМ (в лексиконе) или помещается в тексте малого объема (в описании данного знания, передаваемого ВМ). Контекст можно определить формально так. Контекст - это часть текста, в котором помещено определение понятия и его использование. Контекст ЕЯ охватывает данный текст и еще ряд текстов, не доступных в данный момент для изучения контекста. Контекст каждого понятия ЯПП должен помещаться в памяти машины таким образом, чтобы программы осуществляли идентификацию каждого понятия, заданным в текстах терминами. Для создания таких контекстов формируется лексикон. Практически это означает, что вместе со знаниями (с БЗ) ВМ передается лексикон, содержащий определения каждого понятия. Избыточного текста в ЕЯ не существует. Кажущийся избыточным текст передает эмоции человека, его состояние и умение, что обеспечивает передачу некоторого смысла. В ЯПП могут использоваться избыточные слова и тексты для передачи эмоциональной информации. Избыточные слова и тексты не создают контекста и могут не рассматриваться при анализе текстов ЯПП. Конечно, это утверждение верно в том случае, если лексикон не содержит в своем составе избыточных слов. По-видимому, если система учитывает избыточные слова, то это есть программная система (или Интеллсист), которая воспринимает и изучает, например эмоции человека. В информатике при формировании нового языка поступают в соответствии со следующими основными шагами: Первый шаг - наложение ограничений на ЕЯ по указанным четырем чертам. Второй шаг - расширение ограниченного ЕЯ формализованными языками и ФЯ. Третий шаг - ориентирование языка на данную профессию для передачи знаний этой профессии, а не любых знаний (вообще). Эти три шага позволяют построить новые классы языков ЯПП. Такие языки не рассматривают некоторые грамматические категории, которые выражают эмоции как средства передачи интимных знаний (хотя для некоторых профессий такие средства могут использоваться для передачи ВМ знаний). Слово «проза» ограничивает нас от применения, например стихотворных форм для передачи знаний в задании для ВМ (хотя и они могут использоваться некоторыми профессиями для передачи знаний). Рассмотрим указанные три шага формирования ЯПП, а также некоторые принципы, характеризующие ЯПП. Относительно первого шага. Языки, используемые специалистами данной профессии, уже имеют ограничения, как по составу словаря, так и по грамматической форме построения текстов. Действительно, воспользуемся тем обстоятельством, что люди одной и той же профессии для точного понимания смысла профессиональной деятельности используют ЯПП. Использование слов других профессий в данной профессии приводит к формированию языка новой профессии, рождаемого на стыке двух профессий. Определение каждого понятия введено в память ВМ либо непосредственно через словарь (лексикон), либо оно дано в ограниченном контексте. Синонимы используются широко с таким ограничением: каждый синоним имеет одно фиксированное значение, определяемое ведущим понятием. Число используемых грамматических категорий ограничено десятками, они чаще всего не совпадают с грамматическими категориями ЕЯ. Относительно второго шага. Подключение ФЯ и/или формализованного языка является естественным шагом в каждой профессии. Формализация знаний в любой форме присуща каждой профессии, она отражается и в используемом языке. Формализация языка профессии - один из методов процесса абстракции. Наконец, относительно третьего шага. Язык профессии отражается в лексиконе (словаре терминов), в грамматическом строе фраз ЯПП и при определении единственного значения каждого синонима. Все сказанное определяет смысл ЯПП. Этим проблемам будет отведено место далее. Мы выбираем вариант формулировки языка по СеГ русского языка (или любого другого ЕЯ). СеГ является основой для построения ЯПП, который является средством для внешнего представления знаний специалистов данной профессии при вводе их в память ВМ для обработки «старого» и выработки нового знания. Для описания свойств ЯПП будем использовать концепции понятия, термина и слова. Каждое понятие имеет свое определение, оно изображается некоторым термином, состоящим из слов, лексем и знаков (в самом общем смысле понимания этого понятия). Слово- это последовательность букв и цифр, некоторое число или выделенный символ (в ФЯ такие конструкции именуются лексемами). Любое знание можно представить на ЯПП (может быть за исключением графического знания). В соответствии с определением понятия для изображения знания необходимо формировать утверждения, представляющие факты, правила получения новых фактов и т.п. Концепций понятия, термина и слова для построения утверждений и описания фактов вполне достаточно. Главные преимущества естественным образом вытекают из сказанного о ЯПП. Применение ЯПП не связано с использованием руководств по Интеллсист. Зачем изучать руководящий материал, если ВМ понимает родной язык специалиста. ЯПП обеспечивает автоматический контроль над правильностью использования слов и знаков, что не характерно для ЕЯ. Интеллсист обеспечивает автоматизм выявления недостающего знания и поиска ошибок. Грамматика ЕЯ характеризуется сотнями категорий (простой подсчет показывает, что имеется более 250 грамматических категорий в русском языке). Грамматика ЯПП характеризуется десятками категорий (это часть определения ЯПП, лексикона и всех вспомогательных данных). Следовательно, по сравнению с ЕЯ при анализе текстов ЯПП можно игнорировать значительное число форм, поддерживающих «ненужные» для ЯПП категории. Среди грамматических категорий ЯПП могут быть категории, почти совпадающие с грамматическими категориями ЕЯ, например синонимы. Эмоциональная окраска фраз в ЕЯ, передающая знания, может быть уточнена с помощью вопросно-ответной системы. Не все знания, передаваемые эмоционально, могут помещаться в данном тексте. Вопросы, формируемые ВМ (а точнее Интеллсист), требуют от пользователя простого ответа типа «да» и «нет». Интеллсист может проявить настойчивость и сформулировать несколько вопросов. Ответы на вопросы Интеллсист или инструментария Интеллсист произведут уточнение исходного текста, учтут знания, передаваемые эмоциями. Избыточные слова ЕЯ, если они не передают знания, игнорируются при вводе фраз в память ВМ, они отсутствуют в лексиконе и, следовательно, не входят в ЯПП. Избыточные слова в ЯПП не изменяют знания и игнорируются. Избыточные слова передают знания, но они (знания) не относятся к данному предмету исследования. Именно поэтому игнорирование таких терминов допустимо, несмотря на то, что в другом ЯПП они будут играть существенную роль. Определение понятия должно находиться в памяти ВМ (или в доступном для Интеллсист месте), а совокупность определений (вместе с терминами) должна составлять лексикон предметной и проблемной областей знаний в данной профессии. Это требование предполагает разделы лексикона: стандартная, профессиональная, меняющаяся и пополняемая части. Каждое понятие определяется в лексиконе. Определение понятия должно находиться в БЗ, что несколько уменьшает контекст данного понятия. Термин, обозначающий понятие, может характеризоваться базами слов без учета грамматических категорий изменяемости этих слов. База слова понимается в обобщенном смысле: зафиксированная часть слова или все слово, обозначающие понятия и не учитывающие категории их изменчивости. База и конец слова - новые грамматические категории, относящиеся к грамматике ЯПП. Кратко определим ЯПП так: ЯПП - это часть ЕЯ, используемая в данной профессии и использующая фиксированный (но расширяемый) лексикон, содержащий определения терминов, и формализованные языки или ФЯ как часть определения языка. Более точное определение дано выше в форме объяснения и сопоставления с ЕЯ. К преимуществам ЯПП следует отнести такие факторы, которые сформулированы более четко и полнее (чем ранее) в перечислении, данном ниже. 1.Поскольку лексикон ЯПП задается заведомо, легко реализовать синтаксический контроль над правильностью синтаксического представления знаний в этом лексиконе. Так реализуется автоматическая отладка текстов. Лексикон задается при первичном формировании знаний в памяти ВМ. 2. ЯПП поддержан ФЯ (языком Лейбниц), что также обеспечивает автоматизацию синтаксической и семантической отладки текстов знаний. Поддержка подкрепляется тем обстоятельством, что для текстов знаний подключается транслятор ЯПП на ФЯ, который контролирует тексты автоматическими средствами. 3. Для специалиста, работающего в данных предметной и проблемной областях, ЯПП является естественным профессиональным языком с возможными включениями формализованных или ФЯ его специальности. Это обеспечивает упрощение специалисту в общении его с ВМ по элементам знания при наполнении базы знаниями. 4. При выполнении условий предыдущих пунктов создается ситуация общения специалиста с ВМ без участия знаниеведа. Это обстоятельство обеспечивает отторжение разработок знаниеведа для пользователя Интеллсист. Роль отторжения велика. Интересна, например, проблема секретности знаний или их индивидуализация. 5. Освоение любой Интеллсист должно обходиться без емких руководств. Для использования Интеллсист должно быть достаточно самой системы, которая общается с пользователем на его ЯПП. Обучение должно предусматривать исключение из практики применения Интеллсист пособий и руководств, особенно в тот момент, когда идет производственная работа (как с играми на ВМ). 6.Система составления и использования лексикона предусматривает возможность пополнения его новыми терминами в процессе эксплуатации самой Интеллсист для решения данного задания. Развитие ЯПП является естественной основой для любой науки. 7.Настройка Интеллсист проходит стадии: набор текстов знания, прогон текстов для выборки и формирования лексикона, прогон знаний при вводе его в БЗ, контрольный ввод знаний в базу. ЯПП обеспечивает параллельную работу с лексиконом и знаниями, что продуктивно может использоваться для формирования самого знания. Перечисленные выше преимущества по существу не оправдывают процедуру выделения ЯПП из ЕЯ лингвистом или знаниеведом. Они лишь показывают на удовлетворение запросов пользователя, который желает вести общение с ВМ в его профессиональном лексиконе, и заинтересован в быстром решении своих задач. Написание сценария предшествует разработке программ. 1.6. Языки сценариев Особое место в информатике занимает проблема организации общения в системе человек-ВМ. Это объясняется высокой динамичностью самого общения, непрерывным поворотом событий и естественным распределением по времени и месту. Так можно перечислить главные отличительные черты технического общения от литературного, в котором только эмоциональная окраска и перемещения действующих лиц варьируются динамически, а сценарий зафиксирован или частично модифицирован режиссером. Далее везде будем иметь в виду технический сценарий, в состав которого могут входить и литературные сценарии. Основными компонентами диалога являются: - состав «действующих лиц» (пользователи, системы, машины), - содержание диалога (ввод-вывод, помощь пользователю, автоматическое управление диалогом, красота общения, возможность расширения), - режимы работы (среднее время ожидания, повторяемость и способы подачи реплик), - средства выполнения (окна, клавиатура, мышь), - средства подсказок (раздел справки, плавающий вопрос, динамика показа), - сервис диалоговой работы, который минимизирует время диалога, - схема диалога (последовательность основных пунктов). Эти компоненты являются одновременно структурой диалога и общими требованиями к способам построения диалоговой подсистемы или сценария работ в системе. Требования к диалоговой системе следует выделить особо. К ним относятся: - гибкость: учет разнообразных запросов и потребностей пользователя, - ясность: возможность построения модели системы, предсказуемость, - простота: терпимость к ошибкам пользователя, доброжелательность, - обучаемость: подсказка и предложения по решению вопросов, - надежность: ошибки пользователя не влияют на качество работы системы, - естественность: приближенность к естественному общению человека с человеком, - системность и ограничения должны быть минимальными. Каждый диалог реализуется по сценарию. Театральный сценарий отличается от технического сценария, который можно определить так: технический сценарий - это род технической литературы, композиционный строй которой подчинен закономерностям взаимодействия в системе человек-ВМ. Относительно простое определение дополним сведениями о сценариях, которые доопределят понятие. Сценарий - это набросок формы взаимодействия человека и ВМ, определяющий цель, тему, предмет и объект, средства изображения и выражения перечисленного. Сценарий - это основа коллективного труда следующих специализаций: технического режиссера, оператора за клавиатурой, художника, искусствоведа, литературоведа, комментатора, программиста, системного программиста, знаниеведа, алгоритмиста, организатора, менеджера, руководителя коллектива действующих лиц. Сценарий - это словесно-логический портрет событий в системе человек-ВМ или эквивалент будущего взаимодействия в системе, непосредственно протекающий процесс в реальном времени человека. Совокупность таких определений достаточен для понимания понятия сценарий. Каждый сценарий разрабатывается программистом и представляется на формализованном языке для автоматического построения программы работы пользователя. Язык сценариев должен обеспечить зрелищность взаимодействия пользователя с ВМ. Все должно способствовать продуктивному решению проблем пользователя. К языку сценариев также предъявляются требования. Язык сценариев должен обеспечить: 1. Подвижность «действующих лиц», в качестве которых выступают образы запросов, процессов обработки знания или логических выводов ответа, самих ответов на запросы и коллизии, которые появляются в процессе ввода знаний или запросов, реакций Интеллсист на ошибки пользователя. 2. Разнообразие при работе пользователя и Интеллсист состоит в вариациях работы программ Интеллсист, в которые заложены по возможности все подразумеваемые действия пользователя. 3. Привлекательность работы с Интеллсист и теплоту общения с пользователем, который называется обычно дружественным интерфейсом. 4. Незаметное обучение пользователя (стиль подсказок вне руководств) таким образом, чтобы помощь приходила по первому требованию пользователя или вынуждено в случаях коллизий. 5. Необходимость жизненности идеи, темы, сюжета. Идея велика: как без помощи программиста решить сложную задачу, а может быть разрешить новую проблему. Тема подсказывается самим пользователем, она продиктована запросами. Сюжет в большинстве случаев диктуется от Интеллсист по схеме пользователя, а он определяется темой. 6. Достоверность материала, содержимого стандартной части БЗ и БЗ, ориентированной на специалиста, которым является сам пользователь, имеющий только полученное им образование и изучивший научиться работу за клавиатурой или мышью. Основными элементами сценария являются следующие атрибуты: 1. Эпизод - это отрывок или фрагмент с известной самостоятельностью идеи, темы и сюжета (например набор данных). 2. Фабула - это сочетание фактов, основа-душа, выражение сюжета, который представляется как система событий, составляющая содержание пьесы в рамках данного сценария. 3. Пролог - это вступление в работу с Интеллсист или другой системой. 4. Завязка - это начало конфликта, исходный эпизод, момент (если хотите - проблема или запрос пользователя). 5. Развязка - это исход события, разрешение «противоречия», заложенного в проблему или запрос пользователя. 6. Кульминация - это высшая точка напряжения взаимодействия человека с ВМ (ожидание ошибки или ответа на запрос). 7. Эпилог - это заключительное обращение к пользователю, получившему ответ на запрос (написание итогового документа). Как видно аналогия с литературным сценарием имеется почти полная. Особенностью технического сценария является наличие в нем альтернативных реплик системы в зависимости от получающейся реакции на действия пользователя. Разработка сценария является упорной и изобретательной работой автора. Она связана с выбором характерных сторон, черт, реплик будущего сценария и с учетом всех возможных поворотов событий. Остальные компоненты достраиваются обычно пользователем в процессе реализации сценария. Причем необходимо иметь в виду, что если что-то непонятно, то формируется вопрос системой для пользователя. Работа над сценарием должна предусматривать многие стороны взаимодействия человека и ВМ. Нужно иметь в виду, что участниками сцен являются пользователи, Интеллсист и терминал. Необходимо учитывать также: обстановку в БЗ и запросах, постановку цели и иерархию подцелей, - сюжетную заявку, либретто пьесы, фабулу, идею, тему, доступные выразительные средства, план по эпизодам, монтаж, план по объектам, точку зрения пользователя, ракурсы всех событий во взаимодействии, авторский текст, разбивку на акты и сцены, ведение сущности пьесы: пролога, завязки, кульминации, развязки и эпилога. Язык сценариев в форме наброска формально определен в [Красилов86а] как средства записи сценария. Там определены имена (пользователей и терминалов) и логические и арифметические выражения для выполнения ветвления диалога, организация полиэкранного общения и определение параметров общения, для тех же целей определены стандартные (часы, дата, пауза, остановка) и нестандартные функции и действия. Формально определен диалог как последовательность реакций пользователя или системы (реплики или операторы) на реплики друг друга. В языке определены также структуры актов и всего сценария. Язык сценариев назван языком Пьеса, определяющим множество сценариев розыгрыша взаимодействий пользователей и ВМ. В ИП и Интеллсист сценарий реализован внутри программ, а внешне проявляется через меню работ и подработ и реакций Интеллсист на запросы пользователя. Определены сценарий работы с инструментарием для ускорения выполнения только необходимых работ и сценарий работы Интеллсист для ускорения создания или запуска запросов, в частности анкет и шаблонов. Сценарий и его реализация полезны для организации работы «от одной кнопки». Использование клавиатуры должно осуществляться в рамках уже принятых традиций набора исходных параметров или данных, поскольку многие пользователя имеют некоторый или широкий опыт работы с программными системами. Например, использование функциональных клавиш клавиатуры в сценарии не должен содержательно отличаться от принятого сценария в практике работы на ВМ. Использование F1 связывается с вызовом подсказки, любой сценарий должен предусматривать этот факт. То же можно сказать об использовании стандартных клавиш и изображений (пиктограмм или рисунков). Кроме этого в инструментарии Интеллсист определены сценарии работы пользователя, если она имеет достаточно стандартную рутинную форму, и сценарии работы ассоциации Интеллсист, если при решении задачи необходимо обращение к нескольким Интеллсист, связанным ответами одних Интеллсист и запросами других. 1.7. Языки представления знаний о языках, метаязык Марков Если окунуться в языки кодирования, то можно указать некоторые общие принципы кодирования. Проще всего кодируется отображение типа терминальный алфавит на целые числа. Обычно используется начальный непрерывный отрезок натурального ряда с конечным числом (максимальным значением) 2**К-1. Кодирование составных имен осуществляется в две-три стадии. К примеру, слово произвольной длины (оно состоит из символов букв и цифр) помещается в таблицу, а ссылка на эту таблицу становится некоторым абстрактным символом, который вновь может быть закодирован целым числом. Совокупность слов и знаков вновь представляет собой «слово» произвольной длины (термин), которое (который) вносится в свою таблицу и тем самым приобретает ссылку - абстрактный символ некоторого свойства. Такая процедура может продолжаться далее. В языке кодирования предусматривается рекурсия определений - это важное обстоятельство в представлениях знаний. Рекурсивными являются определения значений и фраз (утверждений). Кодирование должно удовлетворять некоторым требованиям, они учитываются в языках представления знаний. К числу требований относится следующее: использование синонимов в ЯПП означает, что несколько терминов могут ссылаться на одну и ту же характеристику. Обратные ссылки отвергаются, оно лишь характерно для ЕЯ. В Интеллсист обратные ссылки определяются динамически для печати результатов по запросу пользователей, желающих увидеть результаты в синонимах. Конец слова должен храниться в словаре слов, поскольку он привязан к данному слову и не может тиражироваться в результате некоторого отображения. Это требование также относится к значениям и фразам. Для печати результатов в соответствии с СиГ необходимо вложить правила СиГ в программу печати. Конечно, в процессе построения алгоритмов программных систем может возникнуть необходимость формирования массивов другой природы, что также относится к проблеме кодирования. К примеру, хранение слов в словаре может использовать алгоритмы графового представления словаря [Красилов75а], каждое слово должно ссылаться на текст, предназначенный для пояснения понятия. Следовательно, каждое слово или термин должен иметь ссылку на этот текст, а сами тексты образуют массив-таблицу характеристик слова, термина, значения или фразы. Основной формой фиксации знаний любого сорта для человека являются фразы ЕЯ, если помнить, что фразы специалиста являются также фразами ЕЯ. Однако необходимо помнить, что фразы ЕЯ сложны для понимания машиной в силу сложности синтаксической грамматики ЕЯ. Поэтому принята следующая гипотеза: необходимо используется подмножество ЕЯ, которое обычно именуется ЯПП. Понятие ЯПП будет означать использование той части ЕЯ, которая будет представлена в памяти ВМ. Это не значит, что в памяти машины представлены отдельные фразы. Это значит, что в памяти машины будет представлен СеГ ЯПП. Обычно ЕЯ выражается в форме речи, текста (и картинок или рисунков). Эти формы общения людей устраивают всех и почти не зависят от специальности человека. Все виды знаний могут быть представлены средствами ЕЯ и символами клавиатуры. Не вызывает сомнения представление знаний гуманитарных наук описаниями. Также нет сомнения относительно представления знаний о смысле некоторого понятия или его определения. Сложнее всего представлять текстами некоторые математические тексты с формулами, например использующими специальные знаки. Даже можно представить себе использование ЕЯ для изображения алгоритмов и систем произвольного назначения. Данный перечень видов знаний дан для того, чтобы можно было задуматься над проблемами представления знаний и понять основную идею представления: один и тот же вид знаний может использоваться для представления всех других видов знаний (закон информатики). Заметим, что формулы из математики являются также текстами, если многоэтажность формул устранена путем представления в линию (строчку), а специальные математические знаки заменены словами или их наименованиями. Представление знаний всех видов необходимо для разрешения проблем эффективного функционирования системы человек-ВМ. Пока примем гипотезу о том, что ЕЯ является хорошим (подходящим) средством для фиксации знаний в памяти ВМ. Если фразы ЕЯ «разбавлены» словами профессионального лексикона (мы имеем дело с ЯПП), то такая часть ЕЯ будет приемлема для специалиста в качестве рабочего языка общения с Интеллсист. Все приведенные доводы в пользу применения ЕЯ подкрепляются следующим фундаментальным положением: УРОВЕНЬ ИЛИ СТЕПЕНЬ ИНТЕЛЛЕКТУАЛИЗАЦИИ ПРОГРАММЫ ВМ ПРЯМО ПРОПОРЦИОНАЛЬНЫ УРОВНЮ ИЛИ СТЕПЕНИ ОТТОРГАЕМОСТИ ПРОГРАММНОГО ПРОДУКТА ОТ РАЗРАБОТЧИКА ИЛИ ОТ СПЕЦИАЛИСТА ПО РАЗРАБОТКАМ. Это положение в равной степени относится и к СВТ и к алгоритмам. Чем выше уровень общения человека с ВМ, тем скорее система будет использована специалистом, специальность которого существенно отличается от специальности программиста. Имеется важная особенность в деле использования ЕЯ для представления знаний. Знания связаны с предметами, явлениями и процессами. Эти понятия будем связывать с понятием операнда. Операнд выделяет во фразе сущность понятия, относительно которой делается высказывание, содержащее что-либо до сих пор неизвестное. С этими сущностями связаны признаки, свойства, симптомы, операции, отношения или соотношения, которые уточняют знания о сущностях путем установления связи различных понятий (и их сущностей). Перечисленные понятия ассоциируются с операциями над сущностями. Таким образом, любую фразу можно рассматривать как «формулу», состоящую из операндов и операций. Знания по своему существу являются утверждениями логического типа. Можно считать, что знания изображаются логическими выражениями. Имеется еще одна особенность ЕЯ, которая отражается в профессиональной прозе. Она состоит в том, что предметы (их сущности) одной части ЕЯ может стать признаком в другой части. Естественно, что можно предположить и обратный эффект: признак может стать сущностью. В таких случаях используется контекст. Понятие контекста важно и будет использоваться в дальнейшем. Конечно, контекст должен быть известен заранее и учтен при программировании на ЕЯ или ФЯ. Математик или информатик, исследующий ИЛ, должен владеть ФЯ математики и информатики. ФЯ математики аналогичен языку, используемому в математической логике правильно построенных формул. Информатический ФЯ является частью языка Лейбниц. Фрагменты этого языка рассматриваются позже. Для описания грамматик формальных языков используется язык, который является метаязыком по отношению к описываемому языку. Метаязык - это совокупность правил, по которым строится грамматика некоторого языка. Рассмотрим правила метаязыка Марков, он же именуется языком Марков, если рассматривается самостоятельно. В качестве примера определения метаязыка рассмотрим весь язык Марков, с помощью которого определяется ЯПП. Язык Марков является средством и примером описания языковых знаний. Исходным средством описания языка является порождающая или распознающая грамматики. В дополнении к этому вводится форма предложения, которая задает формальный внешний вид поименованной в заглавии раздела грамматической конструкции. Внешний вид порождающих грамматик представляется по правилам Бэкуса-Наура. Обычно используются методы сокращения форм записи грамматики методом Бэкуса-Наура. К примеру, использование символа «|» для указания альтернативных выражений правил сократит приведенную грамматику языка Марков до 24 правил. Вот как можно представить правила для определения нетерминального символа или метапонятия "слово": слово::= буква | слово буква | слово цифра. В языке Марков изменены некоторые правила по сравнению с формализмом Бэкуса-Наура. Это сделано для обеспечения большей наглядности и читаемости. Улучшения осуществляются средствами, которые описаны в самом ФЯ Марков. Метапеременные записываются без угловых скобок и подчеркивания, но с запятой для разделения метапеременных. Использованы термины «список», «перечень» и «последовательность» (аналог перечислений через символ запятой, через символ точки с запятой и фигурных скобок в некотором формализме Бэкуса-Наура). При формальном описании грамматик используются сокращения следующего рода. Метапонятия (понятия, отдельные символы или грамматические категории) представляются словом или последовательностью слов. Если перед метапонятием помещено слово «список», то понятие повторяется от одного до некоторого числа раз с разделением объектных понятий запятыми. Если перед понятием помещено слово «перечень», то объектное понятие повторяется от одного до некоторого числа раз с разделением понятий точкой с запятой. Если перед понятием помещено слово «последовательность», то объектное понятие повторяется от одного до некоторого числа раз без разделения понятий какимлибо символом. В языке Марков использован термин «возможно» (аналог квадратных скобок в некотором формализме Бэкуса-Наура). Если перед понятием помещено слово «возможно», то понятие либо не употребляется, либо употребляется только один раз. При использовании указанных слов метапонятие может иметь измененные окончания в словах. Терминальный символ указывается своим наименованием, которому предшествует слово «символ», если они уже используются в записи правил, или графическим знаком. К метасимволам относятся следующие обозначения. Вместо ограничителя ::= (по определению есть) используется символ двоеточия (для отделения определяемого метапонятия и его определения), символ точки (для указания конца правила), символ запятой (для указания операции соединения или катенации) и альтернативные определения (правила) разделяются символом точки с запятой. Все эти символы используются в записях грамматических правил. Если в формуле необходимо использовать двоеточие, то оно заменяется выделенным словом «двоеточие». Кроме этого, используется три начертания шрифта: обычный шрифт - для записи метапеременных, жирный шрифт - для автоматически набираемого средствами меню текстов, курсив - для набираемых пользователем текстов. Если в текстах порождающих правил использованы различные шрифты, то отделение метапонятий и понятий запятой не обязательно. При создании записи правил языка не учитывается вариация окончаний слов. Предполагается, что изменение окончаний в имени понятий не приводит к другим понятиям. Сказанное является по существу семантикой языка Марков, поэтому комментарии к правилам излишни. Язык Марков определяет форму порождающих контекстно-свободных грамматик (КС-грамматик), и язык Марков определяется также порождающей КС-грамматикой, язык Марков - это порождающая грамматика, которая определяется формально с помощью порождающей грамматики: порождающая грамматика: алфавит терминальных символов , алфавит нетерминальных символов , последовательность правил , аксиома. алфавит терминальных символов: список терминальных символов. терминальный символ: слово символ , наименование ; знак. алфавит нетерминальных символов: список метапонятий. аксиома: нетерминальный символ. знак: символ алфавита ASCII. слово символ: с , и , м , в , о , л. наименование: метапонятие. Порождающая грамматика - это четверка: конечный алфавит терминальных символов, конечный алфавит нетерминальных символов, конечный набор формул подстановок и нетерминальный (целевой) символ - аксиома. Система предложений (утверждений), данная ниже определяет правила построения формул подстановок (правил порождения). Далее формально определяется понятие правила. правило: метапонятие , символ двоеточия , правая часть , знак границы правила. метапонятие: последовательность слов. понятие: метапонятие ; терминальный символ. слово: буква; слово , буква ; слово , цифра. правая часть: перечень возможных предложений. предложение: список понятий. знак границы правила: символ точки. последовательность понятий: понятие ; последовательность понятий , понятие. возможное понятие: пусто ; понятие. список понятий: понятие ; список понятий , символ запятой , понятие. перечень понятий: понятие; перечень понятий , символ точки с запятой , понятие Терминальные символы задаются своими наименованиями и кодами, которые определяются формально с помощью порождающей грамматики. Если код знака не задан, то подразумевается код этого знака в алфавите ASCII. таблица кодов терминальных символов: перечень соответствий. соответствие: терминальный символ , символ равно , код. код: целое число ; код целого числа. код целого числа: # целое число. целое число: последовательность цифр. Код целого числа задается знаком # и целым числом десятичной системы счисления. Символы букв и цифр не представлены в грамматике в силу их понятности и известности. В качестве примера формального определения можно рассмотреть сам метаязык или язык Марков, предназначенный для синтаксического определения формы порождающей грамматики и его ввода в память Интеллсист для реализации генерации тестов проверки транслятора ФЯ или ЯПП. Синтаксис определяет КС-грамматику. Данное формальное определение является примером самоопределения грамматики с формальной точки зрения. Имя Марков языку дано в силу того обстоятельства, что именно Марковым впервые были исследованы формулы подстановки при построении теории нормальных алгоритмов [Марков84]. Порождающая грамматика применяется для генерации текстов определяемого языка. При практическом использовании языка Марков будут использованы дополнительные правила упрощения записи правил. Например, в правилах опускается символ запятой, если соединяются метапонятия с терминальными символами, которые представлены графически или выделены полужирным шрифтом. Каждый нетерминальный символ является термином для определения понятия, у которого значениями являются слова, порождаемые грамматикой для этого нетерминального символа. Каждое метапонятие является именем подъязыка определяемого языка. В формальном определении языка Марков отсутствуют средства указания аксиомы, поэтому инициализация генератора должна сопровождаться метапонятием, являющимся аксиомой. В частности это может быть основное метапонятие, которое именует весь язык. Весь язык Марков определяет набор метапонятий, термины которых находятся слева от двоеточия в каждом правиле, число метапонятий (без одного) определяет количество подъязыков. Конечно, необходимо учитывать, что для одного термина написано несколько правил. Поэтому для определения понятия необходимо использовать всю совокупность правил, у которых левая часть имеет один и тот же термин. В заключение сделаем некоторые замечания. Аналогично можно построить грамматику для контекстно-зависимого языка. Отличие контекстно-зависимой грамматики от КС-грамматики состоит в том, что левая часть правил может состоять из списка предложений из метапонятий и терминальных символов. Символ пробела используется при построении предложений правил грамматики для выделения слов. Однако формализм не предусматривает использование символа пробела. Это сделано для экономии записи грамматики. Считается, что слова автоматически разделяются пробелами для упрощения процедуры распознавания слов. В одном месте символ пробела используется для отделения слов (разделитель слов), в других местах символ пробела не обязателен, хотя по тексту он проставлен во многих местах. Сказанное можно отнести к прагматике языка Марков. Терминальный символ может быть задан в правилах знаком. В текстах правил используется одно допущение: в списках понятий некоторые запятые опускаются. Если символ представлен знаком или словами из полужирного шрифта, то он не отделяется от слова запятой, как было сказано выше. В качестве знаков не могут использоваться символы двоеточия, запятой, точки и точки с запятой и точки, они несут синтаксическую нагрузку в правилах. Если заданы значения отдельных слов [терминов] и правила синтаксиса, то определено значение всей фразы. Б. Рассел Глава 2. Семантическая грамматика русского языка Два стимула послужили основанием для создания новой грамматики русского языка. Первый стимул - это упорная работа над созданием Интеллсист, призванной обеспечить любого пользователя ВМ средствами решения его задач и проблем на основе своих знаний без привлечения программистов и формальных способов их представления. Второй стимул - публикация пяти лекций известного в информатике языковеда Н. Хомского [Хомский96] о сопоставлении и согласовании языка и знаний. Первый стимул явился как необходимость рассмотрения ЕЯ в качестве средства общения человека с ВМ, а второй - вызвал критическое настроение от способов понимания смысла любых текстов, передающих знания. В этой главе рассматривается формальное определение ЯПП как части ЕЯ с помощью грамматики языка Лейбниц, который предназначен для внутреннего (в Интеллсист) представления знаний и для точного понимания языковой сущности общения в системе человек-ВМ. Утверждается, что существующая грамматика русского языка является по существу синтаксической. Она рассматривает правила построения слов, словосочетаний, предложений и текстов. Грамматика базируется примерно на двухтрех сотнях грамматических категорий. Различие ЕЯ одной национальности и ЕЯ другой заключается не только в различных способах представления слов и алфавитов, но и базируется на разных категориях грамматик. Эти факторы усложняют процессы перевода с одного ЕЯ на другой. В частности, от этого же усложняется перевод с данного ЕЯ на ФЯ, а перевод крайне необходим при передаче смысла знаний для Интеллсист. Синтаксическая грамматика ЕЯ не определяет смысл всех конструкций и категорий этого языка для Интеллсист (эта задача и не входила в цели описания грамматики). Имеются некоторые исключения для такого общего мнения. К примеру, в синтаксической грамматике поясняется смысл косвенной речи, некоторых знаков пунктуации и собственных имен. Несколько больше смысла можно обнаружить в части русского языка, применяемой для передачи профессиональных знаний. ВМ обычно используется для решения задач, вопросов или проблем, формулировка которых содержит смысл, который не может быть понят на основе грамматических правил. Определение смысла возможно только при построении СеГ ЕЯ. СеГ состоит из правил вычисления смысла текстов. Будем рассматривать только русский язык, хотя все формальные определения его СеГ легко перекладываются на любой другой ЕЯ. Эти обстоятельства позволяют предполагать, что СеГ является универсальной и промежуточной (посреднической), она может использоваться для построения программ перевода с одного (в том числе и формального) языка на другой (в том числе формальный) язык. Именно в связи с этим укрепляется мысль о существовании универсальной грамматики, которая явилась бы промежуточным языком в алгоритмах перевода с языка на язык. Введение в сущность СеГ Истоки воззрений на смысл текстов находятся в трудах Лейбница [Лейбниц], который исследовал начала символического языка как универсального средства анализа научного мышления, а также в трудах Фреге [Фреге77], который определил элементарную единицу знания. Клини в своей монографии [Клини73] показал примеры сопоставления ЕЯ и символического языка. Длительная работа со средствами написания программ и развития интеллекта ВМ позволили автору вплотную заняться изучением сущности грамматики русского языка и поиском алгоритмов понимания ЕЯ. Ограничимся рассмотрением только русского языка, в предположении, что для других ЕЯ сохраняется общий конструктивный подход для формирования алгоритмов понимания текстов. В лекциях Хомского делается попытка поиска смысла текста с помощью средств, данных в классической грамматике, - СиГ ЕЯ. Этот подход оправдывается только частично. Рассматривается альтернативный подход к методам определения смысла текстов. Современная литература по проблемам анализа ЕЯ и применения его в ИИ отражает поиск продуктивного сопоставления грамматик ЕЯ и ФЯ [Логический98 и др.]. Внимательный анализ литературы в сопоставлении с идеями настоящего раздела приводит к следующему. Можно указать несколько ошибок в анализах ЕЯ с точки зрения нового понимания СеГ в выборе путей сближения ЕЯ и логических языков. Первая ошибка состоит в игнорировании принятого в информатике правила о том, что каждое понятие должно быть описано, а описание понятия должно передаваться ВМ для использования его при анализе текстов. Человек понимает текст только в том случае, когда ему известны (может быть и на интуитивном уровне) смыслы всех понятий, используемых в тексте. Известное высказывание Рассела из Анализе разума, приведенное в эпиграфе, подтверждает сказанное. Другой взгляд таков: только термины могут иметь смысл или значения, которые определяют смысл фразы. Вторая ошибка состоит в переносе из СиГ идеи о том, что основным носителем смысла является только слово. Опять можно применить указанный выше другой взгляд. Конечно, слово может быть термином, тогда оно будет носителем смысла. Третья ошибка состоит в том, что смысл фразы постоянен относительно данной БЗ и не зависит от контекста ее использования или применения. Смысл фразы: «Жители Адаманских островов едят на обед рагу из гиппопотама» может быть определенным. Если имеются затруднения при понимании этого высказывания, то эту фразу можно задать в качестве запроса для Интеллсист, тогда она в зависимости от наполнения БЗ будет выводить различные ответы: «да», «нет» или «не знаю». Так же эту фразу понимает и человек. Четвертая ошибка состоит в том, что части речи грамматики ЕЯ привязываются прочно к смыслу понятий, упуская при этом важное обстоятельство фраза, составленная из слов различных частей речи, может составлять структурное понятие, имеющее смысл, отличный от соединения смыслов отдельных слов. Конечно основная беда исследований ЕЯ, представленных в [Логический98], состоит в том, что каждый подход к формализации ЕЯ (обсуждается формализация английского языка) состоит в поиске правил, охватывающих весь ЕЯ. Всезнайкой быть невозможно, поэтому ЯПП ориентирован на конкретную область знаний (для анализируемой литературы это пятая ошибка). Это вполне оправдано, поскольку задачи решаются специалистами конкретной области, их не интересует другая область знаний, может быть кроме смежных областей. История формирования СеГ начиналась в связи с появлением первых электронных ВМ. ВМ перерабатывает (главным образом) двоичные коды. Запись программ в двоичных кодах сразу же не была воспринята, но помогла счастливая случайность простого перевода двоичного кода в восьмеричный и обратный перевод. Эти возможности помогли программистам некоторое время успешному освоению основ программирования. Вскоре появился буквенно-цифровой код, имена ячеек памяти ВМ стало возможным именовать словами, а коды операций - их естественным обозначением. Такой способ записи программ стали именовать автокодом. Было обнаружено, что трансляция формул осуществляется на основе простых алгоритмов. После этого родилось средство записи программ на языке формульный автокод (ФРАК). Со временем стали появляться многочисленные ФЯ некоторого уровня абстракции. В настоящее время актуально использование ЕЯ на основе символов, экранных пиктограмм или картинок. При этом история развития средств общения с ВМ наложила серьезный отпечаток на программирование, каждый из способов представления программ работает и будет работать в программистской деятельности. Тексты на ЕЯ после ввода в память ВМ подвергаются переводу на внутреннее представление, которое должно максимально сохранять смысл исходного текста (как главное требование к любому преобразованию текстов или цепочек символов). Проблема перевода с одного ЕЯ (исходный язык) на другой (объектный язык) состоит в построении текста на объектном языке таким образом, чтобы смысл исходного текста сохранился максимально. Едва ли можно утверждать «сохранился полностью», об этом необходим отдельный разговор. С точки зрения требования сохранения смысла все рассматриваемые процедуры должны их выполнять. По-видимому, алгоритм понимания текстов пригоден для программ перевода с одного ЕЯ на другой. При переходе к внутреннему представлению текстов возникает реальная и разрешимая проблема построения универсальной грамматики и универсального языка, который именуется Лейбниц. Универсальная грамматика не пригодна для всеобщего использования человеком, она выполняет специальные функции построения Интеллсист или программ перевода (она доступна только программистам для построения таких программ). На основе алгоритмов понимания ЕЯ представляется возможным построение новой грамматики русского языка, которая по составу возможных или допустимых ею текстов не отличается от классической грамматики, но которую понимает и человек, и ВМ. Классическая грамматика русского языка [Шанский81, Современный81] нами именуется синтаксической грамматикой или СиГ, поскольку она дает правила построения слов, словосочетаний и предложений, новая грамматика – семантической грамматикой или СеГ, поскольку она дает правила «вычисления смысла» всего текста. Именно СеГ русского языка является предметом нашего рассмотрения. Язык, порождаемый СеГ, называется ЯПП. Профессиональность ЯПП определяется составом лексикона. Язык поэзии можно и надо изучать с точки зрения передачи знания, но он очень уж активно использует принцип умолчания и небрежно (хотя и красиво) варьирует термины и синонимы. Научить ВМ пониманию ЕЯ - это главная цель построения СеГ. Другая цель состоит в обучении пользователя общению с ВМ, которому сообщены знания в данных предметных и проблемных областях. Указанные цели являются взаимодополняющими и не противоречат ни современной грамматике русского языка, ни запросам обладателя ВМ, не знающего средств написания программ. СиГ содержит набор грамматических категорий (или понятий самой грамматики) и набор правил построения слов и фраз (главным образом из слов и знаков препинания). Исходными лексемами, как начальными кирпичиками текстов, являются слова. По традиции в словах ищется смысл. Все толковые словари составлены по принципу «слово - смысл слова». Эта традиция и является камнем преткновения для нашего рассмотрения. Толковые словари обобщают каждое слово по многим областям их применения, но не по всем (!). Иногда слову сопоставляется несколько смыслов в зависимости от контекста, что препятствует пониманию смысла в заданном и составленном тексте. Кроме этого, наш критический взгляд направлен на ограниченные возможности СиГ, которые отсутствуют в практических текстах. Например, имеются лексемы, которые не рассматривает СиГ ЕЯ. Построение СеГ связано с расширением возможностей грамматики ЕЯ. Заметим, что запись фраз по правилам СеГ должна удовлетворять правилам СиГ, но не наоборот. Имеющиеся попытки поиска смысла текстов с помощью СиГ, как это, например, реализует Хомский на основе графов зависимостей слов, будут обречены. Только СеГ обеспечит передачу знаний ВМ и, в конечном счете, человеку. Это следует из того факта, что правила СеГ позволяют определить смысл текста. Так или иначе, лекции Хомского позволили четче обрисовать границы СеГ и перспективу ее развития. Действительно, проблема сопоставления язык-знание является сложной, поэтому необходимо сделать крутой поворот от привычных правил понимания текстов к необычным правилам, но только на первый взгляд. Информатика проникла во все отрасли знания [Красилов90д]. Но она доступна пока только программистам, а с их помощью (с помощью готовых программ) другим пользователям ВМ, для которых подготовлена программа. Программы стоят дорого. Необходимо обеспечить каждого пользователя средствами самому решать свои задачи с помощью ВМ без написания программ (реализация идеи бесплатной программы). Для этого необходимо построить инструментарий Интеллсист с учетом языка данной группы пользователей, на основе их знания, которые должны быть переданы для Интеллсист на (естественном для нее) ЯПП. Фразы языка должны передавать полностью смысл всего знания и соответствовать СеГ. Рассмотрим последовательно следующие вопросы, частные ответы на которые можно найти в ссылках на литературу: 1. Что явилось основанием для создания СеГ и что такое знание с точки зрения поиска смысла, а также, какова связь этого понятия с формализацией [Красилов90в, 90е, 00а, т.4]. Понятие знание известно всем интуитивно, но при описании СеГ необходимо придерживаться некоторого формализма в определении знания для обеспечения точной передачи его для Интеллсист. Известные по литературе основания и формализм ориентированы на СиГ, что приводит авторов к неразрешимым проблемам при получении результатов сопоставления ЕЯ и ФЯ, при анализе ЕЯ и при реализации Интеллсист, базирующихся на ЕЯ в представлениях знаний. 2. Что такое язык и грамматика при формализации СеГ? Важный вопрос связан с сохранением непротиворечивости двух грамматик СиГ и СеГ, они должны быть полностью согласованы. Смысл любого текста должен определяться независимо от использования той или иной грамматики, если выполнены условия или правила СеГ. 3. Грамматику любого языка характеризуют фундаментальные исходные понятия или грамматические категории. От того, какие понятия или категории определяют СеГ, определяется ее назначение. Какие же это категории? 4. Как представлять знания с помощью СеГ и какова критика недостаточности СиГ? Главное средство для достижения указанных целей появляется после сопоставления слова (и других элементов текста) и знания. СеГ предназначена для указания правил такого сопоставления. Определение элементов текста является скорее техническим делом. А вот определение знания требует некоторого усилия для преодоления классического понимания этого термина. При этом надо учитывать, что определение знания обычно строилось для человека, умеющего интуитивно осмысливать каждое понятие. Теперь определение знания надо построить так, чтобы возникло понимание определения для ВМ. Заметим, что после формирования «нового» определения знания, станет ясным, что оно годится и для человека, иначе он не приобретет возможность общения с ВМ. 5. Центральными вопросами являются: каков механизм познания и что такое экология знания? Эти вопросы обычно исследуются слабо в надежде на интуитивные представления о них у человека. Если полагают, что любой текст имеет значение (или смысл) истины, то важно найти противоречия в БЗ или в предлагаемом тексте. 6. Как использовать знания в Интеллсист для решения практически важных вопросов, задач или проблем [Красилов91б, 91в, 94а] и как построить процесс логического вывода решения? Какова роль СеГ в этом процессе? 7. Последний вопрос является итоговым, он связан с языковой системой и универсальной грамматикой, которая должна явиться буфером между двумя различными ЕЯ. Кратко и описательно рассмотрим язык Лейбниц, который скрыт от пользователя и является внутренним языком Интеллсист. Как использовать систему ЕЯ и ФЯ для формирования нового знания? Следует заметить, что не на голом месте строится СеГ. Она понималась человеком интуитивно. Развитие СеГ шло от методов программирования, от развития средств общения с любой ВМ. С появлением первой ВМ были осмыслены понятия адреса и содержимого ячейки памяти. Понятие адреса постепенно развилось в понятие идентификатора, затем в понятие имени и, наконец, достигло своего апогея - появилось в информатике понятие термина. Понятие содержимого ячейки памяти развивалось чисто технически. Постепенно рассматривалось содержимое одного двоичного разряда, байта - 8 двоичных разряда, слова - 16 или 32 двоичных разряда, набора слов, последовательности наборов слов и т.д. Смысл содержимого выявлялся только при выводе на печать или экран последовательностей преобразованных нулей и единиц, только тогда человек мог увидеть внешнее представление содержимого. Аналогично этому рассуждают об адресе и содержимом «ячеек памяти» человека. Адресом в письме и речи является термин. Только внешнее представление (через речь, письмо, действия) можно понять содержимое «ячеек памяти» человека. Трудно рассчитывать на полное описание СеГ в объеме одной главы. Полное описание СеГ занимает 400-500 страниц текста. Рассмотрим только ее основы, формальное изложение и сформулируем основные посылки, тезисы и канву грамматики для реализации Интеллсист, для стимулирования критики лингвистов и для поиска путей развития исходных оснований. Некоторые практические пояснения излагаемого формализма языка можно найти в томе 4. Чтение изложения СеГ или фрагментов грамматики языка Лейбниц не требует специального знания, как и чтение грамматики ЕЯ. При знакомстве с главой может показаться, что СеГ учит программированию, так для описания грамматики используется формализм. Здесь снимаются всякие подозрения на этот счет, поскольку Интеллсист воспринимает задания, представленные в СеГ, которые не являются конкретными программами, но рассуждениями. С другой стороны СеГ учит логическому программированию так, как этому учат везде, включая лекции или доклады. Желающие программисты могут использовать покомандное описание алгоритмов в СеГ для построения программ на своем профессиональном языке. Процедурные языки - языки приказов - обеспечивают пошаговое описание алгоритмов, как это делается при описании алгоритмов, но при этом не используются ФЯ. Кроме изложения основ СеГ необходимо иметь в виду проблемы использования грамматики. В силу «привычек», которые сложились в информатике, необходимы незначительные уступки ФЯ, что образует своего рода проблему СеГ. Чрезвычайно важна проблема связи СеГ и СиГ для «увеличения» понимания смысла текстов и для корректной печати результатов работы Интеллсист. Конечно, технически решаются проблемы размеров контекста, полного словаря и быстродействия ВМ. Особняком стоят проблемы неоднозначности понятий, умолчания части текста, ударений в словах, избыточности слов и текстов, а иногда понятий. Эти вопросы будут рассмотрены в разделе 4.7. 2.1. Проблемы информатики смысла Понятие смысла до сих пор точно не определено. Поэтому наименование раздела содержит слово «проблемы». Вполне возможно, что понятие смысла известно каждому на интуитивном уровне. Для Интеллсист, работающей на представлениях знаний, этого недостаточно. Необходимо точное определение понятия смысла, позволяющее ВМ вычислять смысл текстов. Именно с этой целью определяется СеГ. 2.1.1. Основания для новой грамматики. В истории развития средств и методов программирования все время наблюдалась естественная тенденция постепенного приближения к средствам ЕЯ при вводе любых знаний в память ВМ. Наступил критический момент, который вызван экспоненциальным ростом числа пользователей ВМ и сохранением числа программистов для обслуживания пользователей. Для Интеллсист необходимы средства передачи знаний в том виде, в каком с ними встречается человек. Это значит, что ВМ необходимо передавать информацию (сообщения) в форме текстов, таблиц, массивов, структур и формул. При этом различные объекты именуются не только словами, но и комбинациями слов, цифр, графических символов. Пока не затрагивается проблема передачи знаний графическими средствами: графиком, чертежом, рисунком или реальной картинкой. Информатика изображений еще ждет своего исследования и выработки средств передачи, анализа и синтеза смысла таких объектов. Информатика изображений сейчас реализуется с помощью текстов, таблиц, массивов, структур и формул. Первым основанием для СеГ явилась необходимость передачи ВМ сообщений в том виде, в котором их воспринимает человек, на его ЕЯ или той части ЕЯ, которую он использует в своей практической деятельности. Это основание подтверждается накопленным опытом работы с ВМ и связано с разнообразием решаемых с их помощью задач. На базе одних и тех же знаний человек решает многочисленные задачи, которые не укладываются в технологическую схему построения программ и современного использования ВМ. Но каждое требование пользователя вынуждает программиста составлять новые программы или непрерывно улучшать имеющиеся программы. Знание должно определять всю совокупность возможных постановок и решений задач в пределах рассмотренной совокупности знаний. Отсюда следует, что грамматика ЕЯ должна обслужить любые области знаний. СиГ не обеспечивает пользователя необходимыми средствами. Вторым основанием является проблема формирования языковых основ для представления знаний. При этом главным критерием формирования языков является минимальный отход от средств передачи знаний на ЕЯ и обеспечение минимальных потерь знаний. Методом разрешения проблемы явилось сопоставление ЕЯ и ФЯ после формирования основных принципов понимания или осмысления текстов ЕЯ. Третье основание зиждется на постепенном освоении понятия смысл текстов, таблиц, массивов, структур и формул. Если данная ниже СеГ русского языка позволяет раскрывать смысл таких объектов, то проблема передачи знаний для Интеллсист будет более чем на половину разрешена. Другая половина проблемы находится в области использования осмысленных знаний для получения ответов на запросы пользователя. Центральная идея построения СеГ заключена в том, что тексты и другие объекты составляются из известных Интеллсист понятий. Их последовательность и призвана передавать знания и запросы для Интеллсист. Четвертым основанием является пополнение грамматики русского языка понятиями, которые используются не только в профессиональных специальных языках, но и повсеместно, но они совершенно отсутствуют в СиГ. Эти пополнения являются положительной частичной критикой современной грамматики. Грамотность текстов состоит, в частности, из грамотного написания объектов, которые используются всеми и независимо от специальности автора текста, но которые никак не прописаны в СиГ. Пятое основание лежит в правильности и точности понимания смысла текстов, представленных на ЕЯ. Смысл текста составляется из смысла понятий, фактов, утверждений о фактах и правил построения новых фактов из известных фактов. Смысл текста по существу определяет знание. Интуиция человека работает всегда, это помогает ему часто обходиться без определения слов или фраз. В таких ситуациях человек использует обширный контекст (головы или библиотеки). Интуиция у Интеллсист может появиться только при сообщении ей лексикона понятий, может быть на первых порах даже и не определенных. Шестым основанием является способ раскрытия структуры любого понятия. Имеющиеся терминологические словари или словари русского языка дают только весьма общее представление и варианты представлений о понятиях, поименованными словами или сочетаниями слов. Такая информация не конкретна и обычно доопределяется контекстом использования понятия. Проблема анализа контекста важна и будет решена при существенном увеличении объемов памяти ВМ. Структура любого понятия должна представляться полно и только возможно частично неопределенно так, что вводимый в Интеллсист текст вместе с ее библиотеками должен быть достаточным контекстом для доопределения понятия. И седьмое основание. Критика текстов ЕЯ сводится к тому, что некоторые примерные фразы объявляются недопустимыми в силу авторского непонимания некоторых понятий. Авторы критических замечаний приводят традиционные примеры правильного и ошибочного написания предложений, а некоторые говорят о невозможности фразы. К цитируемым примерам относятся предложения: правильно «Я наблюдал как прощаются друзья.» и неправильно - «Я слышал прощание.». Вторая фраза является правильной в СеГ, если выполнены ее правила и условия применения фразы. Если условно говорить о синтаксическом и семантическом русском языке, порождаемых соответствующими грамматиками, то синтаксический русский язык шире по составу фраз семантического русского языка в силу использования в нем большого контекста для понимания слов. Но сопоставление языков по передаваемому для Интеллсист смыслу приводит к обратному соотношению объемов языков. Речь (а также предметное или графическое общение) является самым широким по объему языком, поскольку смысл речи передается с учетом обстановки и с нарушением правил СиГ русского языка. Здесь нет касательства с такими формами общения. Еще о примере: автору стихотворения прощается второе предложение, и оно становится осмысленным и правильным. Пример поэтической фразы весьма очевиден. Но такие предложения можно наблюдать в текстах многих других профессий. Подобная критика нами не воспринимается, а используется при создании СеГ. Обоснованием для СеГ, в частности, является ИЛ, излагаемая в томе 5 и реализованная в программах Интеллсист (см. том 7), фундаментальные знания и системные библиотеки словарей. Цель рассмотрения СеГ состоит в указании средств, с помощью которых можно увидеть, почувствовать и передать смысл различных текстов. Создание и применение Интеллсист требует понимания смысла текстов, поскольку Интеллсист работает на основе знаний, получаемых от специалистов (от кухарки до академика). Знание можно получить только после осмысления текста. Важным обстоятельством является факт, что кроме словесных текстов знания передаются в виде чисел, символов, дат, таблиц, записей, функций и программ. СиГ не содержит правил построения таких объектов для передачи знаний. Поэтому каждая группа создателей программ для ВМ самостоятельно вводит свои грамматические правила, которые неизвестны другим пользователям даже той же специальности. Важно описать СеГ, поставляющую правила представления таких объектов. Только использование СеГ позволит применять Интеллсист каждому специалисту, формировать знания и запросы (вопросы, задачи, задания или проблемы), которые будут поняты и разрешены Интеллсист. 2.1.2. Основной тезис для построения СеГ. Основной тезис и основные аксиомы для построения СеГ представляются следующим образом. Исходный смысл содержится только в термине, который может быть составлен и из одного слова. Каждое слово не несет смысла, если оно не является термином. По правилам СеГ можно определить смысл каждой последовательности терминов (фразы), если не нарушены ее правила. Смысл всего текста состоит в том, чтобы быть истиной. Если текст имеет смысл лжи, то он содержит некоторое противоречие. Таково требование для каждого текста и требование Интеллсист к фразам, передающим знание ВМ. В процессе построения правил СеГ необходимо определить объекты (в частности, слова) и понятие о знании. Определение объектов является скорее техническим делом. А вот определение знания требует некоторого усилия для преодоления классического (или общеупотребительного) понимания этого термина. При этом надо учитывать, что определение знания обычно формировалось человеком для человека, умеющего интуитивно осмысливать или понимать каждое понятие. Теперь определение знания надо построить так, чтобы возникло понимание определения системой (можно пока воспринимать термин «понимание компьютером» или «понимание системой» в кавычках). Заметим, что после формирования «нового» определения знания, станет ясным, что оно годится и для человека, иначе он не приобретет возможность общения с ВМ. Итак, главная цель описания СеГ состоит в определении сущности алгоритма для понимания текстов расширенного русского языка по правилам этой грамматики. Другой язык может рассматриваться по аналогии с русским языком, для него также может быть построена СеГ на основе универсальной грамматики, внутреннего представления текстов в Интеллсист, на базе языка Лейбниц. В основе разрешения вопросов или проблем в деятельности человека лежат знания. Каждый факт, рассуждения о фактах или правила вывода новых фактов выражают знания. В общении между людьми знания выражаются на каком-либо ЕЯ. Для разрешения вопросов или проблем с помощью ВМ необходимо иметь средства для представления знаний. Сегодня в большинстве случаев применение информатики связано с представлением знания программами, пиктограммами, таблицами, диалоговыми фразами или рисунками. Эти средства имеют определенный уровень интеллектуальности и, конечно же, используются в Интеллсист. Для обучения ВМ чаще всего используются процедурные представления, имеющие вполне определенные недостатки (см. т.7), компенсируемые многократным автоматизируемым составлением программ. Существуют формальные и специальные или формализованные языки представления знаний [Брябрин81, Восилюс80, Гришин82, Дюбуа90, Кирсанов82, Клещев82, Кондрашина89, Коэн75, Минский79, Осуга89, Предстинт80, Хельбиг80], которые должен знать пользователь помимо своего профессионального языка. Будем использовать ту часть ЕЯ, которая ориентирована на пользователя, являющегося специалистом в некоторой области знаний. Представление знаний в памяти Интеллсист требует понимания того, что знания, передаваемые текстами ЕЯ, разложимы на элементы, которыми может оперировать Интеллсист. Элементарным знанием является пара <имя понятия, смысл-значение>, представляющая простой факт. Имя изображается термином, а значение имеет двоякую форму представления: внутренняя форма, которую можно понять только при анализе кодов в ячейках памяти Интеллсист, и внешняя форма, которая выражается лексемами. В примере “погода холодная” термин погода - имя, а термин холодная - значение. Логическая связь или отношения (композиция) фактов образует простое знание - часть законченной мысли, представленная фразой. Внешнее представление простого знания выражается формулами, а внутреннее представляется альтернативами совместных элементарных знаний. Простое знание служит для представления некоторой законченной мысли. В примере “погода холодная и идет дождь” использованы два факта и логическая связка “и”. Логическая совокупность (композиция) простого знания, обычно представляемая набором предложений ЕЯ, называется абзацем, который выражает законченную мысль. Отдельная законченная (формулировкой) мысль называется прикладной аксиомой, в которой пользователь уверен, что она является истиной. Прикладная аксиома определяет некоторый предмет, его свойства, явление или действия с предметами. Совокупность прикладных аксиом определяет БЗ. При анализе всего введенного в память Интеллсист знания прикладная аксиома может войти в противоречие с ранее введенными аксиомами, тогда Интеллсист обнаружит факт противоречия, а пользователь решает, как выйти из такой ситуации. Важно автоматически обнаружить такие противоречия и локализовать. В БЗ для Интеллсист заведомо введены фундаментальные знания (они обычно содержатся в книгах и учебниках школы или вуза), а затем вводятся конкретные знания, содержащиеся в запросах на разрешение вопросов или проблем. Запросы пользователь формирует сам, включая дополнительные знания, касающиеся данной проблемы. В БЗ накапливаются две вещи: понятия, в которых пользователь выражает профессиональные базовые знания, и прикладные аксиомы, логически связывающие понятия. Эти два главных атрибута представления знаний рассматриваются ниже подробно. Понимание текстов связано с определением терминов. Вообще же понимать текст необходимо для передачи не только знания, но и команд или вопросов (задач, проблем или заданий). Понимание команд также считается необходимым для общения с ВМ, как и понимание рассудительных текстов. А понимание вопросов относится к пониманию запросов к знаниям. Вопросы могут передавать знания и задание на логическое извлечение знания из хранилища - из БЗ. Большая часть терминов определяется в БЗ. Пользователь в своем запросе может ввести свои термины для решения частных задач. Имеется и некоторая сложность понимания СеГ, которая вызвана тем обстоятельством, что в ней вводятся понятия, которые широко используются специалистами различных направлений. Однако вводимые понятия обобщены так, что они являются легко познаваемыми. Лексическое расширение СеГ по сравнению с СиГ будет общепонятным. А введение новых грамматических категорий постепенно поясняется в Информатике или в инструментарии Интеллсист. 2.1.3. Отладка знаний и язык. Поиск противоречий между элементами знания содержится в проблеме отладки БЗ (одна из сторон экологии знания), которая состоит в определении локальной или глобальной непротиворечивости, независимости и полноты конкретных знаний. Проблема отладки разрешается следующим образом. При последовательном вводе знаний по абзацам каждый раз решается логическое уравнение (пусть пока не смущает читателя этот термин, см. т.5), по его решению определяются свойства БЗ и вводимого дополнения к БЗ. По дополнению можно судить о непротиворечивости и/или независимости добавляемого знания. Не следует сбрасывать со счетов традиционные методы отладки знаний. К ним относятся: установление грамматической правильности фраз ЯПП и использования понятий, контроль над точным выполнением количественных ограничений, алгоритмическая, системная и концептуальная отладки. Все эти методы, как обычно, имеют программную реализацию и осуществляются автоматически. Смысловая отладка знания в Интеллсист по существу реализуются автоматически или с участием пользователя на этапе ввода знаний для внесения изменений в соответствии с СеГ. Отладка знаний именуется еще исследованием по экологии знаний [Красилов97б]. Экология знаний предполагает чистоту знаний. Знания могут быть засорены повторами или противоречиями. Повторы фактов или утверждений о фактах легко устраняются, они никогда не изменят базового или пользовательского знания. На них следует обращать внимание только для того, чтобы с какой-либо точки зрения охарактеризовать источник знания, что относится к области эмоциональных исследований, на повторы следует обращать внимание еще для того, чтобы рассмотреть знания с позиции «не содержатся ли в текстах описки или даже ошибки». Искажение хорошего текста может породить повторение, которое будет обязательно проигнорировано в Интеллсист при использовании знаний. Конечно же, важнее проблема поиска противоречий. Интеллсист автоматически находит локальные или глобальные противоречия. Локальные противоречия возникают часто, они могут быть и полезными для «чистки» знания. Глобальные противоречия требуют существенного пересмотра знаний и принятия решений человеком относительно дополнительного или имеющегося знания. В полной мере к экологии знаний можно отнести проблему его полноты. Достаточно ли знаний ВМ для решения им заданий? Этот вопрос разрешается только после попытки решить задание. Если решение состоит из новых (или известных) фактов, то знание полно, иначе оно требует пополнения, поскольку решение содержит утверждения о фактах. Интеллсист подскажет, в какой части такое пополнение необходимо осуществить. Проблемы использования различных видов знания чрезвычайно важны. Они должны учитываться в языке знаний (в ЯПП). Уже упоминалось, что в современных ВМ используется алгоритмическое (процедурное) знание, обычно представленное программами. Кроме этого вида знаний имеются: лингвосемиотические знания (описательные, плохо формализуемые), семантические знания (или языковые, реализуемые через трансляторы ФЯ), концептуальные знания (понятийные, используемые в системах программирования вручную), фактографические знания (данные из базы, используемые через системы управления БД - СУБД), теоретические знания (или логические, используемые также вручную или через систему управления БЗ - СУБЗ) кибернетические знания (технологические, конструкторские или системные), которые учитываются (или не учитываются) в процессах разрешения организационных или конструкторских проблем. Из перечисления видов знаний (подробнее см. т.1) видно, что многие виды знаний не используются в программировании автоматически и чаще всего только косвенно учитываются при построении алгоритмов. СеГ (как и СиГ) предусматривает использование всех видов знаний. Сложность использования всех видов знания вызвана тем, что применение процедур ручного перехода от представлений различных видов знания к алгоритмическому виду приводит к потере части знания. Например, программисту было задано решить задачу об устойчивости двух фирм. Имеется некоторое понимание у программиста о методе решения этой задачи, поэтому он проявляет инициативу и решает задачу подходящим образом, не задумываясь над огромными материалами о деятельности фирм. Другой подход состоит в том, чтобы для Интеллсист сообщить все знания всех видов и сформулировать ему задание в пользовательской постановке. Кроме этого надо заметить, что знания могут быть представлены не только символами, но и графически или предметно. Знаниями, представленными графически, сегодня занимаются плотно и успешно. Хуже обстоит дело с предметным знанием. Еще слабы программы, анализирующие видеозаписи, они не извлекают в полной мере все знания, которые заложены в картинках. Можно утверждать, что имеется огромная перспектива использования знаний, представленных графически или предметно после освоения знаний, представленных символами. Языки знаний определяют способ хранения знаний в памяти ВМ. Построенная СУБЗ для Интеллсист отличается от СУБД объектами и способами представления взаимосвязь фактов в отличие от способов представления таблиц. Конечно, СУБД используется для хранения данных первичных или новых фактов, но не для представлений знания. Так как операции со знаниями существенно отличаются от операций над таблицами, СУБД не может использоваться для этого эффективно. СУБЗ Интеллсист обеспечивает быстродействие логического вывода с реальной скоростью 500 - 5000 операций логического вывода в секунду (в зависимости от мощности ВМ), поскольку система учитывает связи фактов, а СУБД учитывает сами факты, имеющие только косвенные связи. СУБД может обеспечить быстродействие Интеллсист в 10 100 операций в секунду (под операцией здесь понимается один шаг логического вывода решения логического уравнения или применение одного правила СеГ). Правила СеГ диктуют такой подход к хранению знаний. Для передачи знаний в память Интеллсист необходимо определить понятие смысла текстов, чтобы передавать осмысленные знания. Смысл в толковых словарях определяется несколькими вариантами: смысл - это внутреннее содержание, значение чего-либо, постигаемое разумом; смысл - это цель, разумное основание; смысл - это то же, что и разум (понять смысл чего-либо; слово в прямом и переносном смысле; в этом нет смысла; жизнь получила новый смысл; иметь здравый смысл; в подлинном значении слова). Действительно, разностороннее определение понятия смысла важно, поскольку человек находится в различных сферах деятельности и требует разного толкования этого понятия. По нашей традиции дадим 7 определений понятия смысл. 2.1.4. Источники проблемы смысла. Источники проблемы смысла находятся в следующем. До сих пор понятие смысла в большинстве случаев находилось вне грамматики ЕЯ. Попытки поиска смысла высказываний из применяемых правил СиГ приводили к небольшому успеху [Хомский96]. Почти единственным способом вычисления смысла на основе СиГ является построения разнообразных графов связей слов или словосочетаний. Поэтому существующие грамматики ЕЯ называются синтаксическими. Конечно, грамотно составленный текст точнее передает смысл высказывания. Наша главная задача состоит в построении Интеллсист, понимающей ЕЯ. Для решения задачи необходимо иметь четкое представление о способах передачи для Интеллсист смысла текстов. Есть убежденность в том, что (как уже говорилось) синтаксическая грамматика не может полностью обеспечить нас средствами передачи смысла высказываний. Рассматривая тексты можно найти ошибки только благодаря тому, что понимаем смысл текста. Без понимания текста весьма сложно найти ошибки, в особенности логические. Иногда в бессмысленном тексте можно обнаружить ошибку. Например, перед «что» должна стоять запятая. Но что же это значит? Смысл вопроса понятен, хотя перед словом «что» нет запятой. Для определения смысла высказывания необходим новый подход к построению грамматики ЕЯ. Имеющуюся грамматику будем квалифицировать как синтаксическую, а предлагаемую грамматику будем называть семантической. Итак, фундаментальная проблема информатики смысла заключена в поиске способа понимания смысла любого текста, построенного по правилам СиГ. На тексты ЕЯ будут накладываться некоторые ограничения. Проблемы смысла текстов на ЕЯ решались и решаются различными методами. Сошлемся лишь на исторические публикации [Бектаев74, Бидер76, Богодист74, Рубашкин89, Сильдмяэ80 и Фреге77, а также Хомский96]. Что роднит все современные исследования смысла текстов? Главная методическая характеристика понимания смысла авторами сводится к применению СиГ для определения смысла. Но ведь она дает правила образования фраз и ее частей (слов). Действительно, определенная комбинация слов (понимаемый термин или граф связи) позволяет построить картину смысла. Такой методике можно возразить. Во-первых, та же комбинация слов в другом контексте или в другой области знаний имеет почти или совсем другой смысл, во-вторых, последовательность комбинаций слов теряет первоначальный смысл, и она не определяет смысл всего текста. Необходим другой подход для определения смысла текстов. С имеющимися представлениями о смысле тексты знаний нельзя передать для Интеллсист. Что является основополагающим в методе разрешения проблем информатики относительно смысла текста? Будем исходить из положения, что каждый текст является средством передачи известного или нового знания. Второе положение состоит в том, что каждый текст имеет одну из двух ипостасей: он является истинным или ложным высказыванием (и третьего не дано) или он является командой для выполнения. (И третьего не дано.) В связи с этим понимание структуры знания лежит в основе построения информатики смысла. Зерном структуры знания является элементарное знание, которое обычно квалифицируется как факт. Например, «ему 17 лет» - факт, который отражает характеристику некоторого существа. Производными от фактов являются утверждения о фактах или правила построения новых фактов. Утверждения и правила сыграют главную роль в методе понимания смысла текста. Из таких положений и зерен строится всякое понимания смысла знания, передаваемого текстом. Следующий шаг в изучении структуры знания состоит в анализе простого знания, построенного из фактов. Простое знание обычно представляет собой композицию элементарного знания и отношений между фактами - утверждения о фактах. Простое знание имеет смысл, поскольку каждый факт имеет смысл и результаты отношений также имеет смысл, вполне определенный по правилам СеГ. Простое знание - это часть текста, которая здесь именуется абзацем. Абзац может состоять из одного предложения, поэтому простое знание можно передать одним предложением. К примеру, «ему 17 лет, а ей 16 лет». Особое положение в представлении знания имеют тексты, содержащие команды. Любой текст из команд также может пониматься как структура из элементарного знания - отдельно взятая команда и из простого знания - последовательность команд. Необходимо иметь в виду, что выполненная команда порождает истину, а невыполненная - ложь (и третьего не дано). С командными языками редко имеют дело (исключая программистов, руководителей или военнослужащих). Для языка профессиональной прозы нет существенных различий в указанных двух ипостасях. Смесь двух ипостасей допускается в диалоге людей и в диалоге человек-ВМ. Сложное знание (или знание вообще) представляется последовательностью простых знаний (абзацев или череды команд). Каждый полный текст - это сложное знание, являющееся истинным или ложным. Конечно, истинное знание по традиции считается полезным, а ложное знание требует пересмотра исходных фактов или отношений фактов для исправления полученной ситуации (квалификации или отладки знания). Не исключается из рассмотрения сложное ложное знание, которым практически не занимаются. Но теоретическое значение ложного знания велико. Если изучение ложного знания представляет интерес, то все факты и отношения фактов, имеющих истинное значение, необходимо снабдить отрицанием для того, чтобы Интеллсист могла переработать такое знание и вывести новые ложные факты. В основном Интеллсист исследует только истинное знание, поскольку в нее заложены соответствующие алгоритмы. Знание, полученное человеком или Интеллсист из элементарного, простого или сложного знания, представляет смысл того или иного высказывания, получаемого по правилам СеГ. Таково самое общее определение смысла. Это определение скорее является человеческим, а не машинным. Нам необходимо понимание, которое пригодно для переработки знания на ВМ. Для этого необходимо разрешить проблему смысла, которая именуется как проблема формализации знания (или смысла). Вот тут каждый может сталкиваться с основной проблемой информатики смысла. К этому надо добавить, что не до конца ясны понятия интеллект, интеллектуальный или интеллектуализация. Может быть поведение, подобное поведению человека, называют интеллектуальным? Может быть интеллектуальность - это предотвращение экспоненциального роста времени поиска необходимых сведений? Можно сомневаться в том, что создание модели мозга приведет нас к пониманию интеллекта. Модель мозга - это основной объект моделирования, медицины и психологии. На наш взгляд к пониманию этих понятий приведет анализ этапов формализации знания. Кратко рассматриваемая ниже последовательность этапов лежит в основе ИП. Именно эти этапы легли в основу создания средств и ИИС и собственно Интеллсист. 2.1.5. Процесс формализации знаний. Итак, подведем также предварительные (так как необходимы еще обоснования) итоги рассмотрения процесса формализации знания путем перечисления опорных действий над знаниями. Именно на основе СеГ строятся алгоритмы понимания (осмысления со стороны ВМ) текстов. Семь обобщающих пункта итожат рассмотрение проблемы формализации с позиций освоения знаний для Интеллсист или технологии ИП. Процесс формализации изложен по шагам во введении к тому 4. Имеются отличия двух описаний процесса, которые состоят (здесь) в обобщенном описании процесса и в конкретном описании процедуры формализации (в томе 4). Повторы некоторых операций формализации здесь и там должны способствовать только запоминанию на основе правил сопоставления. 1. Процесс формализации начинается (первый этап) с построения словаря из слов, лексикона из терминов и других словарей. При неточном определении понятия величины или операции в лексиконе (соответственно предметной и проблемной областей знания) реализуется неточная формализация этого понятия. При постепенном доопределении понятия в процессе разрешения запроса автоматически осуществляется постепенная автоматическая формализация этих понятий величины или операции. Центральным местом всякой формализации является проблема определения понятия. Каждое понятие необходимо выделить и составить его характеристики или выявить его атрибуты (например, термин, определение, значение и др.). Каждому понятию сопоставляется структура и конкретные характеристики, им предписывается присущий им смысл - значение понятия. В этом состоит первый этап формализации. Почти все авторы уделяют внимание этому этапу формализации [Гришин82, Дюбуа82, Прад90, Клещев82, Кондрашина78, Минский87, Минский79, Осуга89, Предстинт80, Рубашкин80 и Ыйм80]. Наиболее сложной частью определений понятий является выбор или формирование структуры каждого понятия. По структуре понятия значительно проще решается задача выбора конкретных характеристик. Совокупность понятий классифицируется на понятия предметной области и понятия проблемной области. В предметной области рассматриваются терманды и множества их значений, в проблемной области - термации и множества их значений. 2. Второй этап формализации состоит в построении отношений понятий и формирование нового (возможно подразумеваемого) понятия, являющегося производным от исходных понятий. Композиция понятий может быть сколь угодно сложной, что зависит от сложности решаемых задач, разрешаемых вопросов или проблем. Композиции понятий выражаются фразами естественного (или искусственного, что не исключается) языка и содержательно представляют знания, несущие смысл, который передается друг другу или для Интеллсист. Отношения понятий - это факты, утверждения о фактах или правила формирования новых фактов. Проблема представления знаний или отношений считается решенной, если выбран ЯПП вместе с лексиконом. Отношения «складываются» в БЗ, которая служит основой разрешения всех запросов. 3. Третий этап является скорее техническим и состоит из ввода знаний для Интеллсист. При этом должна осуществляться формальная отладка знаний на точность использования СеГ. Здесь важным действием является процедура построения ответов на вопросы Интеллсист, связанными с частичным определением понятия. При этом должна осуществляться отладка знаний по восьми номинациям, свойственным всем системам обработки текстовой информации. Здесь главным элементом отладки является концептуальная отладка, реже используемая в программных системах. 4. Четвертый этап состоит в установлении правильности знаний. Этот процесс называется отладкой знания (или экологической проверкой чистоты знания). Знание, как в целом, так и в отдельных частях должно удовлетворять требованиям непротиворечивости, возможно независимости и полноты для построения окончательных ответов на запросы в контексте исследуемого знания. Для пользователя знаниями этот этап самый плодотворный. Дело в том, что любое знание, предоставленное пользователю для разрешения запросов, не содержит конкретного знания, используемого для решения его задач. Интеллсист должна автоматически определять фундаментальные свойства используемого знания. Процесс формализации продолжается при анализе вводимых знания или запроса в память Интеллсист, а также при грамматическом анализе их. При вводе неполного (или частично определенного) знания реализуется частичная формализация, а пополнение БЗ может привести к более точной формализации знания. Итак, этап состоит в установлении правильности знаний. Для пользователя знаниями этот этап самый плодотворный. Дело в том, что любое знание, предоставленное пользователю, не содержит конкретного знания, используемого для решения его задач. Интеллсист должна автоматически определять фундаментальные свойства используемого знания. 5. Пятый этап является логическим и состоит из автоматического построения ответов на запросы к знаниям для получения новых фактов, которые будут использованы при принятии жизненно важных решений. Логический вывод может оборваться из-за ошибок. Тогда участие человека необходимо. Запросы могут быть анкетными, шаблонными или произвольными. Интеллсист разрешает только такие запросы или композиции таких запросов. Этого практически достаточно для решения любых заданий, задач, вопросов или проблем. Основа пятого этапа - составление и отладка запроса. 6. Процесс формализации завершается (шестой этап) получением нового знания в результате выполнения пяти предыдущих этапов. Некоторые этапы могут опускаться, если использованы анкеты или шаблоны. При логическом выводе разрешения запроса получается новое знание, которое не содержалось в базе. Новое знание доопределяет и окончательно формализует исследуемые понятия, уточняемые в этом процессе. 7 Седьмой этап является организационным и состоит в построении технологии использования результатов из логического вывода ответа на запросы. Сюда можно отнести проблемы принятия решений человеком и документирование. Надо добавить, что авторов знаний, инструментария и Интеллсист всегда интересует критика достижений в области ИП. Седьмой этап необходим при статистических исследованиях, он состоит в собирании общих или статистических данных об использовании количественных атрибутов интеллектуальной деятельности. Авторов знаний, инструментария и Интеллсист всегда интересует критика достижений в области ИП. Седьмой этап необходим систематическим исследованиям, он состоит в собирании общих или статистических данных об использовании атрибутов интеллектуальной деятельности. По этим атрибутам можно определить сложность запроса и объемы словарей. В заключении отметим, что здесь по существу затронута проблема знания о знании, которая ставит вопросы о представлении форм образования самого знания. Проблема в равной мере относится и к командным языкам. Считаем, что главная проблема выражения связи языка и смысла поднята и указан путь ее разрешения. Остается техническая проблема формализации смысла текстов ЕЯ. 2.2. Знаки и лексемы Каждый ЕЯ использует для передачи знаний набор знаков. Русский язык использует два регистра букв кириллицы и (теперь довольно часто) два регистра букв латинского алфавита, набор знаков пунктуации, скобок и арабские цифры. Кроме этого, используются специальные знаки, которые вводятся в рассмотрение по мере необходимости. В текстах различных наук вводят специальные знаки. Надо помнить, что наша задача ставится так: обеспечить ввод знаний в память ВМ (или Интеллсист). Такое ограничение может быть снято при массовом внедрении средств автоматического сканирования текстов и распознавании знаков с высокой надежностью. Ограничение алфавита знаков вызвано возможностями ввода текстов с помощью клавиатуры. Знаков клавиатуры достаточно для представления всех знаков любой науки. Ручная замена отсутствующих на клавиатуре знаков на имена этих знаков разрешает, хотя и неэффективно, проблему представления любых знаков. Например, знак заменяется словом sqrt, знак - словами integr или интеграл, буквы , , , , , и т.п. - словами альфа, бета, каппа, дельта, эпсилон, гамма и т.п. Такие знаки и буквы изучаются даже в средней школе, но клавиатура ВМ их не содержит. Набор и ввод таких знаков возможен по отдельным таблицам символов. Поскольку их кодировка совпадает с кодировкой символов клавиатуры, то Интеллсист различить их не в состоянии. Терминальный алфавит СиГ русского языка, (как и любого другого языка) связан с алфавитом (ТАСиГ), включающим два регистра кириллицы, цифры и знаки препинания. Терминальный алфавит СеГ (ТАСеГ) расширен знаками, которые имеются на клавиатуре ВМ (см. Приложение 1). Расширение вызвано необходимостью формулировки языка для общения в системе человек-ВМ. Например, в грамматике русского языка не рассматриваются буквы латинского алфавита, знаки +, *, #, ^, & и др. Массовое обучение русскому языку не предусматривает изучение таких знаков, хотя это и трудно объяснить. В школьных курсах имеется химия, физика и математика, в которых используется расширенный алфавит. ТАСиГ меньше ТАСеГ по числу символов. Если в некоторой области знания терминальный алфавит недостаточен, то он может пополняться другими знаками, обозначенными словами или комбинацией знаков и слов. Клавиатура ВМ включает знаки стандарта ASCII (см. Приложение 1). Из стандарта следует, что СеГ включает два регистра букв двух алфавитов - русского и латинского. Оба алфавита существенны и никоим образом не перекрываются (как в ФЯ, например в Паскале). В алфавите символов имеются арабские цифры, дополненные буквами шестнадцатеричной системы счисления. Кроме знаков препинания СиГ используются знаки операций и др. Однако, следует сделать такие замечания: 1. Графически неразличимые буквы двух алфавитов могут привести к ошибкам и изменению смысла написанного и введенных в память сообщений. Обычно сноровка пользователя или подсказка Интеллсист приводит к обнаружению таких ошибок. 2. Некоторые знаки клавиатуры могут набираться и набираются цифрами, представляющими коды этих знаков, поэтому ими не пользуются для передачи знания в Интеллсист, они имеют почти полный смысл и используются в отчетах по работе. 3. Тексты можно набирать в любых известных алфавитах. Алфавит может быть подготовлен пользователем. Под лексемами понимаются слова, числа, строки в кавычках, знаки препинания и другие графические знаки. Из простых лексем в СеГ строятся сложные лексемы. Круг лексем СиГ ограничен словами и строками (прямая речь и условные наименования), сложные лексемы не строятся. К простым лексемам в СеГ относятся: слова для обозначения величин, имен, возможностей, операций, числа (расширенные числительные по разрядам), определяемые в СеГ, символы и строки, одна ссылка - пусто, константы для обозначения «нулей» и «единиц» (ложь и истина для логических высказываний, null для нулевого множества, unit для единичного множества, nil для нулевой ссылки или цепочки символов и void для нулевого действия). Лексемы имеют значение, поскольку они сами являются представлениями значений. Однородные лексемы, составленные из одного и того же алфавита символов, группируются в набор, который называется типом или множеством допустимых лексем для данного понятия. Сложные лексемы группируются из простых лексем, к ним относятся: строки - последовательности символов в кавычках, массивы - списки лексем одинаковой природы (одного и того же типа), записи - списки лексем любой природы (любого типа), таблицы - записи из столбцов и строчек, комплексные числа - пары двух чисел, даты - записи из чисел и точек или чисел и слова, время - записи из чисел и точек (или слов). Записи, таблицы, даты, время и др. употребляются часто для передачи значений некоторых фактов. Их учет обязателен в текстах, вводимых в Интеллсист. Они могут изображаться в широком диапазоне комбинаций символов и слов. Сложные лексемы также группируются в наборы, также называемые составными типами. Если ТАСеГ является строительным материалом для лексем, то лексемы являются строительным материалом для терминов и значений понятий. По своей сущности лексемы редко используются в качестве строительного материала для терминов. Они скорее предназначены для представления значений понятий, которые имеют смысл, выражаемый (текущими) значениями. Лексемы только внешне представляют смысл понятия, а внутреннее представление отражается в памяти Интеллсист кодами, в памяти человека - совокупным динамическим состоянием групп клеток мозга. Одна, две или несколько простых или сложных лексем могут обозначать термин или значение. В каждой области знания определяются свои термины и используются все или некоторые лексемы. Например, H2O в химии или ашдвао в литературе, F(X) в математике и физике, «Белый Дом» в политике, «1 января 2001 года» во многих текстах истории как термин. Можно возразить приведенным примерам, используя такое обстоятельство, что такие термины относятся к специальным наукам. Литературный язык или язык поэзии почти не использует такие термины. Однако эти языки должны передавать смысл и, следовательно, должны иметь средства для понимания их текстов. В соответствии с СеГ термины выделять необходимо, а изображение значений важно для представления фактов. Построение словаря терминов можно осуществить и для литературных текстов. Задача формирования словаря для литературы является сложной по емкости. Но если возникла необходимость в исследовании смысла литературных текстов на ВМ, такую задачу необходимо решать. Задачи автоматического осмысления литературных текстов возникают редко, поэтому и поставлена проблема построения ЯПП. Лексемы в СеГ определяются формально для точного их понимания ВМ. Формализм для построения лексем весьма прост, он фиксирует широко известные обозначения с вариацией форм. Например, правильная запись даты «30 января 1997» года может быть заменена записями 30.01.97, или 30.01.1997, или «тридцатое января одна тысяча девятьсот девяносто седьмого года». Такими же свойствами обладают и записи времени. Числа имеют привычный вид, исключение составляют представления очень больших или очень малых чисел. Логические значения - это по большей части два слова: ложь и истина. Строки - это произвольные последовательности символов, заключенная между кавычками. В СеГ рассматриваются агрегаты, которые представляются списками простых лексем, заключенными между скобок. Лексемы представляют собой имена значений (собственные имена - как расширение понятия собственных имен в СиГ) и служат для внешнего отражения внутреннего смысла некоторого понятия. Каждая лексема обладает сложной структурой, включающей атомарные термины (чаще всего выражаемые символами или словами), и подразделяется на операнды и операции. Высказанное правило понимания лексем является чисто условным, как иллюстрация СеГ. Лексемы используются для построения записей фактов и для вывода новых фактов из Интеллсист в качестве результатов логического вывода. Порядок рассмотрения лексем определяется перечнем типов данных. Лексемами для логических значений являются два слова: ложь и истина. Для этих лексем имеются соответствующие синонимы: false и true. Пользователем могут вводиться новые синонимы, например, типа «нет» и «да». Логические лексемы выражают диалектическую меру правильности высказываний, отсутствие или наличие фактов и др. Лексемы истинности составляются из модальных слов, выражающих меру истинности или меру близости ко лжи или истине. В качестве примера приведем перечислимое (ложь, возможно, истина). Первое слово перечисления (в общем случае термин) всегда имеет смысл лжи, последнее - истины, независимо от того каким словом (или термином) они обозначены. Близость ко лжи или истине выражается расстоянием других модальных слов от первого или последнего слов. Они используются для арифметических вычислений. Лексемы чисел достаточно полно описаны в томе 4, к ним относятся: короткие целые (синоним shortint), целые (синоним integer), длинные целые (синоним longint), байтовые (синоним byte), словные (синоним word), целые с шагом (пример: 0(2)24), целые в диапазоне (пример: -10..10), короткие вещественные (синоним single), вещественных (синоним real), длинные вещественные (синоним double), расширенные вещественные (синоним extended), фиксированные вещественные (синоним fixed), плавающие вещественные (синоним float). Числовые лексемы используются в арифметике чисел с применением тригонометрических, экспоненциальных и других функций. Эти лексемы применяются также в алгебре и теории множеств. Символьные лексемы - это тексты из любых символов, заключенные в кавычки, а сами кавычки в таких текстах представляются сдвоенными кавычками. Числовые лексемы могут представляться в системе счисления с основанием от двух до шестнадцати. Конечно, десятичная система счисления использует последовательности цифр, а остальные записи чисел должны сопровождаться указанием основания системы счисления. Помимо простых лексем можно использовать и структурные лексемы. Структурные лексемы комбинируются из простых лексем, они подразделяются на регулярные и составные. Регулярные структуры состоятся из простых однотипных лексем (строки из символов, векторы и матрицы), составные структуры состоят, вообще говоря, из разнотипных данных. К регулярным структурным лексемам относятся массивы (синоним array), для которых задаются индексы и тип значения компоненты массива. Такие лексемы являются значениями структурных величин. К регулярным структурным лексемам относятся строки (синоним string), которые образует строку из индексированных символов. Индекс символа изменяется от 1 до некоторого целого числа меньшего 256. Строки предназначены для передачи информации произвольной структуры, являющейся значением особого сорта. Смысл многих объектов могут передаваться строками. К структурным составным лексемам относится запись (синоним record), которая состоит из полей самых разнообразных типов лексем. Имя поля - это новый термин для понятия, являющегося атрибутом общего понятия - записи. Тип поля может определяться произвольно. Записи используются главным образом для передачи знания о сложных объектах (животное, строение и др.). Частным случаем записей является таблица (синоним table), которая определяется как запись, состоящая из колонок и строчек и обрабатываемая некоторой СУБД. К частному случаю записи относится дата (синоним date), которая состоит из полей дня (до 31 дня), месяца (12 названий) и года (от 1900 до 2100). Смысл даты очевиден. Также к частному случаю относится время (синоним time), которое является записью из полей: часы (от 0 до 24), минуты (от 0 до 60), секунды (от 0 до 60) и доли секунд (от 0 с шагом 0.02 до 1). Смысл времени также очевиден. Особым частным случаем структурных лексем являются комплексные числа (синоним compl), которые представляются в форме записи из двух полей Re вещественная часть и Im - мнимая часть комплексного числа. Формы представления дат (лексемы даты) отсутствуют в СиГ, в СеГ они введены и имеют привычный для пользователя вид. Например, даты 01 января 1996 года, 01.01.1996, 01/01/96 или 01.01.96 являются одинаковыми. Опасно использовать часть записи года, поскольку не указан век для данной даты. Интеллсист способна использовать часть года, например по алгоритму: если год меньше 50, то перед номером года приписывается 20 (2032), если год больше или равен 50, то перед номером года приписывается 19 (1932). Безусловно, этот алгоритм может привести к неверному пониманию года. Формы представления времени (лексемы времени) также отсутствуют в СиГ, поэтому в СеГ она вводится привычным методом. Например, время 23 часа 25 минуты 45.2 секунды = 23.25.45.2. Нужно иметь в виду, что Интеллсист воспринимает дискрет (разницу между двумя соседними моментами времени), равный 0.01 секунды. Более точное время необходимо выбирать из внутренних часов ВМ. Комплексные числа в математике представляются суммой действительной и мнимой частей. Эта форма применима и в СеГ как частный случай записи. Но кроме этого можно использовать форму, которая использует скобки для указания пары чисел действительной и мнимой частей. Например, [2.7, 3.5] = 2.7 + 3.5 i. Особый сорт лексем, который мало распространен в обычной жизни, а скорее является объектом фундаментальных наук, - это множество (синонимы набор или set). Множество - это собрание объектов одинакового типа, которые называются элементами множества. Множества бывают конечными (состоящими из конечного числа элементов), абстрактными (состоящими из неопределенных элементов) или бесконечными (счетными или континуальными). Для всех множеств имеются две лексемы, именующие пустое множество (null) и универсальное множество (unit), состоящее их всех мыслимых элементов. Лексемы, представляющие конечное множество, состоят из конечного списка лексем, заключенным в фигурные скобки. Элементами конечного множества являются лексемы одного и того же типа, формулы со значениями одинаковых типов и др., словом лексемы любого, но одного и того же типа. Лексемы, представляющие счетное множество с количеством элементов омега (синоним omega), состоят также из конечного списка лексем, но в отличие от конечного множества оно может расширяться по составу элементов. Лексемы, представляющие континуальное множество с количеством элементов алеф (синоним alef), также состоят из конечного списка лексем, но в отличие от конечного множества оно может расширяться по составу элементов. Лексемы абстрактного множества не существую, кроме двух - пустого и универсального множеств. В процессе разрешения запросов абстрактное множество может приобрести конкретную характеристику: стать конечным, счетным или континуальным. Лексемы под именем последовательности бывают двух сортов: символьные и понятийные. Файловые лексемы (синоним file) задаются строками, которые имеют смысл, заложенный в информацию о файле. Элемент файла - это лексема типа, определенного описанием файла. Специальный тип файловых лексем называется текстовой лексемой (синоним text). Существует только одна особая ссылочная (синоним ref) лексема пусто (синоним nil), другие ссылочные лексемы совпадают с целыми лексемами. Программные лексемы (синоним program) определяются в результате выполнения (истина) или невыполнения программы (ложь). Аналогично, процедурная лексема определяет (вообще говоря) пустое значение. В ЯПП процедурную лексему будем снабжать смыслом логической величины: она принимает значение ложь, если не выполнилась, иначе принимает значение истина. Функциональная лексема, как программная и процедурная лексемы, задается утверждениями или фразами. Такие лексемы могут показаться неожиданными. Надо принять на веру этот факт или вспомнить о приемах в программировании, которые связаны с пониманием подпрограмм как данные, с которыми можно обращаться также как с числами. Процедурный тип определяет выполнение заданной программы с или без параметров. Функциональный тип определяет значение некоторого типа. После вступительного пояснения базовых понятий СеГ, можно перейти к определению грамматики. Определение грамматики построено в математической лингвистике. Оно строится по шаблону в форме четверки, атрибутами которой являются: <терминальный алфавит, нетерминальный алфавит, правила построения текстов, нетерминальный символ>. Терминальный алфавит составляется из графических знаков конечной численности. В СиГ такой алфавит включает буквы, цифры и знаки препинания. В СеГ алфавит составляется из графических знаков, которые имеются на клавиатуре устройства ввода текстов. Нетерминальный «алфавит» составляется из терминов грамматических категорий или грамматических понятий (также конечной численности). Как уже упоминалось, число таких понятий в СиГ более 250, в СеГ несколько десятков (некоторые уже рассмотрены). Правила построения текстов даются описательно, они составляют инструкцию о записи правильных слов и фраз. Из числа терминов грамматических категорий выделяется один символ, который именует ЕЯ. Здесь рассматривается имя «русский язык». Точные определения всех конструкций ЯПП, включая лексемы, даны в ФЯ Лейбниц. 2.3. Слова, имена и термины Связь с предыдущим разделом весьма тесная. Слова, имена и составленные из них термины используются не только для формирования лексем, они выражают количественную сторону фактов, обозначают понятия и передают конкретный смысл фраз. В предыдущем разделе рассмотрены только контуры лексем, здесь им будет уделено место для более полной расшифровки смысла, который несут лексемы. Особое место в текстах занимают лексемы-слова. В СиГ слова состоят только из букв, в СеГ слова могут состоять из букв и цифр (см. H2O) и отделяются друг от друга пробелами. Слова должны начинаться с буквы и продолжаться буквой или цифрой. Еще одна особенность записи слов состоит в том, что прописные и строчные (или большие и малые) буквы не могут отождествляться. Слова-термины «Термин», «термин» и «теРмин» могут иметь различный смысл, если только они не являются синонимами друг друга. Таким образом, в СеГ осуществляется обобщение понятия слова по сравнению с СиГ. Все слова СиГ используются в СеГ, но не все слова СеГ могут быть поняты в СиГ. Слова (лучше всего сказать термины) входят в текст знаний (или запросов) не менее, чем дважды: первое вхождение определяющее, второе использующее. В определяющее вхождение слово входит как объект, состоящий из двух частей (конец слова может быть пустым): слово = база слова; слово = база слова , конец слова. База слова определяется специалистом (знаниеведом, лингвистом данной специальности или квалифицированным пользователем) в данной области, а не грамматикой ЕЯ. Конец слова может быть пустым, совпадать с окончанием в смысле грамматики ЕЯ, содержать суффиксы и окончания или часть окончания. Конец слова должен сохраняться в словаре из слов, чтобы правильно формировать слова для печати на экране или бумаге. Проблема использования фиксированного конца слова возникает и в случае выдачи осмысленных текстов (например, вопросов системы для пользователя), в которые включается данное слово. Обратный перевод (трансляция) ФЯ на ЯПП требует знания ЕЯ и его грамматики. Требуемый конец слова должен восстанавливаться по всему контексту использования слова, выдаваемого на печать. Такие грамматические категории как суффикс, корень, префикс или окончание в СеГ отсутствуют. Их наличие или отсутствие в слове дает возможность построения новых терминов или синонимов имеющихся терминов. Буквы служат для построения слов. Последовательность букв без пробелов называется словом, оно не несет никакого смысла за исключением специальных случаев, о которых будет сказано ниже. Можно привести пример исключения - это применение собственных имен. СеГ расширяет понятие слова в следующем определении: словом называется последовательность букв и цифр без пробелов, начинающаяся буквой и выделяемая пробелами или знаками, отличными от букв и цифр. Например, записи: слово, константа, величина являются словами в СеГ русского языка. Имена понятий в СеГ образуются из любых слов и знаков в форме произвольной последовательностей, которые могут состоять и из одного слова или одного знака. В этом можно усмотреть главное отличие СеГ по сравнению с СиГ. Уже отмечены особые сорта лексем, которые отсутствуют в СиГ. В связи с этим остановимся чуть подробнее на таких лексемах. Цифры (иногда изображаемые словами) предназначены для формирования чисел, которые в общем смысле являются «словами». В СиГ имеются числительные, представленные последовательностями слов. Тексты русского языка содержат числа, состоящие из последовательностей цифр или комбинаций таких чисел. Числа выражают смысл некоторых величин. Например, 1996 может выражать номер года. Числа используются более всего в математике, они образуются из цифр и знаков точки, плюса, минуса и латинских букв e или E. Определим понятие числа. Последовательности цифр без пробелов представляют целые числа. Две последовательности цифр (или два целых числа), разделенных точкой (без пробелов), представляют числа - рациональные дроби, вещественные числа или числа с фиксированной запятой (представленной точкой). Целое число или рациональная дробь вместе с порядком числа (без пробелов) представляют вещественные числа или числа с плавающей запятой (представленной точкой). Порядок числа записывается латинской буквой e (или E) и целым числом со знаком + (плюс), - (минус) или без знака. Все числа выделяются пробелами или знаками, отличными от знаков, используемых при построении чисел. Например, 7, 32, 100 целые числа, 2e+2 (200), 33E-10, 2.7e0 - вещественные числа. Числа имеют смысл, соответствующий его значению. Они используются для представления фактов. Каждое число можно представить словами из раздела числительных. В описаниях грамматики ЕЯ не рассматриваются конструкции чисел. СеГ должна восполнить этот пробел. Остальные знаки используются в различных ситуациях, от которых зависит смысл знака. Например, знак + обычно понимается как операция сложения, * операция умножения, / - операция деления. Некоторые знаки предназначены для выделения утверждений (. » ; ! ?), другие для построения имени понятия. Часть знаков используются для построения собственных имен для выделения смысла фактов. Любой знак может вводиться в память Интеллсист как некоторое значение факта. Поскольку Интеллсист должна формировать новые факты, которые в представлениях используют те же знаки клавиатуры, можно строить осмысленные понятия из любых знаков. Каждый символ-знак может вводиться в память с помощью кавычек. Например, Интеллсист понимает записи «+», «d», «2» как значения для построения смысла фактов, вводимых в Интеллсист или получаемых в результате логического вывода новых фактов. Знаки, буквы и цифры в кавычках называются символами. Сам пользователь может ввести в БЗ константы. Но некоторые константы определены заведомо. К ним относятся, в частности, нули и единицы различных типов, они приведены ниже в таблице: Пункт 1 2 3 4 5 6 7 8 9 10 Сорт константы Числовой нуль Числовая единица Логический нуль Логическая единица Символьный нуль Строковый нуль Нуль-множество Единица-множество Нуль-ссылка Процедурный нуль Обозначение Синоним 0 1 ложь истина «» «» null unit nil void нуль единица false true пусто пусто пусто единица нуль пусто Конечно, вводимые пользователем константы могут быть, например, символьными - «с», истинностными - (~ложь0~, ~не определено~, ~истина1~), целыми 27, вещественными - 2.7E+1, строковыми - «текст», датами - «23 ноября 1996», временем - «20 часов 31 минута 45.7 секунды», ссылочными - $79 и поименованными Х (термин, отмеченный как константа). В СеГ зафиксированы слова, которые являются ключевыми, они могут использоваться самостоятельно, в составе термина или как термин с известными свойствами. К таким словам относятся: термин, тип, синоним, программа, правило, знание, исключение, запрос, шаблон, анкета, данные, библиотека, метапонятие, отношение, язык и др. Некоторые слова скрыты в СеГ, но они могут использоваться при формировании знаний или запросов. В СеГ зафиксированы слова, которые также являются ключевыми, но они не могут использоваться самостоятельно в качестве термина. К таким словам относятся: целый, массив, запись, таблица, операция, функция, процедура, прагма и др. слова. Эти слова могут входить в состав термина, как его часть. СиГ рассматривает термины, чаще всего составленные из слов. Но как быть школьнику, который использует записи (а + в). Учителем математики ему сообщается, как писать такие фразы. При этом не используются грамматические категории, а только некоторые интуитивные соображения о записи, например формульной фразы. В СеГ разрешается использовать в качестве термина формульную фразу (а + в). Причем используется вместе с точкой или без нее. Некоторые слова являются именами, они записываются с заглавной буквы, и это свойство сохраняется во всем тексте. Здесь нет ничего необычного. Смысл каждого конкретного имени определяется. Понятия слова-термина и имени-термина в этом смысле идентичны. Например, Иван и человек - два термина с одинаковыми или различными характеристиками, соединенными термином «и». Термин человек может выступать как метапонятие, составленное из всех учитываемых имен. Тогда текст «человек Иван» состоит из двух различных терминов. Этим самым создается путь для обобщения имен. Именно таким образом термины соединяются в общую грамматическую категорию собственные и несобственные имена. Число грамматических категорий СиГ сокращается для СеГ. В СеГ выделяются два класса слов: стандартные (широко распространенные в ЕЯ для конструирования осмысливаемых фраз) слова и профессиональные (введенные самими разработчиком или пользователем знаний) слова. К стандартным словам относятся слова, которые входят в термины («если», «то», «когда» и др.) или являются терминами общего назначения («тип», «целый», «массив» и др.). К пользовательским словам относятся любые слова, введенные в процессе накопления БЗ или составления запроса для Интеллсист. Важную роль при использовании СеГ играют словари из слов, которые не имеют значения, но используются для построения и идентификации терминов. В связи с указанной структурой слов каждое слово должно иметь характеристику, определяющую длину основы слова. Интерфейс Интеллсист обеспечивает указание такой характеристики путем использования подчеркивания в определении нового термина: слов_о, словц_о, подчеркивани_е, длин_а. В связи с использованием для имен заглавных букв следует сделать существенное замечание. Предложение, вводимое в базу или используемое в запросе, не должно начинаться заглавной буквой. Интеллсист не всегда точно может распознать случаи использования заглавных букв. В большинстве случаев распознавание будет удачным. В СеГ описываются простые и сложные имена. К сложным именам относятся квантор («найти» или «какой бы ни был»), формула (дождь или снег), функция (скорость от пути), индексирование (пятый элемент массива), именование (поле А таблицы Т), отрезок (элементы массива в диапазоне от 1 до 10), преобразование (привести к целому), квалификация (понимать как целое), атрибут (размер массива). Для лингвиста такие имена могут быть неожиданными. Здесь ограничимся краткими пояснениями таких имен. Для пользователя (кроме математика) сложные имена скрыты стандартными терминами, которые описываются в полном изложении СеГ. Пользователь может применять шаблонные запросы, в которых сложные имена уже имеются, они определены и отлажены. Имеется два вида кванторов: квантор всеобщности и квантор существования. В речи и письме они используются часто. К примеру, кванторы всеобщности используются в предложениях: «для каждого законопослушного гражданина конституция является руководством в жизни», «для дома и семьи в магазине имеется товар», кванторы существования используются в предложениях: «найти скорость, при которой спутник может выйти на орбиту», «существует хорошая жизнь в отдельных районах Земли». Первый квантор позволяет ввести в Интеллсист требование о справедливости высказываний, второй - ориентирует Интеллсист на вопрос, задачу или проблему, подлежащие разрешению с помощью Интеллсист. Квантор именует истину. Здесь использованы стандартные слова и термины: «для», «для каждого», «найти», «существует». Понятие квантора не должно пугать пользователя, но требует некоторой привычки. Чаще всего квантор возникает автоматически из слов, которые упомянуты выше. Формула или функция (зависимость между величинами) именуют некоторое гипотетическое значение, которое может быть получено в результате его вычисления. Часто используются фразы с операциями: «сумму налога вычесть из суммы дохода». Знающий ЕЯ и не подразумевает, что кроме формул он использует и функции. Следующие фразы дают примеры функций: «скорость зависит от пути и времени», «у F имеется аргумент X». Имеются частные разновидности функций, зависящих от дискретной величины и именуемых индексированием. Например, числовые таблицы задают дискретную функцию от аргумента - целочисленной величины (номер строчки таблицы). «Из массива ведомость взять вторую строчку» - пример использования индексирования. А фраза «Из массива ведомость взять строчки от второй до седьмой» определяет в СеГ отрезок массива. Аналогично индексированию устроена дискретная функция именования, когда значение определяется в зависимости от имени. Наиболее подходящим примером являются таблицы, в которых имеются столбцы и строчки. Каждый столбец поименован, а строчки пронумерованы. Например, фраза «Из таблицы сводка взять колонку зарплата и пятую строчку» содержит имя колонки, из которой выбирается числовое данное. В СеГ определены операции преобразования, квалификации и атрибута, которые приводят значения к требуемому типу данных или реализуют выбор некоторого свойства данного или часть его значения. «число А преобразовать к типу вещественный», «число А считать относящимися к типу целый», «использовать размер В» - это реальные примеры использования указанных операций. Конечно, сложные имена используются особенно в текстах фундаментальных наук. В литературном языке можно найти немало примеров применения сложных имен. Например, конкретный почтовый адрес является сложным именем. Грамматику любого языка, в том числе и ФЯ, порождаемого СеГ, характеризуют фундаментальные исходные понятия. От того, какие понятия определяют СеГ, определяется ее назначение. Такими фундаментальными понятиями являются: слово, лексема, знак, термин, понятие, лексикон, абзац и др. 2.4. Понятия, классы понятий и лексиконы В основе СеГ использована одна из фундаментальных категорий - понятие. В соответствии с нашим пониманием классификации видов знания дадим 7 определений термина понятие. 2.4.1. Понятия. Так дается определение понятия в различных словарях и книгах. Понятие - это форма мышления, отражающая существенные свойства, связи и отношения предметов, явлений или процессов. Понятие - это языковая категория (напоминающая фразеологические обороты или выражения), отражающая существенные свойства, связи и отношения единиц языка (термины) или составляющие единицы языка: слова, комбинации слов и знаков, а также текстов этого языка. Понятие - это сущность всякого понимания действительного или мыслимого, предназначенная для истинного описания реального мира. Понятие - это главный языковый элемент, определяемый обычно в терминологическом словаре как целое и неделимое. Понятие это совокупность следующих атрибутов: термин, множество возможных значений понятия, текущее значение, дата введения термина, сорт и тип понятия, терминологическое определение понятия, характеристика контекста. Понятие - это результат познания действительности, выражаемый языковыми средствами через имя понятия и его значение, получаемое в результате познания. Понятие - это система данных выше определений. Определение понятия, представленное в соответствии с пятым определением, включает (как указано выше) следующие атрибуты: одну или несколько основ вводимых слов и возможно некоторое число знаков, составляющих термин, исходные концы слов, класс и сорт понятия, тип значений понятия, ссылку на значение понятия, текущее или постоянное значение понятия, ссылку на неформальное определение термина, дату введения понятия. Указанные атрибуты позволяют построить формальное определение термина. Исходное окончание предусматривается для вывода термина на экран при общении с пользователем и при отсутствии системы генерации текстов ЯПП. Класс, сорт и тип понятия рассмотрены ниже. Каждое понятие имеет значение, его представителя, полный набор значений или константное значение - все они относятся к определению понятия. Некоторые понятия определяются абстрактно, они определены интуитивно и только термином, их доопределения будет осуществляться в процессе поиска смысла текста. Некоторые понятия определены только значениями (эмоционально), для них термин в данном применении не обязателен. Неформальное определение понятия включает набор предложений ЕЯ по правилам СиГ или СеГ для передачи его смысла человеку, желающему ознакомиться со знаниями данной области. Интеллсист использует определение понятия только информационно. Оно может отсутствовать. Если определение должно использоваться в Интеллсист, то оно должно быть написано на ЯПП по правилам СеГ. Совокупность терминов, используемых в данном применении, называется лексиконом или терминологическим словарем. Процесс описания понятия - это введение его имени и характеристик (атрибутов). Стандартные и нестандартные (из предметной или проблемной областей) понятия вводятся знаниеведом (это новое понятие для обозначения работника со знаниями) и пользователем на этапе создания БЗ и запросов. Новые понятия для переменной части лексикона вводятся пользователем в процессе формулировки запроса или ответа на вопросы Интеллсист. Объектом изучения лексикологии ЯПП являются слова, знаки и термины, составленные из слов и знаков. Они изучаются с точки зрения смыслового значения, места в лексике ЯПП, происхождения, употребления, сферы применения и характеристик. 2.4.2. Классы понятий. Класс понятий в широком смысле слова определяется в СеГ и ЯПП. Некоторые рассматриваются в этом разделе. Класс понятия определяется также родством их характеристик. Например, класс понятий с назначением быть метапонятием - это совокупность или список понятий, поименованная некоторым термином и образующая внешнее понятие (метапонятие). Например, классами являются болезни, симптомы, методы, звери, люди и т.п. При таком перечислении указаны имена классов. Класс необходим для управления потоками данных при формировании запросов и ответов самой Интеллсист. Метапонятия вводятся для задания классификационных понятий. Итак, совокупность понятий может именоваться новым понятием, которое называется метапонятием. Значениями метапонятия являются тогда понятия, входящие в совокупность. Ниже будут рассмотрены и другие классы: синонимы, исключения, правила, прагмы, шаблоны и анкеты. Совокупность понятий образуют класс по их атрибутам. Атрибут сорт понятия, как общая характеристика понятий, относит каждое понятие к некоторой категории универсальной грамматики. Различают следующие сорта: простое имя, синоним, тип, константа, литерал, массив, запись, поле записи, множество, атрибут, процедура, функция, операция, формальный параметр, метка, исключение, вводное слово, прагма. Сорт понятия определяет контекст применения термина этого понятия в текстах: какие операции являются допустимыми или какие композиции (сочетания) терминов будут правильными. Сорт понятия является естественной его характеристикой, по которой строятся правильные фразы и утверждения, имеющие вполне определимый смысл и назначение. Класс понятий образуется по такому атрибуту как тип понятия, которое понимается как наименование множества значений (смыслов), которые может принимать данное понятие. Тип определяет класс понятий. Каждое понятие может принимать одно из множества значений. Различают следующие базовые и простые типы: логический, символьный, целый, вещественный, ссылочный. К составным типам относятся массивы, таблицы и записи, даты, время и др. Имеются типы расширения: короткий целый, вещественный плавающий, вещественный фиксированный, строковый. Понятия типа можно подразделить на такие: дискретные (логический, символьный, целый, диапазон), непрерывные (вещественный, плавающий вещественный, фиксированный вещественный), индексируемые (массивы), именуемые (записи из полей различных или одинаковых типов), ссылочные (из ссылок на понятия данного типа), множественные (конечное или бесконечное множество), последовательностные (цепочки простых объектов), подпрограммные (функции и процедуры), и абстрактные (или неопределенный). Значение понятия может быть задано вместе с термином, тогда он отражает факт (скорость равна нулю), в примере «скорость» - термин, «равна» - связка термина и значения, «нулю» - значение. Значение термина может подразумеваться, тогда термин отражает логическую связь с другими терминами, значение термина может отсутствовать, тогда термин является неопределенным своим значением, которое может определиться в процессе поиска разрешения запроса. Значения также могут определять класс понятий, которые имеют одинаковый (в некотором роде) смысл. Омографические термины (одинаковые по написанию, но с различными значениями) допустимы в том случае, когда они определяются в составе составных типов или в различных БЗ. Конкретные данные могут выступать в качестве начального (исходные факты), текущего (факты в процессе логического вывода решения) или конечного значения, получаемого при выводе (новых) фактов, в процессе вычислений или логического вывода результата запроса. Внешнее представление значений известно из практики работы со знаниями или из различных документов. Значениями могут быть числа, символы, строки, тексты, их композиции или действия - все они именуются лексемами. Значения используются при задании констант, начальных данных для величин, данных о границах диапазонов, кодов различного назначения и т.п. Внутреннее представление значений скрыто и может проявляться только при выводе его на экран или твердый визуализируемый носитель. ЯПП в самом общем виде состоит из текстов на ЕЯ, включающих утверждения, используемые в соответствующей специальности. В текст на ЯПП могут входить формулы различной структуры, таблицы, конкретные различные данные (но не рисунки, которые необходимо представить текстами или ссылками на имена рисунков). Общая структура текстов ЯПП состоит из абзацев, которые состоят из утверждений, которые в свою очередь состоят из фраз. Структура текстов может относиться к описательному или командному языкам, а также к смеси описательных и командных языков. Термин (их совокупность образует класс понятий текста) - основная единица ЯПП, он идентифицирует понятие или класс понятий. Терминами обозначаются понятия предметов, явлений или процессов. Каждый термин определяется строго своими характеристиками. Один и тот же термин не может определяться дважды, кроме случаев вложенных определений структурных величин. Различным терминам могут приписываться одинаковые характеристики. Предписание различных характеристик одному и тому же термину не допустимо (кроме случаев вложенных определений структурных величин). Все понятия, поименованные терминами, могут принимать значения в соответствии с характеристикой (семантическая валентность терминов). Написание термина обладает свойством непроницаемости - внутри термина недопустимо использовать другие термины или их части. Разновидности терминов образуются использованием различных их составов или изменением основ слов данного слова из термина. Термин может задаваться фразеологическим оборотом (фразеологизмом). Из этих определений следует, что понятие или класс понятий именуются терминами, они могут принимать значение из известного множества значений и возможно имеют текущее значение, ввод термина в Интеллсист автоматически снабжается датой (дата введения термина в язык не всегда известна), термин относится к определенному сорту или классу понятий. Набор грамматических категорий СеГ составляет ее главные понятия. Поясним лишь некоторые категории, соответствующие классам понятий. Синоним (термина) - это термин, именующий одно и то же понятие с одинаковыми значениями. Для человека синонимы характеризуют понятие с разных точек зрения, а для Интеллсист они характеризуются одинаково. Синонимы заменяют друг друга, они могут различаться в словах и/или знаках. Важно заметить, что среди синонимов одного понятия выделяется один, который является основным термином, объявленным своими характеристиками. Остальные термины являются синонимами и образуют (определяют) синонимический ряд. Выбор основного синонима остается за пользователем, его выбор определяет читаемость выдаваемого результата, поскольку результат печатается в основных терминах. Синонимы образуют словарное богатство ЯПП, делающее его образным и выразительным. Синонимия - явление профессиональное, в разных областях знаний она создается различными путями. Так как в качестве термина можно использовать фразеологические обороты, которые синонимически эквивалентны даже слову, то они могут использоваться для краткости и лаконичности, например, сокращения или аббревиатура. Синонимы - это характерная грамматическая категория, она максимально используется при формировании текстов ЯПП. Антонимы должны выражаться логически через зависимость от введенных ранее терминов (понятий). ЕЯ использует многозначные слова и термины для обозначения понятий. Эта особенность ЕЯ не переносится в грамматику ЯПП, кроме одного случая. Контекст одного понятия может охватывать контекст для другого понятия. Если границы вложенности ясны, то по обе стороны границы можно вводить двузначный термин. Эта ситуация аналогична ситуации в блочном программировании и использовании при этом одинаковых идентификаторов для обозначения различных понятий. Естественно, что грамматическая категория синонима будет широко использоваться при описании ЯПП, а точнее при составлении лексикона. ЕЯ использует понятие синоним, но в ЯПП понятие синонима расширено - можно вводить синонимы для любых терминов. К примеру, некоторое предложение может быть термином, и для него можно определить один или несколько синонимов, состоящих из одного слова или знака. Введение понятий термина и синонима исключает категории частей речи и предложения СиГ русского языка. Знания и запросы для Интеллсист передаются в соответствии с правилами СеГ при формировании БЗ, которая и является программой решения определенного класса прикладных задач. И еще несколько классов понятий, определяемых в СеГ. Исключения – это класс понятий, с помощью которых динамически обнаруживаются и исправляются некоторые ошибки в знаниях и запросах либо стандартным образом, либо по запросу и заданию пользователя. Исключения задаются процедурами исправления ошибок. Правила (их совокупность определяет класс понятий СеГ) задаются для формирования новых фактов по имеющимся фактам. Их применение становится необязательным, если не возникает определенная композиция имеющихся фактов. Легко привести математический пример - аналитическое дифференцирование или интегрирование выражений (формул). Правила - это два выражения, которые определяют вхождения первого выражения и заменяют его вторым, сохраняя смысл преобразуемого выражения. Класс понятий с именем прагма определяется как служебные сообщения для Интеллсист о правилах ее поведения относительно данного запроса. Связь с Интеллсист необходима для управления ее работой в ситуациях, когда используются различные технические средства или способы формирования данных и знаний. Все прагмы определены и зафиксированы (см. Приложение 5). Последние из упоминаемых здесь классов понятий СеГ – это понятия шаблона и анкеты как фиксированные формы построения запроса. При работе по шаблону задается меньше информации, но и круг решаемых задач также становится уже. Он состоит из фиксированного текста и заполняемых пользователем окон. Шаблон составляется знаниеведом и сохраняется в библиотеке для применений. При работе по анкете пользователь только отвечает на вопросы анкеты и получает решение задачи (например, диагностики). Анкета также составляется знаниеведом и сохраняется в библиотеке для применений. 2.4.3. Лексиконы. Повторимся, совокупность терминов (понятий) вместе с их реальными характеристиками определяет лексикон данной области знания. Таким образом, лексикон - это (в широком смысле его определения) словарь определений понятий для данного ЯПП. Определения используются для идентификации терминов, определения контекста использования термина и для построения логических выражений, представляющих знания. Идентификация термина является сложным процессом выделения термина из фразы, поиска его в лексиконе и извлечения необходимых в данном рассмотрении атрибутов определения понятия, идентифицируемого данным термином. Многие атрибуты определения понятия используются для формирования возможного контекста применения понятия. Лексикон определяет основу ЯПП, каков лексикон таков и ЯПП. Лексикон состоит из двух главных частей: стандартная и переменная части. Стандартная часть предназначена для обслуживания всех ЯПП (или всего ЕЯ) и состоит из общеупотребительных понятий, используемых при формировании БЗ, переменная часть формируется в процессе анализа и ввода знаний и заданий. Например, термин «сложение» является общеупотребительным, он обозначает сложение, например чисел. Такое понятие попадает в стандартную часть лексикона. Термин «интеграл» используется в математике, он попадает в переменную часть лексикона ЯПП математики. Стандартная часть лексикона присоединяется к каждому лексикону по отраслям знаний, которые хранятся в библиотеке. Уместно заметить, что такие библиотеки должны стандартизоваться в масштабе страны так, чтобы стандарт обязывал пользователя придерживаться его для уменьшения числа ошибок при формировании заданий. В отличие от имеющихся стандартов на термины и определения предполагаемый стандарт должен содержать по возможности все синонимы и характеристики понятия, соответствующие набору атрибутов определения понятия в БЗ. Лексикон является точным терминологическим словарем для Интеллсист. Полный перечень имен (они же и образуют термины стандартной части лексикона) представляет собой набор стандартизованных понятий (операций или операндов, например), обозначающих значащие константы и константные ограничители, в том числе и ключевые слова. Их список приведен в Приложениях без указания всех синонимов. Полный перечень операций представляет собой символьное изображение стандартизованных понятий, синонимами которых будут термины из слов или знаков, заимствованные из ЕЯ. В качестве терминов пунктуации могут использоваться также и комбинации приведенных в таблице ASCII символов. Кроме этого необходимо помнить, что символ пробела также является разделителем лексем. К лексиконам относятся образующие их словари из знаков, слов, терминов и представлений данных. Лексикон формируется с помощью инструментальной системы, которая потенциально предназначена для решения следующих проблем: 1. Автоматизированное составление терминологического словаря по текстам, представляющим знания. Для этого используется программа корреляционного анализа текстов по смыслу. 2. Автоматизированное составление словаря по автономно задаваемым терминам вместе с их характеристиками. Словари составляются в процессе корреляционного анализа или при грамматическом разборе знаний и запросов. 3. Автоматизированное составление толкового терминологического словаря для некоторой предметной области. Эти операции реализуются с помощью меню инструментария Интеллсист. 4. Автоматизированная проверка текстов с лексической точки зрения для обнаружения грамматических ошибок в использовании терминов (терминография). С помощью лексикона осуществляется анализ текстов на правильность использования терминов. 5. Использование лексикона в трансляторе ЕЯ --> ФЯ для идентификации одноили многословных (и многознаковых) терминов. При грамматическом разборе текстов проверяется правильность использования терминов и их взаимосвязи. 6. Создание библиотек лексиконов для реализации операций сопоставления, формирования или модификации лексиконов при использовании имеющихся или построении новых лексиконов. 7. Подготовка материала для издания толковых терминологических словарей. Любой лексикон служит основой для разработки толковых словарей, инструментарий Интеллсист автоматически формирует их по лексикону, так как в нем содержаться содержательные определения терминов для человека. Среди всех девяти библиотек инструментария Интеллсист имеется библиотека лексиконов. Ее обслуживание связано со структурой лексиконов. Верно и обратное: структуру лексиконов необходимо выбирать так, чтобы работа с библиотекой лексиконов была эффективной. Исследование вопросов создания библиотек лексиконов выявило ряд особенностей их использования. Например, работа специалиста на стыке двух наук и формирование смешанного лексикона (сложение лексиконов) представляет собой длительную автоматизированную работу знаниеведа. Время его работы (а не системы) увеличивается из-за необходимости пересмотра характеристик терминов без изменения представлений знания. Развитие лексиконов можно рассматривать с двух позиций. Можно рассматривать внутреннее развитие: пополнение новыми терминами, исправление имеющегося словаря (сопровождение), уточнение некоторых характеристик или определений понятий, устранение устаревших терминов (редактирование словарей и их характеристик), сохранение или создание копий. Можно рассматривать и внешнее развитие: составление библиотек лексиконов и таблиц терминов ЯПП, разработка стандарта лексикона по специальности или профессии, использование лексиконов в новых Интеллсист, работающих со знаниями, представленными на ЯПП. Наравне с развитием лексикона большое значение имеет унификация лексикона. Дело в следующем. Укажем на класс задач криминалистики - ведение допроса и автоматическое формирование вопросов к подследственному. Следователь обычно сталкивается с самыми различными вещами и ситуациями. Сколько известно марок автомобилей, сколько театров и кино, сколько городов и поселков, а сколько реальных ситуаций, с которыми любому следователю приходится сталкиваться на допросах? Если все вещи и явления именовать терминами, то сразу обнаружится нехватка память под лексикон. Для подобных задач следует использовать аппарат таблиц с названиями автомобиль, театр, кинотеатр, город или поселение, ситуации, в которые вносятся все известные термины. Таблицы больших объемов допустимы, а получение справок из таблиц является простой процедурой. Здесь термины переходят в разряд данных с простым доступом. Все необходимые характеристики вещей и явлений должны поместиться в этой же таблице как их атрибуты. Проблема больших лексиконов будет разрешена. Этот прием перехода от терминов к данным, представленными терминами, используется в реальной жизни (например, использование справочников) и во многих реальных задачах. Всегда бывает ясна ситуация перехода от лексикона к справочным таблицам. 2.4.4. Предварительные сведения о представлении знаний. Если представления данных известны (это лексемы, термины или выражения, как в только что рассмотренных проблемах), то менее ясны методы представления знаний. Знания в таблицах, массивах и записях отражают простейшее знания - факты. Более сложное знание представляется последовательностями терминов, определенных в лексиконе. Кроме этого, знания могут быть представлены алгоритмами или программами (нельзя исключать алгоритмические знания, которые уже накоплены), формулами, которые часто используются не только в текстах фундаментальных наук. Не всякий текст, написанный в соответствии с СиГ, может пониматься Интеллсист, если для него не составлен подходящий лексикон, такие тексты не передают знаний. Особое место в знании занимают факты. Представление фактов уже показано на примерах. Их можно проиллюстрировать еще и на таких примерах: «идет дождь», «снег не падает», «возраст юноши более 20», «лось является животным», «птица не относится к лососевым», «стол есть мебель». Интеллсист реализует использование фактов, введенных в БЗ или запрос, и выводит новые факты. Приведенные примеры показывают, как используются термины для построения фактов, фраз и предложений. Итак, знания представляются терминами, фактами, фразами и утверждениями (или выражениями), кроме представления фактов в форме таблиц, массивов и записей. Представление знаний полностью и формально определяются языком Лейбниц. 2.5. Фразы и абзацы Перейдем к неформальному рассмотрению определения ЯПП. Основные принципы, характеризующие ЯПП по сравнению с ЕЯ, можно кратко сформулировать так: ЯПП - это часть ЕЯ, используемая в данной профессии и использующая расширяемый лексикон, содержащий определения терминов. Формализованные языки или ФЯ могут быть частью знаний по некоторым специальностям. К преимуществам ЯПП следует отнести такие факторы: 1. Поскольку лексикон задается заведомо при первичном формировании знаний в памяти Интеллсист, легко реализовать синтаксический контроль над правильностью формального представления знаний в этом лексиконе и текстов самих знаний. Так реализуется формальная автоматическая отладка текстов. 2. ЯПП поддержан ФЯ Лейбниц (универсальной грамматикой), что также обеспечивает автоматизацию семантической отладки текстов знаний и запросов. Поддержка выражается в том, что для текстов знаний подключается транслятор ЯПП на ФЯ, который контролирует тексты автоматическими средствами. 3. Для специалиста данных предметной и проблемной областей ЯПП является естественным профессиональным языком, что обеспечивает специалисту упрощение в общении его с Интеллсист по элементам знания при наполнении БЗ (обеспечение дружественного интерфейса). 4. При выполнении условий предыдущих пунктов создается ситуация для общения с Интеллсист без участия знаниеведа. Это обстоятельство обеспечивает отторжение разработок знаний и запросов от программиста и процедурного программирования. Роль отторжения велика. 5. Освоение любой Интеллсист должно обходиться без емких руководств. Для использования Интеллсист должно быть достаточно самой системы, которая общается с пользователем на его ЯПП. Обучение должно предусматривать исключение из практики применения Интеллсист пособий и руководств, особенно в тот момент, когда идет производственная работа (как с играми на компьютере). 6. Система составления и использования лексикона предусматривает возможность пополнения его новыми терминами в процессе эксплуатации самой Интеллсист. Развитие ЯПП в процессе работы является естественной основой для развития любой науки. 7. Настройка Интеллсист проходит стадии: набор текстов знания, прогон текстов для выбора и формирования лексикона, прогон знаний при вводе его в БЗ, контрольный ввод знаний в базу для верификации на контрольных примерах. ЯПП обеспечивает параллельную работу с лексиконом и знаниями. 8. На ЯПП можно описать любые знания, и он понятен любому специалисту данной предметной области (в настоящий момент исключение составляют предметные и графические знания). 9. Использование ЯПП устраняет необходимость обучения пользователя ФЯ, обычно доступного программисту или теоретику (которые в принципе могут использовать ФЯ для передачи специальных знаний и запросов). 10. ЯПП легко совершенствуется за счет расширения БЗ и лексикона как стандартного, так и пользовательского. Расширение может быть независимым или автономным, а может быть связанным с процессами формулировки запросов. Основной единицей языка является фраза, структура которой совпадает по большей части со структурой предложения в СиГ. Но из-за расширения лексики СеГ под фразой подразумевается часть текста, которая рассматривается автономно и, в частности, может быть и предложением. Например, А+В является фразой. Главное свойство фразы состоит в том, что она должна иметь значение, в нее заложен вполне определенный смысл. Формально фразу можно определить как часть текста, имеющую вычисляемый смысл. Более точно определяется понятие абзаца. Абзац - это последовательность фраз (может быть одна фраза), которые составляются из одного или нескольких предложений и имеют законченный смысл, который выражается истиной или ложью. Значение абзаца может быть ложным, тогда может возникнуть или не возникнет противоречие, если различные абзацы соединены логической операцией, обеспечивающей истину для всего текста. Весь текст состоит из абзацев. Абзацы отделяются друг от друга пустой строчкой или отступом в первой фразе абзаца. Заметим, что предложение обязательно должно быть фразой. В СеГ отсутствуют категории типов предложений, частей речи (их 15 в СиГ), частей предложения (подлежащее или сказуемое) и др. Однако, если применять СиГ, то в текстах можно обнаружить все такие категории. Фразы, абзацы и тексты из абзацев полностью состоят из терминов двух типов: термин-операнд (будем именовать кратко терманд) и термин-операция (или кратко термация). Терманд и термация являются основными членами предложений. Если вводные слова и предложения не являются терминами или частями терминов совместно с другими словами или знаками, то они могут игнорироваться при анализе текстов знания. Но если они определены как термины, которые либо передают знания, либо введены в лексикон как игнорируемые термины, то они так и учитываются. Кроме таких текстов в записи могут включаться комментарии, которые игнорируются. Рассудительные фразы предназначены для передачи знания, командные фразы - для выполнения действий или для передачи алгоритмического знания, как и термации. Таким образом, в СеГ имеется две части речи (или два члена предложения): терманда и термация. Заметим, что лексемы могут быть термандами или термациями по применению. Терманды и термации представлены терминами, которые образуются из слов всех частей речи СиГ, лексем и знаков. Конечно, чаще всего существительные бывают термандами, а глаголы термациями, поскольку существительные обозначают предметность, а глаголы - процесс или способ действия. Некоторые лексемы обозначаются словами, например, значения истинности или имена множеств значений. Терманд обозначает понятие, которое имеет значение, термация также обозначает понятие, которое ссылается на действия с термандами, их значение получается в результате завершения выполнения действий. Терманд обозначает предмет, явление, процесс или их свойства. Термация обозначает действие, взаимосвязь, взаимодействие или зависимость. Каждый абзац состоит из последовательности терминов. Некоторые «лишние» слова или термины при анализе текстов игнорируются или учитываются как контекст отдельных терминов. Такие слова и термины традиционно следует называть контекстными. Фразы также являются последовательностями терминов, если они имеют законченную мысль, они могут включать части терминов, если они не имеют законченную мысль. Части речи русского языка в СеГ не выделяются, так как слово любой части речи может быть частью терманды или термации. К примеру, глаголы не обязательно именуют действия, а существительные - предметы, явления или процессы. С точки зрения синтаксической грамматики операнды и операции (существительные и глаголы) обычно обозначаются одним словом, которые могут использоваться в ЯПП в том же смысле. Кроме абзацев текст может состоять из разделов различной квалификации. Если абзац не имеет явно заданного имени, то раздел может иметь имя - название раздела, которое может использоваться для организации ссылок. Смысл ссылок состоит не только в наименовании раздела, но и в организации управления, если в тексте использованы записи алгоритмов или последовательностей действий. В СеГ определены 115 широко известных операций, которые называются базовыми. Среди них: логические (и, или, не, больше, равно, меньше, принадлежит, влечет), арифметические (сложить, вычесть, умножить, делить, возвести в степень), математические (синус, логарифм, целая часть и др.), преобразовательные (агрегат, атрибут, именование в записях, индексирование в массивах, приведение к требуемому типу), операции с таблицами и лексемами. Кроме этого пользователь сам может определить операции и использовать их в заданиях. Надо заметить, что выше практически дано краткое неформальное описание языка Лейбниц. При этом следует добавить, что текст на языке Лейбниц состоит из разделов, которые также упомянуты выше (предметная и проблемная области, знания и запрос). 2.6. Смысл фразы Основное назначение СеГ - вычисление смысла текста. Определим понятие смысла по индукции. Общее определение смысла интуитивно известно каждому. Здесь понятие будет уточнено до описания алгоритма вычисления смысла текста. Будет осуществлено сопоставление двух понятий значение и смысл, сформулированы принципы вычисления, а также будет проведен анализ частей речи СиГ с точки зрения СеГ. Наиболее точно смысл определяется на формальном уровне при описании формализма СеГ. 2.6.1. Понятие смысла. Так дается определение смысла в различных словарях и книгах. Прежде чем передать знания в память Интеллсист необходимо определить понятие смысл текстов, чтобы передавать только осмысливаемые знания. Смысл слова в известных словарях определяется несколькими вариантами: смысл - это внутреннее содержание, значение чего-либо, постигаемое разумом; смысл - это цель, разумное основание; смысл - это то же, что и разум. Обычно приводятся примеры использования понятия для передачи смысла: понять смысл чего-либо; слово в прямом и переносном смысле; в этом нет смысла; жизнь получила новый смысл; иметь здравый смысл; в подлинном значении слова. Действительно, разностороннее определение понятия смысла важно, поскольку человек находится в различных сферах деятельности и требует разного толкования этого понятия. По нашей традиции дадим 7 определений понятия смысл. 1. Смысл - это форма фиксации внутреннего содержания данных о предмете, явлении, процессе или их свойствах в памяти человека (или Интеллсист) для правильного использования этих объектов. 2. Смысл - это языковая категория, отражающая в символьном виде понимание внутреннего содержания данных об объектах. 3. Смысл - это языковая категория, отражающая значения понятий, их совокупностей, существенных свойств, связей и отношений. 4. Смысл - это следующие представления термина вместе с некоторыми данными: число, символ, строка, текст, действия, дата, время, имя, любая комбинация или синтаксически поддержанная и определенная структура перечисленных данных, а также пустое данное или пустое действие. 5. Смысл - это сущность понимания цели, которую можно достигнуть путем использования сущности, выраженной значениями, представленными лексемами. 6. Смысл - это значение, определяемое в процессе понимания текстов (предметов или картинок). 7. Смысл - это результат понимания сложных объектов, получаемый в процессе осмысления (логического вывода) таких объектов или их взаимодействий и взаимосвязей. Смысл раскрывается системой данных выше определений. 2.6.2. Смысл и значение. Смысл и значение не являются синонимами одно другому. Значение получается в результате вычислений (с числами, строками и др. объектами), оно остается им до какого-то момента. Смысл возникает тогда, когда значение соединяется с каким-либо именем. Например, если значение напечатано или выведено из памяти ВМ на какой-либо дисплей, то появляется имя, которое с одной стороны является изображением значения (тогда говорят о собственном имени), а с другой стороны может быть именем понятия, с которым связано это значение (тогда говорят о факте). Во втором случае можно сказать, что имя имеет смысл, представленный выведенным на дисплее значением. Сопоставление смысла и значения, имени и значения, смысла и имени требует исследований, которые относятся к информатике смысла, которая включает в себя все средства для осуществления представлений, обработки и выдачи результатов осмысленных объектов и их значений. Источники проблемы смысла находятся в следующем. До сих пор понятие смысла в большинстве случаев находилось вне СиГ ЕЯ. Попытки поиска смысла высказываний из применяемых правил СиГ приводили к небольшому успеху. Конечно, грамотно составленный текст точнее передает смысл высказывания. Наша главная задача состоит в построении Интеллсист, понимающая ЕЯ по правилам СеГ. Для решения задачи необходимо иметь четкое представление о способах передачи для Интеллсист смысла текстов. Рассматривая тексты можно найти ошибки только благодаря тому, что понимаем смысл текста. Без понимания текста весьма сложно найти ошибки. Иногда в бессмысленном тексте можно обнаружить ошибку. А иногда в тексте, написанном с (кажущимся) нарушением правил СиГ, нельзя обнаружить ошибку. Например, перед словом «что» должна стоять запятая (правило). Но что же это значит? Смысл вопроса понятен, хотя перед словом «что» нет запятой. Для определения смысла высказывания необходим новый подход к построению грамматики ЕЯ. Замечание. Смысл объекта зависит от языка представления знаний. Для текстов ЕЯ, определяемого СиГ, понятие смысла рассматривается по принятым правилам, для текстов ЯПП, определяемого СеГ, понятие смысла рассматривается ниже, для графической информации понятие смысла дано в томе 4 в общих чертах. Имеется много программ для ВМ, которые учитывают понимание ЕЯ (а значит и смысла текстов) с помощью графового представления связей слов и предложений. Связи могут сопровождаться некоторыми функциями, выполнение которых определяет или уточняет смысл текста. Негативной стороной этого подхода является тот факт, что граф осмысления или сам смысл текста может существенно измениться либо при переходе в другую область знаний, либо при незначительной корректировке текста. Например, «дом стоит шатко» и «Белый дом стоит шатко» имею различные смыслы. Для какого-то текста необходимо применять совсем другой граф связей слов. Графовый путь осмысления текстов может принести пользу при решении конкретных лингвистических задач и способствовать пониманию их смысла, но он не приводит к фундаментальному алгоритму осмысления текстов. На тексты ЕЯ накладываются некоторые ограничения, связанные с лексиконом, но которые могут изменить смысл текста при коррекции лексикона, и, с другой стороны, расширять грамматику понятиями, которые «забыты» в СиГ, например даты или время. В [Логический98] приведен подтверждающий данные выше высказывания пример с фразой «серый дом», в которой трудно (или невозможно) установить связь слов «серый» и «дом» из-за сложности построения пересечений двух множеств фраз «серый что-то» и «какой-то дом». Даже, как утверждается ниже при описании примера, пересечение не устанавливает истины при замене слова «серый» на слово «следующий». Конкретное применение фразы «серый дом» приведет к мысли, что она является просто термином. 2.6.3. Принципы для определения смысла фразы. Какие положения являются основополагающими в методе разрешения проблем информатики относительно смысла текста? Будем исходить из положения, что каждый текст является средством передачи известного или нового знания. Второе положение состоит в том, что каждый текст имеет одну из двух ипостасей: он является истинным (или ложным) высказыванием (и третьего не дано) или он является командой для выполнения. (И третьего не дано.) В связи с этим понимание структуры знания и итогового значения текста лежит в основе построения информатики смысла. Зерном структуры знания является элементарное знание, которое обычно квалифицируется как факт. «Ему 17 лет» - факт, который отражает характеристику некоторого существа. Значением факта является истина или ложь. Производным от фактов являются утверждения относительно фактов и правила построения новых фактов. Утверждения относительно фактов являются «сложными» фактами, которые также принимают значение истина или ложь. Правила играют главную роль в методе понимания смысла текста. Из таких положений и зерен (фактов) строится все знание. Следующий шаг в изучении структуры знания и итогового значения состоит в структуре и анализе простого знания, построенного из фактов. В основе СеГ лежит принцип, состоящий в том, что элементарным знанием является факт. Факт - это пара (имя, значение [смысл]), которая является конкретным представлением понятия. Простое знание обычно представляет собой композицию совокупности элементарного знания и отношений между фактами. Сложное знание - это композиция простого знания, имеющая законченную мысль. Факт имеет смысл, выраженный самим фактом. Простое знание имеет смысл, поскольку каждый факт имеет смысл и результаты отношений фактов также имеет смысл, вполне определенный по правилам СеГ через значения фактов. Сложное знание имеет смысл, получаемый после «вычисления» смысла составляющих простых знаний и окончательного «вычисления» смысла композиции простых знаний. Например, «ему 20 лет» - элементарное знание, а «ему 20 лет, а ей 18 лет» - простое знание, составленное из двух фактов, соединенных отношением-термином «, а». Примером сложного знания может быть фраза «ему 20 лет, а ей 18 лет, следовательно, они молоды и могут быть женихом и невестой». Особое положение в представлении знания имеют тексты, содержащие команды. Любой текст из команд также может пониматься как структура из элементарного знания - отдельно взятая команда и из простого знания - последовательность команд. Например, «писать» или «читать» каждый представляет элементарное знание (по нашей классификации - алгоритмическое знание). Необходимо иметь в виду, что выполненная команда порождает истину, а невыполненная - ложь (и третьего не дано). Сложное знание представляет собой подпрограмму или программу, состоящую из команд. Сложное знание (или знание вообще) представляется последовательностью простых знаний (абзацев или/и череды команд). Каждый полный текст - это сложное знание, являющееся истинным или ложным. Конечно, истинное знание по традиции считается полезным, а ложное знание требует пересмотра исходных фактов или отношений фактов для исправления полученной ситуации (квалификации знания). Не исключается из рассмотрения сложное ложное знание, которым практически не занимаются. Но теоретическое значение ложного знания велико. Если изучение ложного знания представляет интерес, то все или некоторые факты и отношения фактов необходимо снабдить термином отрицания для того, чтобы Интеллсист могла переработать такое знание и вывести новые ложные факты. А в основном Интеллсист исследует только истинное знание. Значение, полученное человеком или Интеллсист из элементарного, простого или сложного знания, имеет смысл того или иного высказывания. Таково самое общее определение смысла. Нам необходимо понимание смысла, которое пригодно для переработки знания в Интеллсист. Для этого необходимо разрешить проблему смысла, которая именуется как проблема формализации знания (или поиска смысла). Вот тут и сталкиваются с основной практической проблемой информатики смысла. Наше общее определение смысла таково: смысл текста есть его значение, которое предписывается имени текста в результате вычисления. Простым примером может служить факт. Например, факт: «сегодня дата есть 20 февраля 1990 года» состоит из имени «сегодня дата» и значения «20 февраля 1990 года» и имеет смысл истины или лжи. Запись «ф?к!пр2» не имеет смысла, но может быть названа абракадаброй или текстом, не имеющим смысла. Однако, запись ««ф?к!пр2» есть простая последовательность знаков» уже имеет смысл, поскольку значению «ф?к!пр2» связано с именем «простая последовательность знаков, не имеющее смысла». Наиболее вероятно, что фраза имеет истинное значение, хотя в некотором контексте она может быть и ложной. Для фактов чаще всего смысл находится достаточно просто. Но как быть с длинным текстом, в котором изложены многие взаимосвязанные факты. 2.6.4. Вычисление смысла. Вернемся к пониманию смысла текста, который складывается из смысла термандов (термин-операнд) и термаций (термин-операция), применяемого к термандам. Значение терманда может быть определено или просто задано, тогда процесс вычисления смысла фразы может немедленно начаться, а в противном случае весь процесс получения смысла приостанавливается до получения значения терманда. Если значение терманда из-за недостающего или малого знания не определится в течении логического вывода решения, то данный терманд останется для определения значения некоторого факта, выраженного сложным утверждением. Тем самым факт будет определен в контексте данного терманда. В качестве примера рассмотрим утверждение «скорость есть скорость тела плюс 25». Если скорость тела не определится при логическом выводе, то получаемый факт относительно понятия скорость будет зависеть от скорости тела. Если скорость тела определится как 30, то получаемый факт будет иметь вид: «скорость равна 55». Пример прост, он служит иллюстрацией для понимания процесса получения значения скорости. Предположим, что для Интеллсист сообщены знания в некоторых предметной и проблемной областях. Затем для Интеллсист ставится вопрос, задача или проблема (запрос). Интеллсист обрабатывает знания в следующей последовательности: 1. переводит запись знаний на внутренний язык Лейбниц в соответствии с СеГ, 2. составляет БЗ с автоматической проверкой корректности элементов знаний по абзацам (экология абзаца), 3. переводит запрос на язык Лейбниц, 4. решает логическое уравнение, составленное из знаний и запроса, 5. проверяет корректность запроса (экология запроса), если в системе возникают вопросы, то она сообщает их пользователю, иначе печатает альтернативные ответы. Так Интеллсист использует знания для решения или разрешения заданий, вопросов или проблем. 2.6.5. Роли частей речи СиГ. Роли частей речи СиГ (их 15) распределяются примерно так. Имя существительное главным образом используется для составления термандов, поскольку оно обозначает предметность. Но оно также может входить как часть термации. При этом используются нарицательные и собственные, личные и неличные, одушевленные и неодушевленные, конкретные и отвлеченные, вещественные и собирательные существительные. Имя прилагательное используется как качественный, относительный или притяжательный признак предмета, явления или процесса при составлении термина так, чтобы терманды или термации отличались друг от друга по смыслу. «синий плюс» и «черный плюс» обозначают различные термации. Основная роль прилагательных состоит в построении термандов или термаций вместе с существительными. Прилагательные могут выступать самостоятельно и без существительного. Имя числительное главным образом используется для формирования числовых лексем. К именам числительным относятся не только словесные записи чисел, к ним относятся и цифровые записи. Как и прилагательные числительные могут выступать самостоятельно. “сорок первый”, “158-1241” или “Первый” являются скорее всего термандами. Местоимение является ссылкой на предмет, явление или процесс. Алгоритм поиска оригинала сложен, он может быть и не учтен в первых версиях Интеллсист. Иногда личные местоимения могут использоваться как терманды. Вопросительные, относительные, отрицательные, и неопределенные местоимения могут использоваться в качестве термаций, например для обозначения кванторов. “для каждого человека имеется одежда, зависящая от его конституции” - квантор принимающий истинное значение. Некоторые местоимения или группы местоимений (среди которых можно рассматривать возвратные, указательные, притяжательные или определительные) могут быть частью термина. Глагол главным образом используется как термация (процесс или явление) или ее часть в термине. Он может использоваться и как терманд при указании отношения действия к действительности, пределу, предмету или субъекту. Он может использоваться как терманд для характеристики предмета. Аналогично используется деепричастие. Чаще всего глаголы используются для построения команд и термаций, но что не является обязательным. Причастие и деепричастия, определительное или обстоятельственное наречие как и прилагательные могут использоваться для введения термандов и термаций. “освещенная комната”, “ведущая” или “стоящий” - примеры использования причастия, а “быстро” и “медленно” - примеры наречий в качестве термандов или элементов перечислимых в многозначных логиках. Состояние используется как терманд для изучения свойств предметов, явлений или процессов. Возможным применением может быть образование метапонятий или перечислимых в многозначной логике для оценки состояний логических термандов. “мучительно”, “неловко” или “безрассудно” - примеры использования состояния в качестве перечислимых при определении понятия «поведение человека». Модальные утвердительные или предположительные слова используются главным образом в качестве перечислимых в многозначных логиках, как и состояния. “правда” и “вероятно” являют примеры элементов перечислимых. Предлоги и союзы используются для обозначения термаций при установлении отношений между предметами, явлениями или процессами. Например, “и” и “или” обычно являются термациями с логическими величинами. Частицы, междометия и звукоподражания, передавая эмоциональные и побудительные черты относительно предметов, явлений или процессов, могут использоваться в качестве части или синонимов термандов, а также иногда термаций, например «не» или сравнительные «вроде». Некоторые утвердительные частицы используются в качестве синонимов логических лексем или перечислимых, например «да» или «нет». Некоторые частицы остаются вводными словами. Примерно так (в частности) используется СиГ в СеГ, что касается частей речи. СиГ должен интенсивно использоваться при формировании ответов Интеллсист на запросы пользователей. Объявляемый термин может не согласоваться с другими терминами, если они используются в изложении одного нового факта. Термин «сер_ый дом» в ответе «у серый дом остановился автомобиль» не читабелен. Применение СиГ должен скорректировать фразу так: «у серого дома остановился автомобиль». 2.7. Система смысла и применения СеГ Формальную модель русского языка (или другого ЕЯ) построить сложно, а скорее всего невозможно, поскольку его развитие связано не только с непрерывным пополнением словарного запаса, но и с быстрым формированием новых лексиконов или его более быстрым пополнением (по сравнению со словным словарем). Главный аргумент против построения формальных моделей ЕЯ состоит в том, что СиГ не формализует смысл текста, а определяет правила построения слов, предложений и текста. Правила СиГ не определяют смысла терминов и всего текста. Читающий понимает смысл текста интуитивно. Обычно в СиГ единицей текстов является слово, которое имеет много значений (смыслов). Для Интеллсист задача распознавания смысла слова по широкому контексту является пока неразрешимой проблемой. Если контекст ограничен используемыми БЗ и запросом, то задача распознавания смысла термина успешно решается. Однако следует иметь в виду, что словарь из слов и правила СиГ для их формирования полезны как вспомогательная информационная база для поиска смысла терминов и текста. Поэтому создание словарного машинного фонда, в частности русского языка, является фундаментальной постановкой проблемы развития практического языкознания и информатической лингвистики (или лингвистической информатики). Наряду с созданием такого фонда для каждого ЕЯ необходимо создание машинного фонда терминов русского языка по специальности или специализации, а точнее надо сказать лексикона данной специальности, в котором термины содержат не только определения для человека, но и все характеристики всех терминов. Это основной предмет машинной лингвистики. Работа по созданию машинных фондов слов и фондов терминов может осуществляться автоматизировано или автоматически на ВМ без привлечения формальных средств, например ФЯ. Использование словарей связано со многими задачами: - реализация анализа текстов для построения лексиконов и извлечения знаний при первичной и вторичной обработках текстов, автоматическое составление словарей из слов и создание и ввод словарей терминов и знаний в базу и их автоматический анализ, - определение (или вычисление) смысла терминов, а в последующем и текстов для формирования логического вывода решений запросов, - реализация информационно-справочных систем на основе смысла запроса, а не на основе ключевых слов или словосочетаний, - консультация пользователей по словарям, терминам для ручной работы с текстами при формировании текстов знаний и запросов и обнаружении ошибок, - поддержка машинных методов информатики лингвистики и информатики смысла, как путь использования словарей и осмысливаемых фраз и предложений, - поиск ошибок всех 13 классов в текстах (экология текстов) для построения правильных текстов знаний и запросов, - распознавание и классификация текстов по имеющимся образцам с учетом их смысла. Ниже рассматривается анализ всего текста для получения его смысла. - 2.7.1. Алгоритм вычисления смысла текста. Определим алгоритм поиска смысла текста (вычисление смысла) следующим образом. Смысл понятия определен выше как совокупная запись термина понятия и его полной характеристики (определение, тип, вид, состав из слов и знаков, дата введения в БЗ). Каждый абзац осмысленное высказывание - являет собой логическое выражение, или композицию терминов (термандов и термаций). Абзац является новым (по отношению к составляющим его частям) понятием, термин которого умалчивается или можно сказать подразумевается. Новые подразумеваемые понятия образуют иерархию входящих в него понятий. Текст состоит из абзацев, которые представляют внутри некоторого раздела текста логическое выражение (композицию) из подразумеваемых понятий. Образовано новое подразумеваемое понятие более высокого уровня. Оно поименовано термином, являющимся наименованием раздела. Процесс такого анализа текста завершается после рассмотрения всех разделов (или разделов более высокого ранга). В результате процесса такого разбора получается понятие, сопровождаемое названием всего текста. Имя текста задано явно (название статьи, книги или БЗ), а термин можно считать полностью определенным всей иерархией понятий или композицией понятий текста. К примеру, весь текст об информатике определяет это понятие, обозначенное словом «информатика». В предыдущем разделе определено понятие «информатика смысла». Смысл текста определяется свойствами и значениями составляющих его понятий. Если текст состоит из одного абзаца, то он имеет смысл этого абзаца (значения его подразумеваемого имени). То же можно сказать о разделах текста или обо всем тексте, состоящем из разделов. Таким образом, смысл текста - это сущность определяемого им понятия вместе со всеми его характеристиками и термином. Иерархия понятий образует иерархию смысла текста, которая может быть полезной для подробного анализа смысла текста. Заметим, что некоторые определения новых подразумеваемых понятий могут оказаться рекурсивными (например, построено определение смысла информатики). В аналогичных случаях может быть обнаружено противоречие, которое состоит в саморекурсии, не имеющей «выхода». Лучше всего проиллюстрировать эту ситуацию на математическом примере: «слово есть слово с приписанной к нему буквой» (определение без выхода). К этому определению необходимо добавить еще фразу: «слово может состоять из одной буквы». Пора подвести общие итоги. Итак, каждый текст имеет смысл, который получается в процессе его осмысления (а алгоритмически - вычисления смысла). Причем считается, что весь текст состоит из определенных в тексте или в библиотеке терминов понятий (в лексиконе) и лексем различного типа. Вводные слова и термины еще предстоит изучать, хотя выше были высказаны предварительные соображения на этот счет. Представление эмоциональных тонкостей или принципа умолчания также подлежит исследованию. В чем состоит осмысление текста? Общее значение всего текста должно быть истиной, если не изучается ложное царство, что является уделом отдельного исследователя. Каждого интересует главным образом достижение истины. Значение истины выражает тот смысл, который можно получить в процессе поиска истинного значения. Например, чтение описания СеГ русского языка может составлять истину, если понятен процесс получения истины любого текста, удовлетворяющего правилам грамматики. В результате осмысления текста получается элементарное знание: <название текста, истина>. 2.7.2. Рекурсивность алгоритма вычисления смысла. Процесс осмысления текста приводит к формированию его смысла по правилам СеГ. Она предлагает следующий алгоритм или последовательность действий. Текст состоит из разделов, каждый из которых можно и нужно рассматривать как самостоятельный текст, поименованный некоторым термином. Такой рекурсивный подход к разбору всего текста закономерен. Каждый раз в конечном счете получается элементарное знание: <название раздела, истина>. Смысл раздела является результатом получения его значения. Поскольку процесс членения всего текста рекурсивен, понятие раздела понимается широко. Под разделом можно понимать том, главу, параграф или некоторого сорта подраздел. Наконец, весь текст, состоящий из разделов, приводит к результату, который интерпретируется как совместные факты по каждому разделу. Конечный результат будет иметь вид: <название текста, истина> = <название раздела 1, истина> и <название раздела 2, истина> и ...................................................... <название раздела К, истина>. Заметим, что утверждение об истинности текста раздела не означает в действительности его истинность. Во-первых, в силу того, что приведенная запись является результатом логического вывода, а он не обязательно должен соответствовать действительности. Каковы знания, таков и результат. Во-вторых, и это главное, вместо некоторых пар <название раздела К, истина> может стоять и такой результат <не название раздела К, истина>, тогда ответом будет пара <название раздела К, ложь>. Наконец, процесс членения всего текста завершается рассмотрением последовательности абзацев данного раздела из самого низкого уровня дробления. Совокупность абзацев также интерпретируется как совместные (если в качестве связки используется «и»), альтернативные (если в качестве связки используется «или») или смешанные (если в качестве связки используется «и» и «или») сложные факты или простое знание. Сложные совместные факты выражаются по схеме: <название раздела М, истина> = <условное имя абзаца 1, значение абзаца> @ <условное имя абзаца 2, значение абзаца> @ ....................................................................... <условное имя абзаца Н, значение абзаца>. @ обозначает одну из допустимых операций соединения абзацев (логическая операция). Для некоторых пар <условное имя абзаца А, значение абзаца> верно замечание, высказанное для пар <название раздела Р, истина>. Заметим, что связка @ здесь использована условно. Вместо нее может стоять любая связка, все зависит от структуры текста, состоящего из абзацев. Если абзацы перечислены альтернативно, то связкой будет «или». Тогда вопрос о смысле фрагмента текста будет разрешен в результате логического вывода, который приведет к истине, если хотя бы один из абзацев имеет значение истины, или ко лжи в противном случае. Значение абзаца (или набора абзацев), как законченной мысли, также должно обладать логическим значением истина или ложь. Оно может быть и ложным, тогда могут обнаружиться противоречия, которые необходимо устранить. Смысл абзаца складывается из результатов процесса получения значения предложений (лучше сказать фраз), составляющих абзац. Оно может быть ложным, но для исключения возможности противоречия абзац должен быть альтернативой для других абзацев, например в перечнях абзацев. Для других связок значение сложного знания вычисляется по известным правилам логики. Каждое входящее в абзац предложение состоит из терминов, которые имеют значение, определяющее смысл понятия, обозначенного этим термином. Термин может и не иметь значения вначале работы Интеллсист. После работы он может определиться, доопределиться или получить новое значение. Среди терминов предложения могут быть терманды и термации. Процесс получения смысла предложения в простых случаях сводится к применению термаций к термандам. В результате процесса будет найдено значение некоторых или всех терминов. Для пользователя результатом работы Интеллсист является фраза, содержащая запись альтернатив (в соответствии с запросом может быть и одного) простых фактов, состоящих из совокупностей совместных элементарных фактов. А каждый элементарный факт ставит в соответствии искомым терминам их окончательные значения, которые могут быть лексемами, выражающими истинный смысл понятия, высказываниями, если какие-либо входящие в них термины не определены, или по заказу пользователя программами (смысл, выраженный алгоритмическими знаниями), если исходным терминам не сообщены начальные значения. Смысл результата логического вывода из запроса по БЗ может состоять из следующего: совокупность альтернатив совместных фактов, представленных фразой из перечня (разделенных точкой с запятой) списка (разделенных запятой) представленных элементарными новыми знаниями (фактами) и завершаемых точкой; сообщение о полученной программе; список правил, которые применялись в процессе логического вывода разрешения запроса. Альтернативы таких результатов логического вывода образуют общий смысл запроса и БЗ (если в этом имеется необходимость). Общий смысл текста знаний в БЗ выявляется в процессе ее ввода и отладки. Едва ли он представляет интерес, поскольку ввод знаний является самостоятельной емкой частью процесса ИП на основе знаний [Красилов97], и смысл знания изучен ранее. Для знаниеведа информация о смысле текста знаний важна в особенности в процессе его отладки. Выявление противоречий всего или части текста будет тем эффективнее, чем более полный смысл текста доступен знаниеведу или пользователю, создающему новую БЗ. 2.7.3. Универсальная грамматика и ее применение. Грамматику, которая должна явиться буфером между двумя различными ЕЯ, мы называем универсальной, она определяется полностью ФЯ Лейбниц, если не учитывать стандартную часть лексиконов. Он скрыт от пользователя и является внутренним языком Интеллсист для представления знаний, а используют его явно только знаниеведы и системные программисты. В разделе кратко рассматриваются применения универсальной грамматики. СеГ разработана для построения инструментария ИП, которая обеспечивает создание Интеллсист, работающей на основе знаний и обеспечивающей пользователя ВМ решением его задач по исходному заданию, написанному на ЯПП. В основе нового инструментария лежат два понятия: лексикон и ИЛ [Красилов94б]. О лексиконе сказано выше. ИЛ является развитием классической логики, она скрыта от пользователя ИП. Формализм ИЛ автоматически учитывается при анализе фраз и предложений ЯПП. Можно сказать: «Мы и не подразумевали, что говорим с помощью средств ИЛ для передачи смысла», а смысл сказанного формируем по СеГ. СеГ используется [Красилов96] и для формирования ответов на вопросы, которые осмысливаются с помощью Интеллсист для подбора ответа по найденному в вопросе смыслу. Вопросно-ответные системы работают на основе терминологического словаря (лексикона), проект которого может составляться автоматически по всем хранилищам текстовой информации до работы алгоритмов построения ответов на пользовательские вопросы. По правилам СиГ аналогичные системы используют морфологический анализ для анализа текстов и поиска ответов по ключевым словам. Конечно, ключевые слова отражают небольшую часть смысла текстов в особенности тогда, когда ключевое слово является обозначением понятия с единственным смыслом. В противном случае система находит большое число ответов, среди которых имеется необходимый ответ. Сокращение числа ответов важно для ускорения процесса поиска информации. Недавно выяснилось еще одно применение СеГ для построения распознавателей текстов. Имеющиеся рубрики (или разделы) информации характеризуются образцами текстов. Новый текст системой распознавания должен относиться к рубрике, к образцам которой данный текст «ближе» всего. Известны алгоритмы распознавания образов, которые характеризуются анализом ряда признаков предметов главным образом числового свойства. Тексты существенно отличаются от числовой информации, поэтому подход к его распознаванию отличается от известных алгоритмов принципиально. Смысл представленных по правилам СиГ текстов сложно представить в числовом виде. СеГ дает правила для вычисления смысла текстов, который (смысл) обеспечивает сравнение нового текста с образцами. Можно представить алгоритм кластеризации текстов по смыслу или формирование рубрик для информационной службы. Перспективное применение СеГ можно усмотреть в системах перевода с одного ЕЯ на другой ЕЯ, ориентируясь на смысл текстов. Здесь главную роль играет язык Лейбниц. На его основе можно построить СеГ для пары ЕЯ, перевод между которыми необходимо осуществить. Универсальная грамматика является буфером или средством стыковки между двумя грамматиками и не зависит по существу от ЕЯ (так как лексемы универсальны). Здесь учитывается тонкость - конструкции в различных ЕЯ дают одинаковый смысл, но имеют различные формы. ИЛ не относится к грамматике. Использование ИЛ по сути своей состоит в применении ее для решения логических уравнений, которыми внутренне представляются исходные знания и запросы. Решение логических уравнений реализовано путем логического вывода альтернатив новых совместных фактов. Так формируется новое знание из конкретных или пояснительных фактов. Отношение универсальной грамматики к ЯПП можно представить так. Исходное представление знаний реализуется на ЯПП. Транслятор ЯПП переводит запись на ФЯ Лейбниц, неформальный фрагмент которого приведен выше. По записи на ФЯ МЛВ и МАВ находят ответ. Так реализуется краткий путь: задание (проблемы, запроса или вопроса) - окончательный ответ (лексема, формула или программа). 2.7.4. Универсальный язык и проблемы СеГ. Универсальная грамматика (СеГ описан как ФЯ Лейбниц) определяет универсальный язык. Знание СеГ не необходимо для пользователя, желающего решать свои задачи и проблемы с помощью ВМ. Формализм языка Лейбниц не сложен, но его знание совершенно не обязательно. Использование языка осуществляется через работу пользователя по меню инструментария Интеллсист, в котором полностью «спрятан» формализм. Пользователь может применять технические и логические средства ИП, не прибегая к помощи программиста. Передача точного смысла текстов в первую очередь необходима при вводе знаний в Интеллсист, а возможно и при общении между людьми. Подробное описание СеГ дается в руководствах по ИП и представляет самостоятельный интерес. Уместно еще раз обратить внимание на главные проблемы СеГ, которые еще недостаточно четко разрешены из-за малой практической проверки алгоритмов решения. Данный ниже перечень проблем указывает на это обстоятельство, он еще незавершен, но интересен. Далее (разд. 4.7) некоторые проблемы будут рассмотрены чуть подробнее. Первая проблема связана с передачей смысла интонацией. Интонация передает дополнительные знания. К примеру, фраза «Николай пошел в кино или в театр и на базар» можно толковать различно. Скобки показывают на особенности интонации при произношении этой фразы: «Николай пошел в кино или (в театр и на базар)» или «Николай пошел (в кино или в театр) и на базар». Результаты осмысления будут различными. После подключения микрофона к ВМ проблема будет разрешена с помощью алгоритмов идентификации интонации. При передаче в память ВМ текстов Интеллсист будет задавать вопросы пользователю для разъяснения фразы с позиции понимания интонации. Вторая проблема аналогична предыдущей проблеме, она порождена использованием ударения в слове. Эта проблема рассматривается в разд.4.7.3. Третья проблема связана с умолчанием контекста использования термина. В обычном письме или речи многое считается известным. К примеру, в любой фразе данного абзаца почти не один термин не определен. Однако читающий абзац может понять весь смысл текста. Проблема контекста для Интеллсист разрешается пока просто: для каждого термина контекстом является весь текст знания (помещаемого в БЗ) и текст запроса, вопроса или задания. Решение проблемы надо искать в увеличении возможности ВМ по памяти и быстродействию и в разработки алгоритмов анализа контекста. Некоторые соображения можно найти в разд. 4.7.2. Четвертая проблема связана с максимальным использованием СиГ при определении смысла текстов. Например, некоторые местоимения являются ссылками на упомянутый ранее по анализируемому тексту термин. Оно чаще всего так и используется, как в этой фразе используется местоимение «Оно». Имеется набор других примеров использования рода, числа, падежа и частей речи, по которому возникают проблемы передачи знаний ВМ, но их удельный вес весьма мал. Пятая проблема, которая упомянута в пункте 3, является вполне разрешимой, она связана с квалификацией первой буквы предложения. Либо первое слово собственное имя, тогда первая буква понимается как заглавная буква имени, либо первое слово не является собственным именем, тогда первая буква переводится в другой регистр букв. Шестая проблема связана с написанием нерегулярных аффиксов (в особенности изменяющиеся суффиксы). Слова «замок», «замочек» и «замка» в СеГ являются различными терминами, хотя они обозначают одно и то же понятие. Словарь терминов значительно шире в СеГ по сравнению со словарем в СиГ, что создает богатство выразительных средств и методов для представления знаний. Замок может взаимодействовать с замочком или с замками. С другой стороны, анализ текстов ЕЯ для разработки лексикона чуть затруднителен. Аналогичная трудность возникает при формировании ответов на запросы по правилам СиГ (или при реализации алгоритмов перевода с одного ЕЯ на другой). Сделан первый шаг в формировании СеГ, который подкреплен разработками Интеллсист, ряда программ анализа текстов и частных алгоритмов. Предстоит достаточно подробное описание СеГ (вместе с интерпретацией словаря стандартных терминов в СиГ) и более широкое внедрение ее возможностей. Глава 3. Языки меню Особое место в информатике занимает метод описания, построения, реализации и применения интерфейса в системе человек-ВМ. Уже внедрены в практику информатики методы картинок, пиктограмм, плавающих окон, виртуальных кнопок, движений мыши или джойстика и деревьев ветвления работ и подработ в системе. О направлениях формирования методов для реализации сценариев общения в системе человек-ВМ будем считать частично выясненным (может быть за исключением языка Пьеса [Красилов86а] для формирования текстов сценариев, см. разд.1.6). Можно сказать, что программирование здесь достигло больших высот. Интерфейс системы человек-ВМ развит так, что любой пользователь (даже ребенок) может не прибегать к руководствам по программным системам для выяснения действий, необходимых для решения его задач с помощью программ. Будем использовать имеющиеся методы, обеспечивающие пользователя удобными средствами общения с ИИС. Ведущее место в интерфейсе занимает метод общения с программой через меню. Здесь будут использоваться известные методы описания, построения и реализации меню, уделив основное внимание сущности работ и подработ для приближения пользователя к пониманию рациональных средств решения его проблем, а не к анализу средств и методов реализации (см. соответствующие разделы по программированию [Мейер82]). В этом смысле описание меню инструментария скорее напоминает руководство пользователя по Интеллсист, нежели инструкцию для разработчика интерфейса. Обычно инструкции ориентированы на конкретный ФЯ, поэтому построение меню целиком определяется такими инструкциями. Если с помощью Интеллсист создается программа многократного применения, то для реализации в ней диалога пользовательпрограмма необходимо применять БЗ «Интерфейс», которая должна в принципе именоваться, например, словами «Интерфейс Windows». Однако общие соображения об информатики меню частично будут рассмотрены. Некоторые особенности меню инструментария Интеллсист рассматриваются в данной главе. Подробное описание применения инструментария дано в Приложении к т.7. 3.1. Методы общения с программами Для того, чтобы пользователю не нужно было изучать ФЯ для представления знаний, понятных машине и чтобы преодолеть сложности, связанные с использованием ЕЯ, были рассмотрены несколько методов общения в системе человек-ВМ. Основными из них в настоящее время являются следующие методы. 1. Метод меню, который является широко применяемым методом и при котором пользователю на каждом шаге работы выдается запрос на понятном ему языке и дается возможность выбрать один из вариантов ответа. Этот метод хорош тем, что он легко реализуется и используется, а данные от пользователя, полученные с помощью меню, легко переводятся в ФЯ. К его основным недостаткам относится такой: невозможность задавать динамическую картину развития во времени какого-либо явления и уникальность каждой конкретной системы. 2. Метод усеченного ЕЯ, при котором знания записываются на подмножестве ЕЯ. ВМ распознает тексты этого языка и выделяет содержащиеся в нем знания о порядке взаимодействия. В зависимости от сложности системы в ней могут применяться различные подмножества ЕЯ и различные способы его распознавания. При построении подмножества ЕЯ обычно руководствуются способом устранения из языка наибольшего числа из его вышеперечисленных недостатков. Такие языки нами называются ЯПП. 3. Метод использования полного ЕЯ на основе СиГ и СеГ. Общение в системе человек-ВМ, как и в системе человек-человек продуктивен и ожидает скорейшего внедрения. Наиболее сложной проблемой такого общения является проблема автоматического построения ответных фраз для человека от ВМ. Трудности такого общения изложены ранее, поэтому не будем к ним обращаться вновь. Здесь перечислены естественные три метода (исключая контактное, зрительное и др. общение ), которые охватывают средства символьного общения через письмо. Да и дополнительная (может быть более точная) классификация для наших целей не важна. Указан лишь диапазон подходящей классификации главным образом для того, чтобы понять место средств ЯПП в информатике. Подробная классификация может оказаться полезной. К методам усечения ЕЯ относятся следующие методы. Метод выделения ключевых слов, при котором из вводимого текста выделяются ключевые слова - как правило, существительные, т.е. имена предметов, явлений или процессов, и исходя из этого делаются выводы относительно содержания текста и его общих характеристиках. Такой метод применялся в ФЯ и в ранних ЭС, в которых необходимо было выяснять значение большого числа параметров. Метод устраняет большинство из вышеперечисленных недостатков, но в последнее время не применяется из-за сравнительной простоты входного языка и, как следствие, его неудобства для описания сложных моделей. В настоящее время метод часто применяется в компьютерных играх, в которых необходимо распознавать простые команды пользователя, вводимые с клавиатуры. Метод выделения из ЕЯ его легко формализуемой части. Метод наиболее часто используется в настоящее время. В этом случае строится граф, покрывающий какуюлибо часть ЕЯ и исходя из этого графа, строится транслятор с усеченного таким образом ЕЯ на ФЯ представления знаний. Сложность системы зависит в этом случае от относительно большого размера покрываемой области ЕЯ. Для современных систем коэффициент покрытия не превышает 0.8 - 0.9 для технических текстов и значительно меньше для гуманитарных текстов. Стихотворные тексты вообще практически не подлежат формализации этим методом в силу высокого уровня ассоциативности, многозначности и большого числа неявных ссылок на контекст. Этот метод вытекает из методов описания языков с помощью ФЯ и аналогичен расширению некоторой формальной основы языка новыми различными и легко формализуемыми конструкциями. Метод можно назвать методом формализации ЕЯ снизу вверх. Метод полного грамматического и смыслового разбора текста по правилам СиГ и СеГ, которому соответствует построение полного графа ЕЯ. Этот метод является делом не слишком близкого будущего из-за необходимости разрешать все связанные с этим сложности. К сложным проблемам относится проблема многозначности терминов. Но поскольку все эти сложности по большей части носят чисто технический характер, есть уверенность, что его полная реализация все-таки возможна. Этот метод исходит из ЕЯ и представляет собой постепенное выделение из всего множества слов и конструкций языка только некоторых, наиболее просто распознаваемых и формализуемых. Метод можно назвать методом формализации ЕЯ сверху вниз. ЯПП - это либо запись на ФЯ, определенная в данной профессии, либо запись утверждений, определенных в ЕЯ по правилам СеГ. ФЯ - это часть языка Лейбниц, выраженная метапонятием «логическое выражение». Считается, что абзац содержит законченную мысль, формально представимую логическим выражением. Абзац может состоять из одного предложения или из нескольких предложений, представляющих утверждения о фактах или правила построения утверждений о фактах. Рассматривая программную систему с позиций пользователя, а именно так надо подходить к разработке программ для пользователей, необходимо выделить отдельные работы или операции пользователя, которые он должен выполнять в процессе составления или разработки лексиконов или терминологических словарей. Такой подход к разработке обеспечит максимальные условия для удовлетворения запросов пользователей на программную систему. Обычно рассматривается список работ в виде иерархии, которая начинается верхним уровнем и завершается конкретной работой (или подработой) нижнего уровня. Самый верхний уровень предназначен для разделов инструментария Интеллсист, а детализация относится главным образом к системе формирования лексикона и условиям запуска Интеллсист. Основная особенность иерархии работ состоит в том, что каждая работа верхнего уровня подразделяется на подработы следующего уровня до тех пор, пока не подойдем к самому нижнему уровню и не будем рассматривать конкретные работы, поддержанные подпрограммой. Если рассматривать всю иерархию работ (все дерево работ), то чаще всего можно обнаружить совпадающие конкретные работы. Поэтому реализация совокупности работ должна быть представлена в виде пакета подпрограмм, обращение к которым осуществляется из древовидной иерархии работ. В главе будет рассмотрена в общих чертах иерархия работ и те особенности иерархии, которые отличают систему от известных традиционных систем общения человека с ВМ и ИСС. Методы и средства ведения диалога в системе человек-ВМ непрерывно совершенствуются в основном по следующим направлениям: - улучшение возможностей и качества технических средств (многоэкранность, цвет, четкость формулировок и др.); - уменьшение количества действий и манипуляций человека, участвующего в диалоге, в частности, использование ввода сообщений голосом; - увеличение информативности языка общения в системе (частота кадров, полнота использования языков и др.); - повышение уровня самообучения в процессе диалога на основе динамических подсказок; - сокращение времени ожидания реакции системы и путей для достижения искомой цели диалога; - расширение круга пользователей путем увеличения лексикона общения с ВМ как по составу, так и по значению используемых понятий; применение алгоритмов адаптации средств общения относительно конкретных нужд пользователя (например, по терминологии или сценарию часто повторяющихся последовательностей работ); - в конечном счете, увеличение производительности труда пользователя в системе человек-ВМ. Конечная цель развития средств диалога - это максимальное сближение диалога в системе человек-ВМ к диалогу человек-человек или сведение всей работы к «нажатию одной кнопки». - Диалог - это обмен посланиями в соответствии с языком общения для достижения конечной цели - решение поставленной перед ВМ проблемы. Пользователи ВМ имеют различную квалификацию, различные знания системы и решают различные проблемы. Для обобщения можно так классифицировать пользователей: - для случайного пользователя важна реклама кнопок, режимов и путей диалога, по которым можно судить о целях и назначении всего инструментария и его частей, - необученный пользователь ориентируется на меню и использует метод проб и ошибок путем нажатия клавиш или кнопок мыши, - пользователь-оператор применяет командный язык для управления потоками данных и знаний с некоторым их преобразованием, - пользователь-прикладник читает сведения из информирующей системы для начального изучения технических возможностей инструментария, - пользователь-аналитик применяет программированное обучение для понимания аксиоматики и возможностей системы, - пользователь-программист изучает и использует средства для обеспечения синтеза программы и системы входными и выходными данными, - системный программист использует вопросно-ответные системы для поиска необходимых сведений о запуске Интеллсист, - знаниевед присматривается к генератору вопросов от Интеллсист для определения подходящего ответа с целью увеличения объема знаний. Так или иначе, каждый пользователь выставляет требования к языкам диалога, которые в большей части очевидны: - понятность для человека-пользователя, - понятность для инструментария или Интеллсист, - сохранение традиций при формировании средств диалога, - обеспечение автоматического поиска ошибок, - наличие средств самообучения для любого пользователя, - обеспечение чувства удовлетворенности у пользователя. Основной ассортимент работ и подработ включает использование курсора, клавиш и мыши, текстов из заголовка и полей данных, продолжение на следующем листе, применение графа сценария и меню, наличие списка услуг. В распоряжении пользователя имеются словари, подсказки, разъяснения, шаблоны, предложения выполнить что-то, предупреждения о возможных коллизиях, направления и рекомендации работ «вернуться или продолжить» и др. Некоторые конкретные работы из меню требуют прерываний для набора или передачи параметров. ИИС является диалоговой, поэтому передача большей части параметров осуществляется через экран или через дискеты. Такие особенности должны учитываться в первую очередь. Список работ и подработ выстраивается в дерево. Графическое представление дерева является технически сложной работой ее представления и малой обозримостью. Будет использована многоступенчатая нумерация. Первое слева направо целое число обозначает работы первого уровня, второе число - второго уровня и т.д. В реализации дерево служит основой для построения языка меню работ. Существует некоторый набор методов или способов описания меню при проектировании и разработке (программ): 1. Описание меню на ЕЯ, которое должно быть ясным при первом знакомстве с возможностями манипулирования работами в системе. Метод предназначен для знакомства пользователя или для предписания исполнителю (или разработчику) меню на ВМ. Правда, такой метод потребует больших текстов и приведет к многим неясностям в той части, которая увязывает отдельные подработы между собой. Значительное число операций с окнами уже определены в программах построения меню. Этот способ использован в настоящей главе. 2. Второй способ может оказаться точным и готовым для реализации. Его сущность состоит в использовании понятия ГЯ, в котором каждой вершине соответствует работа, а дуге - кнопка или пиктограмма, которые инициируют инцидентную дуге работу. Для реализации способа можно воспользоваться содержанием гл.5 и техническими средствами Интеллсист в разделе «Языки Интеллсист». 3. Третий способ характеризуется своим терминологическим словарем тех понятий, которые представляют работы или переходы от одной работы к другой. Понятия целесообразно строить иерархически через метапонятия. Иерархия понятий соответствует членению работ на подработы. 4. Четвертый способ связан с третьим, поскольку его сущность состоит в построении нумерованной иерархия, причем номера каждого пункта назначаются в форме последовательности целых чисел, разделенных точкой. Нумерация пунктов меню аналогична нумерации разделов в данной книге. Частично этот способ использован здесь. 5. Пятый способ описания меню связан с ФЯ. Примерами описания меню являются формальные языки турбо VISION в Паскале [Фаронов92] или в Дельфи [Основы96], ФЯ VIP в Галактике [Атлантис] и в некоторых других системах. Этот способ предназначен для программистов из числа профессиональных пользователей ВМ. Каждый ФЯ сопровождается транслятором, с помощью которого строится программа работы по меню. 6. Для пользователя меню обычно показывается в картинках или окнах так, как построены все учебные пособия и руководства. Меню в таком случае описывается функционально и наглядно для ускоренного обучения работе в системе. Большинство руководств по программным системам (см. например, [Красилов99б]) написаны с помощью такого способа, они обеспечивают интенсивное обучение пользователя для работы в системе. 7. Как обычно седьмой пункт перечисления способов завершается указанием того, что все способы могут использоваться совместно, они образуют систему средств проектирования программ общения в системе человек-ВМ. Воспользуемся седьмым способом описания меню, а остальные методы будут продемонстрированы либо здесь в т.2, либо в руководствах по Интеллсист. Первый способ пронизывает все описание языка меню. Остальные способы используется частично, поскольку необходима иллюстрация каждого метода. Пользователь может сам построить меню для своей СП, применяя БЗ «Интерфейс». 3.2. Основные работы в меню Интеллсист Поскольку сущность меню заключена в обучении пользователя и использование им работ, следовательно, меню связано со знаниями, то целесообразно еще раз перечислить способы представления меню в рамках определения информатики. В соответствии с принятым подходом классификации знаний имеется семь методически перечисленных выше способов представления меню (повторимся): 1. Описательное представление говорит о видах и типах работ системы и о самих работах с указанием иерархии или подчинения. 2. Использование синтаксиса и семантики языка меню для передачи его системе в качестве основы автоматического построения интерфейса человек-ВМ. 3. Перечисление концепций и определений позиций меню и работ каждой позиции также составляет способ формирования меню. 4. Массив ступенчато перенумерованных позиций работ и подработ системы составит еще одну форму описания меню. 5. Формальное описание меню делается так, как описано в [Атлантис] и в WINDOWS. Это описание процедурными (прикладными) аксиомами сразу пригодно для трансляции и построения рабочих программ реализации меню. 6. Алгоритмы выбора работ и подработ в совокупности составляют форму описания меню для реализации. 7. Представление меню в форме дерева (возможно с локальными циклами) с использованием элементов шести предыдущих способов является последним и самым продуктивным методом описания меню. Реализованный в ИИС и Интеллсист язык меню именуется языком меню для ИП. Работа Интеллсист начинается с общей заставки, где перечислены 7 основных разделов (не считая выход из системы при завершении всех требуемых работ и подработ). Каждый раздел представлен ниже как корневой или головной. Состав главных работ каждого раздела представлен ниже. 1. Формирование структуры Интеллсист. В этом разделе выполняются следующие работы: задание пользователем параметров, форматов и режимов для выполнения работ; выбор класса проблем для разрешения; выбор или назначение формы заданий, формы отчета, реализации Интеллсист и БЗ. Сюда, в частности, относятся: - работы по языку Лейбниц - определение общих параметров и данных языка, - задание структуры памяти системы управления БЗ (СУБЗ) и БД (СУБД), связанное с инициализацией, - формирования основного (или стандартного) лексикона и основной (фундаментальной) БЗ каждой отрасли знаний, - настройка системы на требуемый профессионализм, - выбор способа задания запросов и форматов выдачи результатов. Последнюю работу выполняет системный программист, настраивающий Интеллсист на конкретное применение. Начальная инсталляция программ делается при ее запуске. 2. Языки Интеллсист по направлениям их использования. Они предназначены для задания или расширения ЯПП, языка описания распознающих графов языков, метаязыка порождающих языков, языка Лейбниц, языков шаблонов и анкет и языков для результатов и оформления отчетов по результатам решения заданий. Записи на языках транслируются и отлаживаются, подготавливая работу пользователя в конкретных условиях использования Интеллсист для обработки семантического знания. Работу выполняют системный программист, лингвист-математик или знаниевед. 3. Формирование лексиконов из понятий предметной и проблемной областей. Построение (генерация) лексикона (первая фаза ИП), составление словарей из терминов как стандартных, так и из начального анализа текстов, исследование текстов (анализ терминов из текста методом корреляционного анализа текстов по смыслу) и статистика текстов, перекачка терминов в БЗ с характеристиками. Работу выполняют лингвист, знаниевед или пользователь. 4. Работа с библиотекой данных и знаний. Формирование и использование картотек и библиотек для тиражирования, объединения (компиляция), выбора области знаний или ее создание по имеющимся знаниям. Работу выполняют системный программист или знаниевед-библиотекарь, а также пользователь для собственных нужд (домашняя библиотека). 5. Генерация БЗ по заданию заказчика на знание. Обучение Интеллсист знаниям (генерация БЗ - вторая фаза ИП), отладка, тестирование, верификация знаний (экология знаний). Работу выполняют знаниевед или специалист в данной области знаний. 6. Работа с Интеллсист по запросам. Задание запроса пользователем для решения конкретных задач, поиска ответа на вопрос или разрешения проблемы, построение ответов на вопросы Интеллсист, анализ результатов решения (с печатью итогов). Работу выполняет конечный пользователь при консультации знаниеведа, если возникают трудности идентификации или управления результатами. 7. Выбор или построение Интеллсист. Адаптация имеющихся Интеллсист, выбор (инсталляция) из библиотеки и построение лексиконов, БЗ и реализаций Интеллсист. Работы выполняют конечный пользователь или системный программист. 8. Выход из системы. Традиционно предусматриваемая в любой программной системе работа. Выходу может предшествовать анализ статистических данных или операции сохранения накопленного материала в процессе работы Интеллсист или со знаниями. Корневые работы каждого раздела подразделяются на подработы, которые обычно имеются в меню для трансляции, отладки текстов записей на ЯПП и создания документов по результатам трансляции и решения задачи. Например, выдача статистики предусматривает печать на экране информации о числе слов по терминам, словам, их характеристикам. Конечно, целесообразно использовать накопленный опыт построения меню в широко распространенных системах решения заданий. Например, важны такие ориентиры как выбор назначения функциональных клавиш. Стандартные системные или горячие клавиши перечислены в таблице. Клавиша Рабочий режим Комментарий F1 Shift-F1 F2 Shift-F2 F3 F4 Сtrl-F4 Alt-F4 F5 Alt-F5 F5 Shift-F5 Alt-F5 F6 Shift-F6 Ctrl-F6 Shift-Ctrl-F6 Alt-F6 F7 Alt-F7 F8 Ctrl-F8 F9 Alt-F9 Ctrl+F9 F10 Shift-F10 Alt-F10 F11 Alt-F11 F12 Alt-F12 Сtrl-ESC Alt-TAB Shift-Alt-TAB Esc Enter контекстная справка контекстная справка элементов диалога или вход в режим указующей справки Сохранить файл Добавить результат к файлу Открыть файл До курсора Закрыть окно документа Закрыть окно Запомнить позицию Восстановить позицию/ Развернуть окно Распахнуть или восстановить окно Развернуть окно Свертка окна Переместить окно Изменить размеры окна Следующее окно Предыдущее окно Переключение главного окна на подчиненное окно По строчке По абзацу Точка прерывания Трансляция (Отладка, Решение) Запустить компилятор Исполнить программу (запуск компилятора - если нет нужного файла программы) Вход в меню раздела Вход в контекстное меню Вход в главное меню Вход в данные БЗ Вход в БД СУБД Открыть Лексикон Открыть Словарь Меню Windows Следующее главное окно Предыдущее главное окно Выход: на уровень выше Исполнить меню Добавить и сохранить сохранить копия-печать меню сохранить построить решение синтез программы кнопку наготове Использование клавиш в режимах выполнения работ и редактирования текстов: Клавиша Рабочий режим Комментарий Ctrl-P Ctrl-Ins Shift-Ins Shift-Del Ctrl-F Ctrl-R Печать Копировать Вставить Вырезать Найти Заменить Ctrl-A Ctrl-TAB Shift-Ctrl-TAB Alt-ESC Shift-Alt-ESC Возможно Altцифра Выделить все Следующее окно Предыдущее окно Следующее главное окно Предыдущее главное окно Быстрый переход в нужный раздел меню сохранить выход Движение курсора на экране осуществляется стрелками: вперед - назад - вверх - вниз - Система меню предусматривает показ даты, времени и кодировок символов - всех вспомогательных работ, которые предусмотрены системой WINDOWS. Важны также некоторые соглашения. В каждом разделе предусматриваются подработы с файлами, которые имеют общепринятые подработы следующих уровней меню: вызвать и открыть файл, сохранить данный файл (возможно с переименованием) или все файлы, находящиеся в работе, или создать новый файл для знаний, запроса (задачи, вопроса или проблемы) или для текста результатов. Основной способ работы - одна кнопка мыши, всегда имеется работа по умолчанию, всегда работает F1 по видам: код знака, определение термина, расшифровка ошибки (сообщения) и пояснения, общие сведения по системе и ее возможностям, словари, демонстрация работы фрагмента системы. В каждом разделе предусматриваются сервисные и справочные подработы. Их наполнение аналогично большинству инструментальных систем. Для работы в системе необходимо вызвать файл или создать новый файл для знаний, запроса (задачи, вопроса или проблемы) или для текста результатов. Предусмотрены стандарты в обозначениях имен файлов, в которых после выбранного имени указывается имя расширения, они приведены в Приложении 14. Стандарт используется либо автоматически, либо по «велению» системного программиста, либо самим пользователем. ИИС осуществляет проверку полномочий пользователя перед входом в Интеллсист и после инициализации инструментария. Для иллюстрации общности принятого в Интеллсист меню с меню широко известных систем рассмотрим некоторые примеры подработ. Всего инструментарий насчитывает более 250 подработ. 3.2.1. Работа с файлами. Работы с файлами должны быть в каждом корневом разделе. Список подработ приведен ниже. Он является классическим и реализован во многих системах. Перечень подработ таков: 1. Создать новый файл с указанным расширением. 2. Вызвать файл по выбранному пути. Открыть - частично заполненный файл вызывается для продолжения работ с Интеллсист. 3. Закрыть указанный файл. 4. Сохранить указанный файл. (Сохраните текст будущего разбора.) 5. Сохранить указанный файл с новым задаваемым именем. 6. Сохранить все указанные файлы. Если накоплены несколько файлов, то измененные файлы сохраняются все. 7. Предварительный просмотр файла перед печатью. 8. Печать содержимого файла. Для сохранения твердой копии лексикона его можно напечатать на бумаге или сохранить на диске. 9. Показ текущих файлов, 10. Выход в главное меню, 11. Выход из Интеллсист. 3.2.2. Справочная служба. Любая Интеллсист (как вообще любая программа) сопровождается средствами информирования пользователя о работах в системе, о накопленном материале (слова, термины, знания), о порядке работ. 1. Искать необходимую справку по содержанию. 2. Искать необходимую справку по ключевым фразам. 3. Искать необходимую справку по всем фразам (с построением необходимой базы слов при первом вызове). 4. Включать/выключать режим справки по указателю. 5. Получить сведения о продукте. Справочная служба позволяет разрешать вопросы пользователя по работе в Интеллсист. Особое место занимает процедура помощи пользователю по пиктограмме «?». 3.2.3. Сервис Интеллсист. Сервис является неотъемлемой частью любой информационной системы. Он содержит проверку орфографии (по лексикону) и грамматики по СеГ, называемую терминографией, индикацию словарей и терминов, рассматривать карточки библиотеки и статистику, устанавливать параметры работы в данном сеансе. Каждая конкретная помощь пользователю кратко поясняется следующим образом: проверка орфографии (по лексикону) - соответствие использования терминов их характеристикам и значениями, проверка грамматики по СеГ - соответствие использования композиций терминов правилам формирования фраз и абзацев, индикация словарей для ручной проверки знаний или заимствование слов и терминов из словарей при составлении текстов знаний или запросов, статистика по различным разделам Интеллсист, ее работы, исходным и выходным данным (текстам, массивам, таблицам и др.). 3.2.4. Параметры Интерфейса. К параметрам относятся следующее: вид интерфейса, общие свойства интерфейса, управление сохранением документов, обзор каталогов, управление доступом в систему, выбор шрифтов, выбор цвета шрифтов, управление правописанием. Это краткий перечень работ, которые поясняются в руководствах конкретных версий. 3.2.5. Статистика Интеллсист. Статистика по системе и ее работе подключается из сервиса. Вызов статистики по разделам (после равенства должны стоять конкретные данные по конкретному запросу пользователя): по материалу текстов (файлы с расширением .txt): Число слов по буквам = Число терминов заданной длины = Число использования терминов в тексте по работе МЛВ: Размеры вывода = Число применений правил = Быстродействие логического вывода в ЛИПСах = по содержимому Интеллсист (его файлов) Размеры системы = Используемая память = Размер свободной памяти = по содержимому БД (по таблицам - из СУБД) Размеры баз данных = Размеры таблицы = по содержимому БЗ Размеры базы знаний = по лексикону Размеры лексикона или число терминов = Размеры словаря = Число синонимов = Число стандартных слов = Число терминов по сортам = Число терминов по типам = Размеры всех комментариев = по набираемому материалу (знания и запрос) Размеры лексикона запроса = Размеры словаря запроса = Число синонимов = по результату Размеры результата = по библиотеке Число карточек = Число карточек по разделам = Статистические данные по решению задачи, вопроса или проблемы полезны для оценки сложности запроса. 3.2.6. Настройка Интеллсист. К настройке системы такие параметры или работы: настройка на проблему, настройка ресурсов, выбор СУБД, создание журнала санкционированного доступа. Опять, краткий перечень работ, которые поясняются в руководствах конкретных версий. 3.2.7. Вхождение пользователя в Интеллсист. Каждая программная система предусматривает защиту от несанкционированного применения или исследования. Это обычно осуществляется идентификацией пользователя по имени и паролю. Имеются и другие способы защиты программ и данных. 3.3. Иерархия работ и подработ Пользователь работает с Интеллсист в соответствии с интерфейсом, построенным по правилам Windows. Основные виды работ перечислены выше. А ниже содержательно перечислены основные разделы подработ. Эти разделы определяют общие цели работ с Интеллсист, которые могут выполняться в любом порядке. Само перечисление устанавливает только общую канву для порядка выполняемых действий. Данный ниже список основных подработ пользователя согласуется со списком подработ меню. 1. Установка и инициализация Интеллсист. 2. Определение предметной области. Предметная область - набор совокупностей имен и данных, которые являются или будут являться именами и значениями для фактов. В этом разделе определяются множества данных (типы), новые термины понятий и синонимы ранее введенных терминов. 3. Определение проблемной области. Интеллектуальное исследование связано с операциями (функциями и процедурами для моделирования), которые вводит или использует пользователь. К ним относятся операции над данными, правила подстановки, масштабы, преобразования. 4. Определение области библиотечных данных и знаний. Накопление разделов данных, знаний или систем способствует сохранению отработанных (точных) знаний и атрибутов их использования, а также для создания композиций из элементов библиотеки. 5. Определение области знаний. К области знания относятся фразы знания (основная информация) в соответствии с ЯПП, исключения, которые при инициализации в процессе логического вывода решений логического уравнения вызывают дополнительное знание, и прагмы для указания системе характеристик ее работы. 6. Определение области запросов. Запросы могут быть представлены в форме вопроса, задачи или проблемы (фразы на ЯПП). При этом сама система классифицирует запросы по классам задач и, после получения решения, указывает на сорт запроса. Исключение составляет класс запросов на запоминание логического вывода. Его необходимо инициализировать по меню работ. 7. Определение области систем. Перед началом работы допускается вызов Интеллсист вместе с ее писанием и инициализацией. Если что-нибудь забыто, то можно запустить пример показа работы по формированию системы, структуры БЗ, Интеллсист и библиотеки. 3.3.1. Формирование структуры Интеллсист. Первая ведущая работа - это задание параметров, режимов, исходных утверждений и структуры памяти СУБЗ. Формирование структуры Интеллсист в большинстве случаев не обязательно, работает принцип «формирование по умолчанию». Эта работа требует от пользователя определенной квалификации. Перед началом работы допускается вызов Интеллсист вместе с ее описанием и инициализацией. Начальная инсталляция программ делается при запуске. Вызов образов и установка параметров систем необходима перед началом работ, если система не установлена ранее и если не принят принцип «по умолчанию». Инициализация БЗ и Интеллсист осуществляется для установки начальных параметров данных и программ (или по умолчанию). Инсталляция из библиотеки состоит из организации каталога, введения формата карточки и создания файлов. При отсутствии библиотек необходимо задать имена и параметры хранилища картотеки и содержимого полок библиотеки. Работы по созданию рабочей структуры Интеллсист включают следующие разделы. 1. Настройка на проблему. Имеется семь классов проблем, на которые необходимо настроиться. Настройку можно игнорировать, так как всегда действует принцип выполнения настройки по умолчанию. Более того, формулировка запроса обычно не предсказывает класс проблемы, которая должна быть разрешена. Решая одну проблему (по впечатлению пользователя) можно получить ответ на решение другой проблемы. Кажущееся доказательство теоремы (проблема 1) может привести к выводу условий того, что утверждение будет теоремой (проблема 2). Однако, после испытания своих запросов пользователь может точно установить требуемый класс проблем и осуществить настройку Интеллсист на этот класс. Процедуру определения класса проблем можно условно именовать отладкой параметров класса запросов и соответствующего класса проблем. Первый класс проблем - проверка утверждений - подразумевает возможное задание фраз для индикации их после установления истинности запроса-утверждения. Если Интеллсист логически вывел истину для запроса, или доказана теорема, то в результате будет печататься введенная при настройке фраза истины, если логически выводится ложь, то будет печататься другая фраза, также введенная при настройке. Заказ фраз для печати полезет во многих случаях, поскольку результат логического вывода поступает на дальнейшую обработку, он должен быть согласован с такой обработкой. Предусмотрены тексты для такой печати по умолчанию. Второй класс проблем - определение условий истинности утверждений - требует указаний формализма для представления результатов. Имеется несколько вариантов оформления результатов логического вывода: оставить без изменений результат (перечисление через запятую совместных фактов каждой альтернативы, перечисление через точку с запятой альтернатив, завершение записи результата точкой), свернуть результат в формулу или утверждение (построение единого текста без перечисления), исключить из результата печать исходных фактов (известные факты повторить важно для идентификации или привязки новых фактов), результаты выдавать словами (заменить знаки их синонимами). Такие рекомендации полезны для показа результатов в форме, близкой к естественной. Третий класс проблем - определение понятий - при настройке интерфейс может предусматривать задание режимов выдачи результатов в естественной форме определения понятия, выдачи характеристик понятий, которые доопределились в процессе логического вывода, выдать результат в виде выражения. Каждое понятие может либо определиться - это цель запроса, либо доопределиться, если тип значений понятия (или некоторые атрибуты типа) был абстрактным (неопределенным). Четвертый класс проблем - информационный поиск - связан с вызовом подсистем поиска сообщений по ключевым словам или по смыслу запроса. Рассмотрение введенных или полученных таблиц осуществляется либо с помощью используемой СУБД, либо по печати результатов. При настройке необходимо указать имя СУБД или подсистемы поиска сообщений. Пятый особенный класс проблем - определение планов - связан с поиском последовательностей применений правил логического вывода, только заданных пользователем. Встроенные правила связаны с внутренними планами Интеллсист, они не представляют интереса для пользователя, так как они выполняют формальные действия, только косвенно связанные с его запросами. Список примененных правил может быть емким, тогда возникнет проблема его восприятия. Настройка предусматривает задание указания о том, что результаты должны быть представлены графически, например, с циклами (сокращение повторов имен правил в списке). Шестой класс проблем - построение или синтез программы - связан с настройкой системы через набор ряда атрибутов: язык программирования, для чего выделены объектные языки Паскаль, Си++, Ада и язык Ассемблера, вызов программы компилятора (с параметрами), выбор размера дробления текста программы на блоки (например, по 64К), выбор поведения программ при возникновении стандартных исключительных ситуаций (указание «контролировать - не контролировать»), выдача схемы, или текста, или текста и схемы готовой программы. Седьмой класс проблем - информационный синтез системы - настраивается на выдачу результатов: текстами (по умолчанию), схемами с пиктограммами для понятий (выбор пиктограмм пользователем для указанных им терминов) с текстами в фигурах (выбор пользователем фигур для элементов схемы), ссылками на тексты из фигур (выбор пользователем фигур для элементов схемы), а также раздельно схемами и пояснительными текстами. 2. Создание формы заданий. Имеется три формы запросов: текстовая форма (по умолчанию), шаблоны и анкеты. Указание на текст необходимо для перехода от шаблонов и анкет к текстовому набору запроса. Имеется три режима решения запроса: обычный, когда запрос вводит сам пользователь, анкета и шаблон, когда запрос составляется знаниеведом в форме анкеты или шаблона соответственно, а пользователь только заполняет их и решает задание. Анкета формируется из понятий (вопросная часть анкеты), выбираемых из лексикона. Если выбирается метапонятие, то в анкету переписываются все понятия данного метапонятия (с раскрытием рекурсии метапонятий). Каждое понятие сопровождается или не сопровождается пользователем своим значением в строчке, где помещено понятие. Заполненная анкета либо передается в запрос (обычный режим), либо передается на решение (режим анкеты). Каждый пункт анкеты может сопровождаться подсказками или образцами заполнения. Подсказки создаются автором анкеты. Шаблон формируется из текстов в двух формах. Первая форма составляет запрос с окнами, она пишется на языке Лейбниц, вторая форма составляет фрагменты запросов, которые могут использоваться в реальных запросах, она также составляется из текста на ЯПП. В текстах шаблона первой формы имеются окна, показанные символом вопроса и заполняемые пользователем. Заполненный шаблон целиком или по частям передается в запрос для выполнения. Обычный режим допускает вставку одной или нескольких анкет или шаблонов в тексты запроса. Анкета и шаблон могут быть заполненными заведомо и сохранены в библиотеке, тогда они без изменений вставляются в тексты запросов. Более того, весь запрос может быть составлен или скомпилированным из одних анкет и шаблонов. 3. Выбор формы отчетов. По результатам логического вывода по запросу печатается окончательный результат либо в форме текста (по умолчанию), либо по заведомо составленному шаблону, либо с помощью ФЯ. В некоторых случаях результатами являются заполненные таблицы, они могут печататься с помощью программ СУБД. 4. Настройка на СУБД и БЗ. Если необходима работа с таблицами, то система должна настраиваться на имеющуюся СУБД. Выбор СУБД за пользователем. Интеллсист может быть настроена на имеющиеся БЗ, если они не противоречат друг другу. Заказ СУБД и БЗ для пользователя не обязательны, он может ориентироваться на свои силы и знания. 5. Выбор конкретной реализации Интеллсист. Если различные настроенные на применение реализации Интеллсист содержатся в библиотеке, то вызов одной из них не потребует настройки. Она будет готова для решения задач. Для этого всегда можно сохранить версию, вариант или редакцию Интеллсист в библиотеке. 6. Настройка на системы программирования. Если поставлена цель создания программы (или подпрограммы для библиотеки программ), то систему необходимо настроить на объектный язык программирования. Ими могут быть Паскаль, Си, Ада или язык ассемблера. 7. Установка параметров, путей и режимов работ, а также цвета, шрифтов, также является доступной пользователю работой. Их выполнение обеспечит хорошее представление данных, программ и результатов. Подробное описание работ и подработ можно либо понять интуитивно, либо посмотреть по руководству пользователю. 3.3.2. Работа с языками в Интеллсист. Интеллсист допускает работы по формированию и использованию ФЯ для создания генераторов, анализаторов и трансляторов текстов, расширения ЯПП под нужды пользователя. Работа с ФЯ является специальной, ориентированной на системного программиста или знаниеведа, хотя после приобретении некоторых навыков каждый пользователь сможет применять перечисленные ниже подработы. Работа с языками - задание текстов формализма ЯПП и ФЯ - связана с построением графа распознающей грамматики, построением порождающей грамматики и таблиц символов. Построение текстов ЯПП может потребовать перехода к работе по формированию лексикона, так как термины ФЯ могут быть использованы при формировании запросов и при передаче знаний через СУБЗ. Вторая работа сложна тем, что она может вызвать побочные работы по разработке некоторых семантических подпрограмм преобразования текстов в структуры представления знаний в СУБЗ. 1. Языки. Этот вид знания (грамматики различных форм) необходим для многих целей. Главные из них - это порождение текстов конкретного языка и распознавание принадлежности текста конкретному языку. Грамматика ЯПП также является объектом изучения в форме расширения изобразительных средств и методов разбора новых лексем и термаций из ЕЯ. Имеются специальные языки для разработки сценариев технологии или диалогов с Интеллсист - все они являются носителями знаний, которые целесообразнее всего представлять именно через обе формы грамматик. Меню Интеллсист предусматривает некоторые работы по вводу текстов семантических знаний. Рассмотрим работы по вводу таких знаний. 2. Порождающие грамматики. В основе ввода порождающих грамматик использован метаязык Марков. Окна меню подскажут формы и составы сведений, которые отражают грамматику. В процессе набора правил грамматики создаются словари символов и метапонятий, с помощью которых можно облегчить набор очередных правил или осуществить контроль над правильностью набора. Работа с порождающими грамматиками связана с заданием в соответствии с языком Марков формального описания требуемого языка, параметров генерации текстов, запуском программ генерации и оформлением результатов генерации. 3. Распознающие грамматики. В основе ввода распознающих грамматик использован язык графов языка (см. гл.5). Также окна меню подскажут формы и составы сведений, которые отражают грамматику. Для подсказки можно использовать набор (в окне) символов ASCII. Работа с распознающими грамматиками также связана с заданием графа языка, генерацией анализатора текстов, исходного текста для анализа, запуском анализатора и оформлением результатов трансляции. 4. Уточнение ЯПП. СеГ непрерывно пополняется своим словарным и понятийным запасом. По-видимому, процедура пополнения беспредельна. Поэтому инструментарий Интеллсист обеспечивает расширение словарного запаса ЯПП. Работы по уточнению ЯПП связаны с заданием новых терминов общего назначения. 5. Язык пути логического вывода. Формирование языка пути логического вывода связано с заданием определений понятий и печатью этих определений в качестве итогов работы Интеллсист в форме, пригодном для обеспечения читаемости пути логического вывода. Путем-результатом является план поиска пути в «лаберинте». 6. Сценарий работы с Интеллсист. Если все работы с Интеллсист в ее конкретном применении рутинны, то целесообразно однажды запомнить последовательность действий, представить ее в определенной форме и следовать по «запланированному» маршруту. Языки сценариев для работы инструментария включают подработы по созданию последовательности применения класса Интеллсист к запросам, а для работы Интеллсист – к технологии работы пользователя с системой. Построение композиции Интеллсист (ее можно именовать интеллектуальное макропрограммирование) и сокращение числа нажатий на клавиши - это пути повышения производительности пользователя. Сценарий состоит из отметок последовательности обращений к некоторым Интеллсист с некоторыми запросами или к подработам самой Интеллсист. 7. Языки запросов в информационном поиске по таблицам определяются подключенными к инструментарию подсистемам поиска и СУБД. Языки спецификации систем задают фигуры для некоторых терминов и связей их с другими понятиями, а также терминов-функций, которые связаны с фигурами или связями. Языком запросов являются тексты, составленные по правилам СеГ. 3.3.3. Формирование лексикона. Работа содержит подработы построения (генерации) лексикона. При наборе элементов лексикона создаются словари из слов и терминов. До набора элементов лексикона рекомендуется провести анализ текстов, при котором создаются претенденты на термины. Работа по анализу текстов именуется сборкой. Исследование текстов сопровождается набором статистики слов и терминов. Из получаемых таблиц терминов можно осуществлять передачу отдельных терминов в окна набора терминов, приписав им требуемые характеристики. Работы выполняют обычно лингвист, знаниевед или пользователь. Термины понятий добавляются в лексикон из: чернового наброска лексикона, полученного после сборки, файла стандартных терминов (встроенный словарь), фундаментальных БЗ (по заказу пользователя), БЗ конкретных предметных и проблемных областей (по конкретной специальности), областей знаний самого пользователя (при наборе личного лексикона), запросов пользователя и автоматически в процессе работы Интеллсист из рабочих терминов, скрытых от пользователя, и других лексиконов. Набираемые тексты запросов можно редактировать, если обнаружены какие-либо ошибки или при изменении содержания запроса. При редактировании следует помнить о сохранении БЗ, если реализуется накопление знаний, о повторной трансляции набираемого текста. Перед трансляцией необходимо восстанавливать БЗ из того или иного файла. Выбор файла с БЗ ложится на пользователя. Следует обратить особое внимание на ручную и автоматическую сборку терминов. Термины выбираются вручную по тексту (выделение цветом), из вызываемого терминологического словаря или с помощью вызываемого словаря из слов (напрямую или по прецеденту). Причем термины могут заимствоваться из других приложений Интеллсист, из других областей знания. Для этого необходимо вести библиотеку лексиконов. Словари терминов могут создаваться автоматически в разделе «Сборка». Автоматическое создание словарей может соединяться с многократным прогоном текстов знаний или запросов через транслятор. При каждом запуске транслятора необходимо сохранять полученную БЗ или восстанавливать БЗ от предыдущего сохранения. По мере обнаружения ошибок либо в словари вносятся новые термины, либо последовательно редактируется весь текст. Наиболее частыми ошибками являются две: не описан термин или термин описан дважды. Редактирование может быть связано с исключением избыточного текста или его фрагментов (это бывает чаще всего). Тексты знаний могут отсутствовать, тогда предстоит большая ручная работа либо по его созданию, либо по набору терминов лексикона. Метод накопления словарей важен при такой работе. Исключением будет работа на основе стандартных встроенных словарей или при использовании фундаментальных знаний. Термин можно ввести вручную с клавиатуры независимо от некоторого текста, и, снабдив его характеристиками (в оконной технологии), передать в лексикон. Термин можно передать в словарь без характеристики. Набор терминов предполагает тщательного анализа слов для реализации выделения базы и конца слова, если его окончание не влияет на смысл термина. Важным обстоятельством является классификация терминов на ведущие (идентификаторы) и синонимы. Во-первых, нужно быть уверенным, что термин является синонимом, а не идентификатором понятия. Во-вторых, какой термин из набора следует считать идентификатором. Конечно, самым важным является комбинация методов и способов создания лексикона. Любой подход годится, если он ведет к быстрому созданию важной части БЗ - лексикона. Технология здесь может быть самая разнообразная, например зафиксированная как результат многоразовой сложившейся работы. Формализм записи лексикона не пригодится, если набор его осуществляется по меню. Главной работой при создании лексикона является работа с окнами, которые подсказывают пути перехода от одного режима к другому. Оконный набор генерирует текст знаний или запроса в выделенном файле с показом на экране дисплея. При печати или показе набор терминов из слов и знаков, помещается между знаками ~ (~возможн_о +~) с выделением у слов основы и конца, которые отделяются подчеркиванием (_). По основе слова осуществляется идентификация слова, конец слова служит для грамматической вариации слова. Из лексикона можно выбрать термин и просмотреть его наполнение. Из словаря можно выбрать подходящее слово или просмотреть его заполнение. Для анализа понятия можно просмотреть его характеристику по терминологическому словарю. Можно вызвать все синонимы данного понятия. Автономно могут проводиться работы по просмотру словарей. При этом над словарем терминов можно произвести ряд операций: упорядочивание по алфавиту (упорядоченный лексикон легче просматривать в алфавитном порядке), упорядочивание по датам (упорядоченный лексикон можно просматривать в историческом порядке), исключение термина (ошибочный или устаревший термин можно исключить из лексикона до окончательного формирования БЗ). Из словарей можно сделать выборку по отдельным признакам. По терминологическому словарю можно осуществить поиск по термину, слову, знаку; можно найти синонимы термина. Поиск может быть контрольным, ознакомительным или подсказывающим. Тексты можно формировать из слов или терминов Для каждого термина можно ввести определение, начальное значение, свойство быть константой (=) или переменной величиной (:=), определить тип для понятия. Тип определяет множество значений для понятия, которому предписан этот тип. Имеются стандартные типы и способы построения новых типов. 3.3.4.Работы с библиотекой. Работа с библиотекой должна моделировать известную работу в любой из известных пользователю районных, городских или республиканских библиотек с книгами или документами. Конечно же, имеются и отличия машинных и известных библиотек. Наполнение машинной библиотеки составляют файлы, которые при использовании копируются, а не изымаются. Кроме этого, машинная библиотека состоит из стандартных разделов: 1. таблицы символов и шрифтов (БС) - файлы, содержащие различные таблицы символов или их представления, которые используются в различных частях Интеллсист, к таблицам относятся наборы пиктограмм или графических объектов; 2. языки различного назначения (БЯ) - файлы, содержащие машинные представления порождающих или распознающих грамматик, построенных для работы Интеллсист при решении лингвистических заданий; 3. лексиконы (БЛ) - файлы, содержащие словари из слов или терминов и предназначенных для построения лексиконов, которые также могут содержаться в этом разделе; 4. БД - файлы, содержащие различные накопители данных или результатов (исходных или новых фактов), массивы, таблицы или записи; 5. БЗ - файлы, содержащие знания из различных областей знания и представленные текстами, в кодах Интеллсист или на ФЯ Лейбниц; 6. база подпрограмм (БП) - файлы, содержащие различные подпрограммы или программные модули на исходном языке или в кодах и используемых при синтезе программ по своему назначению (например, при моделировании); 7. реализации Интеллсист (БИ) - файлы, содержащие различные версии и редакции программ Интеллсист и всей сопутствующей информации; 8. картотека (БК) - один или несколько файлов с наборами карточек, один файл является стандартным для данной библиотеки, а остальные содержатся для справки; 9. тексты документов (БТ) - файлы, содержащие различные текстовые документы по Интеллсист, черновики с текстами или с исходными знаниями, находящихся в работе. Рубрики составляются по отраслям знаний, по известной международной классификации. Здесь же осуществляется выбор карточки из файла, перебор карточек и вызов объекта поиска. Создателями библиотек являются авторы Интеллсист (исходный пакет), пользователь или библиотекарь (например, знаниевед). Библиотека может создаваться «от нуля» или автоматически пополняться через команды-операции меню. Исключение из библиотеки карточки или документа автоматически исключает документ или карточку соответственно. Справочным материалом по библиотеке служит картотека. Она записывается в один стандартный файл и состоит из отдельных карточек. Каждая карточка состоит из разделов: 1. название раздела библиотеки, 2. инвентарный номер - внутренняя нумерация карточек по порядку, 3. автор(ы) документа, 4. краткое название документа, 5. размер документа в Кб или б, 6. фирма-источник, 7. дата введения в библиотеку, 8. дата модификации, 9. дата последнего использования, 10. аннотация документа (возможно с УДК), 11. лицензия (номера) и может быть пуст, 12. версия документа, состоящая из четырех номеров по данному далее смыслу: 1фундаментальный, 2 -номер редакции, 3-месяц и 4-год выпуска, 13. доступ-путь к файлу (чтение-изменение-запись), 14. скрытый пароль автора, 15. имена пользователей, 16. скрытый пароль пользователей, 17. отметка о выборе материала, 18. указатель адреса в дереве. Работа с библиотекой включает следующие основные действия: ведение картотеки; удаление, замена или помещение в библиотеку; вызов документа по карточке; просмотр карточек и файлов; поиск документов в библиотеке; просмотр карточек и файлов; упорядочивание элементов раздела библиотеки по алфавиту или по предметам; статистическая обработка библиотечных данных; листование каталогов по разделам и просмотр карточек для поиска необходимого материала. После создания нового (или отредактированного) документа осуществляется пополнение библиотеки новыми поступлениями или формирование новой библиотеки. Наконец, последняя допустимая операция - печать итогов работы. Работа с библиотекой может закончиться фиксацией на твердом носителе нужных атрибутов или содержимого библиотеки. При этом осуществляется печать карточек или самого материала. 1. 2. 3. 4. 5. 6. 7. 8. 9. 3.3.5. Формирование БЗ. БЗ создается только квалифицированными специалистами. Это не значит, что остальные пользователи исключаются из работ по созданию БЗ. Через запросы можно создавать фрагменты БЗ или БЗ целиком. Передача таких БЗ для тиражирования становится весьма сложным делом, но пригодным для экспериментальных работ со знаниями. Ответственность создателя БЗ высока, поскольку эта работа подразумевает ИП класса задач, характеризующиеся тщательным подбором понятия, их терминов и характеристик, а также исходных соотношений понятий. Отличие БЗ, созданной в этом разделе библиотеки, от БЗ, созданной в разделе запросов, заключается в методах окончательного машинного оформления файлов со знаниями (упаковка и маркировка). Созданная в этом разделе библиотеки БЗ помещается вместе с карточкой. БЗ бывают встроенная, фундаментальная, по области знаний, пользовательская по запросам Работа с БЗ состоит из следующих подработ: ввод имеющейся БЗ (если файл создавался) и редактирование исходных знаний. Вызванный файл можно редактировать, используя управляющие клавиши или окна для выполнения команд: внести в БЗ тексты (новые знания, включая дополнительные знания из запросов), сохранить БЗ, определить условие остановки, указать условную трансляцию (с остановкой по условию), показать понятие (чтобы убедиться в правильности исправления ошибки) или посмотреть характеристики некоторых понятий. Для работы «с нуля» исследуется файл с книгой (или другой документацией), по которой можно автоматически составить словарь терминов. С помощью этого словаря и словаря из стандартных терминов, а также словаря из слов можно составлять тексты знаний, если знаний в книге недостаточно. Создается лексикон. Если БЗ уже создавалась, то вызывается файл с набросками БЗ и продолжается редактирование, при котором также можно воспользоваться словарями. Так или иначе, составленный текст знаний может транслироваться для выявления ошибок различного свойства. Эти процедуры можно назвать контрольными запусками или отладкой знаний. В процессе отладки можно обращаться к словарям из терминов или слов для исследования (или напоминания) их характеристик. Для ориентации по тексту можно реализовать поиск по тексту. Для введения новых терминов необходимо перейти в раздел «Лексикон» и пополнить или исправить состав лексикона, а затем вернуться в раздел БЗ для продолжения работ над БЗ. Для введения новых данных также необходимо перейти в раздел «Лексикон» и осуществить заполнение БЗ фактами. 3.3.6. Работа с запросами. Шестая работа - задание запроса пользователя - имеет отношение к пользователю. Эти работы и подработы должны обслужить пользователя Интеллсист по решению его проблем и заданий. Вначале вызывается новый файл для создания запроса или имеющийся файл для редактирования и выполнения запроса. Составлению запросов можно поучиться на готовых текстах, которые прилагаются как образцы в папке примеров. Шаблон может служить готовым запросом, который предварительно заполняется. Анкета также может служить готовым запросом, которая заполняется в правой колонке. Эта работа состоит из следующих подработ. 1. Редактирование исходных запросов связано с изменениями в имеющемся запросе, вставкой в запрос шаблона или анкеты, а также самостоятельная работа по анкете. 2. Ввод текстов и данных для решения задачи с помощью СП. 3. Разрешение запроса. Трансляция и отладка запросов состоит из запуска транслятора в режимах: по строчке, по абзацу или до курсору для точной локализации ошибок. Одновременно с трансляцией осуществляется предварительное решение или полное решение запроса. 4. Создать или выполнить СП. При этом реализуется исправление ошибок. Обязательным является сохранение состояния БЗ для возврата к продолжению работ при выходе на исправление информации или консультации. После получения решения осуществляется анализ результатов. Результаты логического вывода можно проанализировать или определить пути логического вывода решения. Если построена СП, то осуществляется запуск СП с интерфейсом запуска и ввод исходных данных. Решение, программа и результаты прогона СП печатаются в зависимости от желания пользователя. Решением может быть путь логического вывода. Здесь под печатью понимается выдача на экран или запись в файл. 5. По результатам можно реализовать вызов формы отчета и преобразование результата по форме. Конструирование языка запросов важно для определения формы самого запроса. Имеются стандартные формы: фраза (возможно с формулами), анкета или шаблон. Другие формы устанавливаются с помощью распознающих формальных грамматик и шаблонов для ответов. Запросы могут вводиться фразами ЯПП. Фразы формируются на ЯПП. Анкета состоит из вопросов и предполагаемых ответов пользователя или форм для ответов. Что найти определяет пользователь. Шаблонный запрос представлен в заданной форме с возможным заполнением пользователя окон необходимой информацией. 3.3.7. Формирование новой Интеллсист. Формирование Интеллсист предназначено для создания новых систем из имеющихся в библиотеке. Имеется шесть фундаментальных операций композиции двух и более Интеллсист. Эти операции рассмотрим подробнее. В связи с проблемой формирования Интеллсист интересен вопрос о создании БЗ, с помощью которой можно формировать программы Интеллсист по запросам пользователей (универсальная Интеллсист - одна из операций формирования). На этот вопрос нужно ответить утвердительно. Источником идеи формирования Интеллсист является фундаментальная книга по алгоритмике [Марков84], являющейся вторым переработанным изданием книги Маркова «Теория алгорифмов», выпущенной в 1954 году. Итак, рассмотрим операции над Интеллсист, которые совпадают с операциями формирования новых алгоритмов. При этом предполагается, что используется либо одна БЗ, либо несколько БЗ для некоторых предметных и проблемных областей. Излагаемые ниже операции образуют фактически язык проектирования систем. Расширение лексикона. Операция выполняется автоматически в случае введения новых понятий в запросе. Добавление понятий в лексикон не изменяет результата разрешения запросов, если понятия не совпадают по терминам или значениям в разных запросах. Эту операцию можно представить формально так. Пусть Л1 - обозначение исходного лексикона, Л2 - расширенного новыми понятиями, тогда ИНТЕЛЛСИСТ(Л1, запрос) = ИНТЕЛЛСИСТ(Л2, запрос), где ИНТЕЛЛСИСТ - программы Интеллсист с лексиконом Л, работающая над запросом «запрос» и логически выводящая результат ИНТЕЛЛСИСТ(Л, запрос), «запрос» - конкретный запрос, Л1 > Л2. Расширение лексикона создает новую систему. Причем лексикон может быть расширен в БЗ при ее пересмотре. Расширение БЗ может привести к нарушению равенства. Повторение. Операция выполняется по правилу, которое в прежних (см. выше) обозначениях можно представить так: ИНТЕЛЛСИСТ1(Л, запрос) = ИНТЕЛЛСИСТ(Л, ИНТЕЛЛСИСТ(Л, запрос)). Интеллсист с именем ИНТЕЛЛСИСТ применяется один раз к запросу «запрос» в лексиконе Л (или, вообще говоря, в БЗ), а второй раз - к запросу, который является результатом первого применения. Число повторений может быть произвольным, но конечным. Соединение. Операция применяется по правилу, которое можно в прежних обозначениях представить так: ИНТЕЛЛСИСТ1(Л, запрос) = ИНТЕЛЛСИСТ(Л, запрос1) ^ ИНТЕЛЛСИСТ(Л, запрос2). Интеллсист с именем ИНТЕЛЛСИСТ применяется один раз к запросу «запрос1» в лексиконе Л, второй раз к запросу «запрос2», а результаты соединяются в один общий результат. Число соединений может быть произвольным, но конечным. Ветвление. Некоторые Интеллсист являются распознавателями свойств запросов по такой схеме: если запрос обладает известным свойством, то результатом выполнения ИНТЕЛЛСИСТр(Л, запрос) будет истина, иначе - ложь. Запрос в таком случае является претендентом на звание теоремы или ложного высказывания. Такие распознаватели свойств запросов можно использовать для построения операции ветвления, которая формально может быть изображена так: ИНТЕЛЛСИСТ1(Л, запрос) = если ИНТЕЛЛСИСТр(Л, запрос), то ИНТЕЛЛСИСТ2(Л, запрос), иначе ИНТЕЛЛСИСТ3(Л, запрос). Результат новой Интеллсист равен результату применению ИНТЕЛЛСИСТ2 к запросу, если распознаватель вывел истину, или равен результату применению ИНТЕЛЛСИСТ3 в противном случае. Композиция. Эта операция напоминает операцию повторения, но использует различные Интеллсист. Формально операцию можно представить так: ИНТЕЛЛСИСТ3(Л, запрос) = ИНТЕЛЛСИСТ2(Л3, ИНТЕЛЛСИСТ1(Л2, запрос)). Последовательно применяются две Интеллсист, вначале применяется ИНТЕЛЛСИСТ1, а затем к результату ее применения применяется ИНТЕЛЛСИСТ2. Обе применяемые Интеллсист могут использовать различные лексиконы. Универсальная Интеллсист. Об этой операции сделана заметка вначале раздела. Формальная запись имеет вид: ИНТЕЛЛСИСТ(Л, запрос) = ИНТЕЛЛСИСТу(запись БЗ, запись запроса), где запись БЗ и запись запроса - описание БЗ (вместе с лексиконом) и запроса на некотором известном системе языке. Под БЗ понимается совокупность всех знаний относительно ИЛ, ЯПП, структуры памяти Интеллсист (внутреннее представление элементов БЗ) и др., что обеспечивает передачу всех сведений, которые потребовались при создании Интеллсист. Представленные шесть операций исчерпывают средства для построения алгоритма из Интеллсист. Их полнота может быть установлена аналогично тому, как это сделано в теории алгоритмов. Несмотря на простоту операций требуются определенные усилия для установления корректности представленных рассуждений. 3.3.8. Системные работы. Выход из системы по окончании работ осуществляется выполнением этой работы, или нажатием клавиши Esc, или нажатием двух клавиш Altx. Кроме выхода имеются средства для работы системных программистов (авторов систем) по развитию средств ИП (инструментарий, Интеллсист или БЗ). Эта часть скрыта от пользователя. БЗ - это информационная модель предметной и проблемной областей, она отражает свойства реального пользовательского мира и включает лексикон терминов понятий и их значений из БД. БЗ в ИП создаются проще, нежели наборы продукций для ЭС. 3.4. Проектирование работ для меню Создание меню для пользовательской программы осуществляется с помощью БЗ «Интерфейс». Синтез программы с помощью Интеллсист целесообразнее всего реализовывать после разработки интерфейса для связи пользователя программы непосредственно с программой. До применения БЗ «Интерфейс» необходимо разработать проект, в котором выделяется список работ, устанавливается порядок их выполнения и определяются алгоритмы самих работ. Интерфейс пользователя с программой обычно ориентирован на ввод исходных данных, представленных некоторым(и) видом(ами) знаний, показ или фиксация выходных данных и организацию циклической работы программы над варьируемыми исходными данными. Прежде чем приступать к созданию интерфейса, необходимо осознать язык или элементы языка общения с программой. Язык выражает такие компоненты работ: ввод начальных условий (или данных), которые определяют состав работ СП, представление о выходных данных, которые определяют итоги работы СП, общее представление об алгоритмах реализации решения задачи (вместе с промежуточными данными), преобразование исходных данных в конечные или выходные данные, коллектив исполнителей задачи, который организует работу программы, библиотека готовых продуктов - подпрограмм, находящихся в библиотеке. Ставится проблема - построить распределение усилий по созданию алгоритма реализации преобразования средствами БЗ и ЯПП и взаимодействия с проектируемой программой. Меню записывается одним из предложенных в разделе 3.2 способом, проверяется на корректность методом проведения «игр» и реализуется записями на ЯПП с использованием терминологии БЗ «Интерфейс». Затем осуществляется отладка, испытание, верификация и тестирование сконструированной программы с помощью Интеллсист и указанной БЗ. 3.5. Пиктографические меню Меню может реализовываться в форме оконной, пиктографической, кнопочной и анимационной техники с рисунками. Рассмотрим вторую форму. Управление работами может производиться путем указания мышью и нажатия клавиши. Каждая работа выбирается по меню или, если нужно короче, нажатием на выделенные кнопки. На современных ВМ имеется много форм исполнения меню. Здесь указаны только основные. Совокупность кнопок быстрого набора образует пиктографическое меню. Компьютерные игры предусматривают весьма красочные пиктограммы. Для работы с Интеллсист принят строгий режим использования кнопочных пиктограмм. 3.6. Общая характеристика других работ К другим относятся работы, которые допускает WINDOWS и другие имеющиеся системы. До обычного применения Интеллсист можно, а иногда целесообразно, войти в Редактор для создания текстового файла с набросками знаний или запросов, со словарями из слов или терминов или в систему программирования для формирования программистами библиотеки подпрограмм для применения пользователями. До обычного применения Интеллсист можно скомпилировать тексты по имеющимся текстовым файлам для создания черновика БЗ. Это только образцы работ, которые можно выполнить до применения Интеллсист. Аналогичное перечисление можно дать на работы по оформлению отчетов по итогам применения Интеллсист. Все результаты прогонов Интеллсист накапливаются в файлах. По окончании взаимодействий с Интеллсист можно приступить к созданию полного отчета с построением заключения или выводов. Относительно других работ инструментария Интеллсист все связи с WINDOWS здесь даны только общие описательные черты. Конечно, работа создателей новых Интеллсист не похожа на работу пользователя. Первому необходимо иметь полный доступ ко всем средствам всех программ, а пользователю достаточно иметь доступ только к тем средствам, которые обеспечивают решение его проблем. 3.7. Инсталляция программ Исполняемые программы и документация хранится и распространяется на CDROM. Среди документов имеются известные файлы readme.txt, которые содержат экспресс информацию о работе с диском. Содержимое на дисках может инициироваться автоматически. Кроме информационных файлов имеются файлы setup.exe, выполнение которых обеспечит инсталляцию всего инструментария Интеллсист. Для информации пользователя предусмотрена подсказка, которая вызывается нажатием клавиши F1. Иллюстрацией подсказки является список, приведенный в Приложении 1. Глава 4. Язык Лейбниц (формальное представление знаний) Язык Лейбниц является грамматикой универсального языка, способного обслужить все ЕЯ, а точнее ЯПП, базирующегося на передачи смысла текстами в алфавите ASCII, с целью передачи знаний и запросов для Интеллсист. Он выполняет функции промежуточного языка между ЯПП и ВМ. Главное из истории языка. Задача понимания исторического происхождения языка намного облегчена, поскольку многие информатики и математики-лингвисты (так можно сказать об ученых, которые сближали ЕЯ и ФЯ) занимались формированием самых различных грамматик, обзор которых дан в [Логический98]. Здесь этот обзор не повторяется, но лишь указывается на главные отличия подхода СеГ и исследованных подходов. Первое отличие указанного обзора от приводимого здесь состоит в том, что в СеГ выделено понятие термина. Это позволило приблизиться к пониманию смысла текстов и указать на первичную основу для вычисления смысла всего текста. Второе отличие состоит во введение в рассмотрение понятия синонима термина, что позволило учесть многозначность слов. Третье отличие состоит в рассмотрении терминов с абстрактным смыслом, что обеспечило охват проблем неопределенности и поиска смысла терминов. Четвертое отличие состоит в отказе от фиксированной логики и ориентации на любую логику пользователя, если она задана своими аксиомами и правилами вывода. Кроме этого, в СеГ дана возможность применения многозначных логик и предикатов любого порядка. Обобщены многие математические понятия, например, функции и предикаты понимаются одинаково. Пятое отличие состоит в понимании истины текстов. Считается потенциально, что любой текст истинен изначально. А далее работает алгоритм выявления противоречий для практического опровержения исходного положения об истинности текстов. Шестое отличие состоит в принятии рассудительных языков наравне с командными языками, что обеспечило связь новой системы с накопленными человеком знаниями. Наконец, седьмое отличие состоит в естественной формализации понятия знание, что отсутствует у авторов различных сопоставлений ЕЯ и ФЯ, а предлагаемые языки не поддерживает главную цель применения ВМ для ввода и обработки знаний. Обширность ЕЯ зиждется на большом числе логик, пренебрежение этим обстоятельством приводит в прокрустово ложе, в котором всегда становится не очень уютно. Одно ограничение из прошлых исследований принято - это ориентация на ограниченность лексикона ЕЯ, определяемую только профессиональностью перерабатываемых знаний. Поскольку изучение истории вообще не является целью данного изложения информатики и, учитывая самостоятельность исторического исследования, только что сказанным и ограничивается экскурс в историю машинной лингвистики. В основе построений языка лежит фундаментальное понятия пары имя-значение, заложенное Фреге [Бирюков65, Фреге77]. А выше перечисленные отличия являются техническими приемами устранения трудностей в понимании ЕЯ и использования знания, накопленного в информатике за 50 лет. Цель языка. Предлагаемый вниманию читателя ФЯ Лейбниц предназначен для описания структур БЗ при создания и генерации Интеллсист, для заполнения БЗ и записи запросов после правильной трансляции исходных текстов, написанных на ЕЯ или ЯПП. Труды Лейбница заложили логические основы для применения ВМ в различных областях деятельности человека. Именно в связи с этим язык носит имя Лейбниц. Язык определяет: средства записи понятий с их характеристиками и логических выражений, средства записи сопутствующих конструкций, внешнее представление знаний, которые могут пополняться, внутреннее представление запросов пользователя, ограничения и ошибки, которые обнаруживает транслятор ЕЯ, внутреннее представление знаний, правила для которых составляют универсальную грамматику ЕЯ. Язык не предназначен для применения пользователем в качестве обязательного языка. Здесь дается порождающая грамматика для записи знаний, определяющих структуру БЗ, помещаемых знаний в базу или представляющие запросы пользователя. Язык не определяет аксиомы и правила логического вывода решений логического уравнения, а также сервисные возможности инструментария Интеллсист (например, размер БЗ, формы запроса и печати результата). Формализм языка представлен также в форме графа языка (см. Приложении 6). Внутренняя по отношению к ИИС цель языка - описать структуру формального внутреннего представления знания конкретных предметной и проблемной областей, а также запросов, сопутствующих знаниям сведений, внешних представлений текстов и данных. Структура представлений знания используется при построении новых БЗ, ориентированных на решение данного класса проблем. Пользователь может только частично ознакомиться с языком в части структур логических выражений, он должен знать способы записи данных (лексем). Для решения своих задач он может и не знать формализма языка, поскольку ему такие знания в большинстве случаев не пригодятся. Назначение языка - описать формы данных и знаний для автоматизация ввода, хранения, обработки и вывода представлений знаний при формировании и использовании Интеллсист. Внешняя цель языка - обеспечить надежность автоматического или автоматизированного ИП (с или без составления программ) с помощью ЯПП, поддерживать общение с ВМ как вид человеческой деятельности, обеспечить сопровождение и эффективность решения заданий пользователем, использовать накопленные человеком знания для передачи их ВМ. Процессы работы со знаниями должны включать смысловую и содержательную отладку знаний (экология знания). Надежность ИП и СП обеспечивается автоматическим составлением программ по заказу пользователя. Программа составляется из отлаженных знаний и запросов (или заданий). Поддержка общения с ВМ и Интеллсист обеспечивается использованием ЯПП. Сопровождение заданий обеспечивается возможностью дополнения знаний самим пользователем с автоматической отладкой записей на ЯПП. В качестве основы представления знаний используются все символьные и табличные публикации специалистов. Язык построен на базе синтаксиса имеющихся языков программирования (как источника накопленного знания в информатике) и представления знаний всех видов. Для знакомого с языками программирования все конструкции языка Лейбниц будут ясны после первого прочтения. Алгол 68, Паскаль и Ада, исключая командные части этих языков, - вот примерный перечень языков программирования, многие конструкции которых послужили прецедентами конструкций языка Лейбниц. Они обеспечивают преемственность знаний в информатике, формируют единый подход при создании систем автоматизации построения БЗ и поддерживают хороший уровень представления данных. Язык Лейбниц является ФЯ внутреннего представления знаний о предметной и проблемной области, именно поэтому знание ФЯ Лейбниц пользователем не обязательно. Пользователь обязан знать ЕЯ и СеГ русского языка. Знание СеГ полезно пользователю, если он желает писать содержательно, со смыслом. Свойства языка. Лейбниц-текст определяет структуру БЗ, которая включает типы данных (множества смыслов для фактического знания), объекты (имена предметов, явлений или процессов и их характеристики) и собственно взаимосвязь типов данных и объектов (структуру) как средство для формирования типов и объектов, которые и описывают предметную и проблемную области. Кроме этого в языке определено понятие логического выражения как средства для представления конкретного (фактического) или общего (логического) знания. Выражения используют проблемную область, определяемую составом операций над данными. Язык определяет понятие пакета знаний о некотором мире предметов, явлений или процессов, он определяет БЗ, генерируемой Интеллсист. Пакет может содержать основы каждой БЗ. Структура элементарного знания включает следующие атрибуты: термин, как внешнее имя данного или понятия, паспорт типа данного - структуру конкретного данного, значение, которое является внутренним представлением смысла данного или объекта, ссылку на текущее значение, ссылку на дату. Сущность рассматриваемого языка сводится к определению средств общения в системе человек-ВМ, где реализуется лингвистическая цепь: Естественный язык -> Формальный язык -> Естественный язык ЕЯ (период ввода знаний и запросов) ФЯ (период печати итоговых решений) ЕЯ В начальной стадии конструирования цепи рассматривается первая фаза - фаза ввода знаний и запросов и построение ответа. Вторая фаза - фаза вывода из памяти получаемых решений на ЕЯ - остается не рассмотренной в полном объеме, без учета СиГ. Если знания были не полны (отсутствие исходных данных), то проблема ставится так: построить средства перевода текстов (таблиц и рисунков, вообще говоря) ЕЯ на ФЯ представления алгоритмических знаний. К ФЯ относятся известные языки: Pascal, Ada, С++ и др. К ФЯ причисляется язык логических выражений (фрагмент языка Лейбниц). Совокупность ФЯ определяет лингвистический багаж ВМ. Он реализуется на ВМ полностью, если решаемая проблема помещается в выделяемых ресурсах. ЕЯ лингвистический багаж человека. Данный ниже формализм содержит грамматические категории синтаксиса ЯПП - грамматические категории СеГ. Они даются также в описании ФЯ Лейбниц. Назначение языка. Язык обеспечивает поддержку изобретания, проектирования, разработки и сопровождения экземпляров Интеллсист, БЗ и запросов, формализуя современные методы информатики: выбор формы имен данных и понятий, создание лексикона данной области знания (методы изобретания БЗ), представление данных, множеств данных и знаний, логический и технический контроль ввода данных и знаний, рекурсивное, объектно-ориентированное, структурированное, логическое, техническое, управляемое и архивированное представление данных и знаний (методы поддержки проектирования БД и БЗ); модульное, блочное, последовательное, сверху вниз и снизу-вверх, микро и макроструктурированное представление (методы поддержки разработки БД и БЗ); развивающееся, надежное, эффективное, мобильное, сопрягаемое с другими средствами, машинно-независимое, защищенное, унифицируемое и документируемое представление данных и знаний (методы поддержки сопровождения БД и БЗ). Язык применяется для генерации системы управления БЗ и для работы Интеллсист. Язык используется знаниеведом и системным программистом. Метод описания языка и синтаксические обозначения. В качестве формализма для описания использован язык Марков (см. разд. 1.7). Как уже было упомянуто, граф языка Лейбниц дан в Приложении 6. Структура формального описания в каждом пункте включает разделы: назначение, синтаксис, ограничения синтаксиса, семантику и примеры. Назначение - это описание главных целей излагаемой конструкции, синтаксис - это правила для формального построения конструкции, ограничения синтаксиса - это наиболее важная часть прагматики, семантика - это смысл определяемой конструкции, примеры - это иллюстрация конструкции формальными или неформальными записями. (Последние два раздела могут быть опущены.) Итак, еще раз. Раздел назначения указывает общий смысл вводимого понятия языка. Раздел синтаксиса вводит формальное определение символьных конструкций. Раздел ограничения синтаксиса вводит прагматические указания на использование конструкций, порождаемых синтаксисом. Семантика указывает интерпретацию соответствующей конструкции, способ получения значения, пути определения смысла конструкции. Примеры иллюстрируют вводимое понятие или конструкцию. Иногда примеры сопровождаются комментариями. Системы генерации, настройки и собственно Интеллсист должны находить лексические, синтаксические, лингвистические, концептуальные, семантические, прагматические, формульные, предметные и смысловые ошибки, а также ошибки локальных и глобальных противоречий, независимости и полноты знаний, в период трансляции текста ЯПП, ввода знаний и запросов на решение проблемы и в процессе логического и алгебраического вывода. Фундаментальные ошибки, возникающие при ошибочном моделировании действительности, безусловно, должен обнаруживать сам пользователь. Уровни языка. Язык описывает два из трех уровней. Терминальный уровень ЯПП или язык профессионала - уровень прямого пользователя, от которого скрыты формальные конструкции. Формальный уровень - внутреннее системное представление данных и знаний в памяти ВМ - для работы программ с помощью формальных конструкций. Уровень внутримашинного представления БЗ и его элементов не включен в описание языка. ЯПП - часть ЕЯ, в которой определены все понятия, области их значений (предметная область), операции (проблемная область), хранилища данных и программ и логические выражения, отражающие знания, запросы и сопроводительную информацию. Язык определяется формально для знакомства с правилами построения конкретных конструкций, а в системе для пользователя он применяется через заказы по меню, которое указывает только на набор необходимой (изобретательской, проектной, разработнической и сопровожденческой) информации. Система понятий языка. Каждое понятие вполне определяется своим именем (термином) и значением (смыслом). Для внешнего представления терминов, вводимых в языке понятий, используются слова из букв и цифр, другие лексические элементы и знаки клавиатуры. Внутреннее представление имен образуют ссылки на значения, вводимые или присваиваемые именам в процессе выполнения операций или логического вывода ответов на запросы. Логический вывод решения определяет алгоритм вычисления смысла текстов (фраз и абзацев). Данные. Ввод данных (значений) может осуществляться в знаниях, запросе, через меню работ и при запуске СП. Данные сохраняются в памяти Интеллсист, они определяют смысл понятий. Способы написания данных определены в языке формально с учетом общепринятых способов. Являясь значениями некоторых понятий, данные передают его смысл. Лексикон. Лексикон (первая часть БЗ) состоит из терминов или обобщенных фактов, часть из которых определены только терминами, а другая часть являются фактами, используемыми в выражениях. Лексикон включает все лексемы из слов и знаков, а также определения терминов. Для внешнего представления значений используются лексемы: числовые, символьные, строковые и т.п. Комбинации этих лексем может образовывать составные или структурные значения (агрегаты). Внутреннее представление лексем должно соответствовать их внешнему представлению, если не оговорена допустимая точность представления. Терминологическим словарем Интеллсист является лексикон, который задается специалистом в данной области знания, знаниеведом или пользователем в процессе ввода знаний или запросов в систему. Этот словарь обеспечивает однозначный перевод знаний с ЯПП на ФЯ. Знания. Как совокупность суждений знания внешне представляются фразами и предложениями на ЯПП (вторая часть БЗ). Для внутреннего представления знаний используются логические выражения или их комбинации. Знания классифицируются по видам и способам внешнего представления их в текстах языка. Знания подразделяются на элементарные (факты), простые (утверждения о фактах) и сложные (правила вывода новых фактов). Знания представляются текстами, вводимыми данными, содержанием хранилищ текстов, массивами, записями и таблицами данных. Классификация ошибок. Знания передаются от человека к человеку знаками, различными языками, понятиями, средствами тиражирования, теоретическими выкладками, программами и разнообразными системами. Аналогичные средства используются и для передачи знаний на ВМ. Создание любого представления знаний осложняется внесением в них ошибок, что является средством их «загрязнения». В связи с этим возникла необходимость ввести понятие экологии знания и осознать причины этого «загрязнения» (см. т.7). Обычно выделяют ошибки следующих классов (ниже в скобках указаны причины появления и метод устранения ошибок на ВМ): - синтаксические ошибки (нарушение правил грамматики СеГ или ФЯ обнаруживаются автоматически по правилам СеГ); - лингвистические ошибки (неправильное использование характеристик терминов обнаруживается автоматически по таблицам); - концептуальные ошибки (неправильное использование определений терминов (понятий) обнаруживается автоматически по лексикону); - семантические ошибки (нарушение контекстных условий при использовании понятий обнаруживается автоматически по правилам и лексикону); - прагматические ошибки (нарушение количественных ограничений на те или иные части текстов обнаруживается автоматически подсчетом); - формульные ошибки (нарушение в согласовании типов операций над значениями понятий обнаруживается автоматически по таблицам); - системные ошибки (нарушение в использовании вычислительных и других средств общения обнаруживается автоматически по таблицам); - предметные ошибки (неправильное использование элементов БД и БЗ обнаруживается автоматически по правилам и свойствам данных); - смысловые ошибки (нарушение правил построения высказываний для передачи смысла обнаруживается путем идентификации понятий по лексикону и вычисление смысла текста); - локальные противоречия (часть текста противоречит знаниям в базе обнаруживается при внутреннем логическом анализе текстов); - глобальные противоречия (вводимый абзац противоречит знаниям в базе, что обнаруживается при полном логическом анализе текстов); - независимость знаний (локальные или глобальные повторы по смыслу обнаруживаются при логическом сопоставлении смысла двух предложений или абзацев); - полнота знания (разрешение запросов не состоит из фактов, что обнаруживается методом решения логического уравнения). Можно еще рассматривать стилистические или случайные ошибки и др., но они так или иначе сводятся к указанным типам ошибок и являются либо синонимами, либо композицией перечисленных ошибок. Способность обнаруживать, локализовать и обоснованно исправлять ошибки, в частности, характеризует интеллект человека или системы. Ошибки обнаруживаются транслятором ЯПП, компилятором программ для выполнения, в процессе логического вывода и при интерпретации операций над лексемами. Как уже упоминалось, имеется еще класс фундаментальных ошибок, которые возникают при ошибочном моделировании предметов, явлений или процессов. Такие ошибки никак не выявляются по текстам знаний и запросов. Можно сказать, что некоторые из фундаментальных ошибок могут выявиться в результате обнаружения несогласованности данных, термандов и термаций. Например, сложение величин с различными единицами измерения приведет к порождению семантической ошибки. 4.1. Формальное определение ЯПП ЯПП определяет (в конечном счете) логическое выражение. При спецификации знаний нами принято использовать язык Лейбниц в той части, которая относится к логическим выражениям. Логические выражения - это средства для представления знаний, запросов и форм представления элементов БЗ. Выражения играют и вспомогательную роль при формировании элементов БЗ, например, подпрограмм. Назначение. Данные ниже правила порождения элементов языка общения с Интеллсист не составляют точного формального определения, а служат пояснительным материалом понимания ЯПП. Здесь определены записи на ЯПП, комментарии и прагмы. Комментарии необходимы либо для определения понятий, представленных терминами, либо для пояснения некоторых выражений. Прагмы необходимы для передачи системе некоторых указаний для более эффективного выполнения ее действий. Синтаксис язык профессиональной прозы: абзац , конец абзаца ; язык профессиональной прозы , абзац , конец абзаца. абзац: запись на языке Лейбниц. конец абзаца : пустая строчка. запись на языке Лейбниц: запись утверждения ; запись на языке Лейбниц , запись утверждения. запись утверждения: утверждение , конец утверждения ; комментарий. утверждение: последовательность обозначений понятий. конец утверждения: символ точки ; символ точки с запятой. обозначение понятия: термин ; литерал. комментарий: символ тире , символ тире , последовательность символов ; комментарий последовательность символов конец комментария. термин: элемент термина ; термин , возможный пробел , элемент термина. элемент термина: слово ЯПП ; знак ; литерал. определяемый термин: элемент определяемого термина ; определяемый термин , возможный пробел , элемент определяемого термина. элемент определяемого термина: слово ; знак ; литерал. новый термин: ~ определяемый термин ~ возможный комментарий. знак: не буквы и не цифры. слово ЯПП: буква ;слово , буква ; слово , цифра. слово: база слова ; база слова , символ подчеркивания , конец слова. база слова: слово ЯПП. конец слова: слово ЯПП , цифра ; конец слова , слово ЯПП ; конец слова , цифра. пустая строчка: пробелы. Ограничение синтаксиса. ЯПП строится на основе СеГ. Это значит, что текст знаний и запросов должен состоять из последовательностей терминов, если знаки пунктуации также именовать терминами, и отдельно от выражений из прагм и комментариев. Термины состоят из слов ЕЯ с возможным расширением алфавита слов цифрами и знаков клавиатуры (не буквы и не цифры). В определении термина (он заключается в знаки ~) слова состоят из двух частей: базы и конца, разделенных знаком подчеркивания. При формировании терминов используются только те графические знаки, которые представлены на клавиатуре, но не символы псевдографики, которые могут быть представлены в лексемах. Символ конца абзаца - это пустая строчка (из пустых символов и символа перехода на новую строчку). База слова служит для идентификации термина или его части, а исходный конец слова предусматривается для вывода термина на экран при общении с пользователем и при отсутствии системы генерации текстов на ЕЯ по правилам СиГ. Каждое понятие имеет или может иметь значение (через запись факта или в результате логического вывода), полный набор значений или константное значение, они задаются в определении понятия. Комментарии начинаются в любом месте строчки двумя минусами (дефисами) и продолжаются записью последовательности любых символов до конца строчки. Комментарий может продолжаться на следующей строчке с предшествующими двумя символами минусов (!). Семантика Формальная часть ЯПП - это либо запись из последовательности терминов, определенных для пользователя данной профессии, либо запись утверждений, определенных в ФЯ Лейбниц для системных программистов. Утверждение заканчивается точкой с запятой или точкой. Считается, что абзац содержит законченную мысль, формально представимую логическими выражениями языка Лейбниц (фразой). Абзац может состоять из одного предложения (утверждений) или из нескольких предложений, представляющих запись фактов, утверждения о фактах или правила построения утверждений о фактах. Смысл текстов (фраз и абзацев) на ЯПП вычисляется по правилам СеГ. Каждое утверждение состоит из терминов лексикона или некоторых избыточных понятий. Кроме словных терминов утверждение может содержать данные, записанные в форме лексем языка Лейбниц. Некоторые данные могут изображаться словными терминами. Термины бывают стандартными (общеупотребительными), базовыми из БЗ или пользовательскими, которые вводит сам пользователь. Определяемый термин записывается строчкой в символах ~, он вносится в лексикон. Стандартные термины указаны в Приложении, их определения и характеристики содержатся в стандартном файле, который вызывается в процесс подготовки Интеллсист к работе. Литералы предназначены для представления имен и значений, на которые ссылаются имена. Среди утверждений могут находиться, как было сказано, комментарии, представляющие избыточные записи для Интеллсист и поставляющие дополнительную информацию для пользователя или читателя знаний или запросов. Интеллсист сохраняет в лексиконе только те комментарии, которые помещены непосредственно за записью определяемого термина. Интеллсист полностью игнорирует символы остальных комментарий. Комментарий может помещаться в любой строчке текста. Комментарий предназначен для того, чтобы сделать текст более понятным человеку, желающему ознакомиться со свойствами и смыслом текста знаний и запросов. Комментарий может начинаться словом комментарий, завершаться двумя словами конец комментария и содержать произвольное число строчек из символов. Примеры записей на ЯПП: Для того, чтобы решить квадратное уравнение вводится запрос ~решение квадратного уравнения~: найти Х, такой, что Х*Х - 25*Х + 3.5 = 0. Примеры комментариев --Это комментарий, т.к. строчка начинается с двух дефисов, ---------------------- только два первых дефиса важны для комментария, -- для передачи комментария в Лейбниц-текст. комментарий другой вид комментария, который эквивалентен записи -- другой вид комментария, который эквивалентен записи конец комментария 4.1.1. Прагмы. Назначение. Прагмы содержат указания для Интеллсист некоторого уровня о выполнении заданных действий, не влияющих на результаты логического вывода Интеллсист по существу или на использование БЗ. Прагмы используются для организации технологии обработки знаний, их содержание никоим образом не влияет на знания, они не изменяет их по существу, прагмы влияют на способы и формы представления знаний и на некоторые особенности технической обработки знаний и запросов. Синтаксис. прагма: прагма , простое имя прагмы , возможный параметр. параметр: ( список аргументов ). аргумент: логическое выражение. Ограничение синтаксиса. Прагма начинается с зарезервированного слова прагма, за которым следует имя прагмы и возможно параметр или параметры, которые задают управляющую информацию. Прагмы допустимы в отдельной строчке текста описания БЗ в требуемом контексте. Список прагм приведен в Приложении. Семантика. Прагма воспринимается системой как руководство к выполнению указаний пользователя или системного программиста. Ее смысл и действие описаны вместе с прагмой. Параметры прагмы указаны позиционно (в порядке следования ее формальных параметров) или в форме сопоставления формальных и фактических параметров. Пример интерфейс(Вывод). подавлять(ссылка на таблице, ссылка на массив, виртуальная скорость). листинг(включить). листинг(выключить). Мир смыслов пользователя 4.2. Лексемы Для записи лексем используется набор символов клавиатуры: прописные и строчные буквы русского и латинского алфавитов, цифры, специальные и дополнительные символы, символ пробела, кодовые символы, набираемые специальной комбинацией указанных символов. Из таких символов создаются лексемы по правилам языка Лейбниц. Назначение. Основу смысловой области знаний составляют значения, представленные лексемами и выражающие смысл понятий и выражений. На базе лексем строятся типы данных, определяющих предметную область знаний. Этим предметам посвящены настоящий и следующий разделы. Лейбниц-текст состоит из текстов одного или нескольких абзацев. Текст описания структуры БЗ и запросов - это последовательности лексем, каждая из которых состоит из символов. Слова также являются лексемами. Некоторые лексемы выражают сами себя, другие - являются частями терминов. Ниже рассматриваются правила для построения лексем. Лексемами являются односимвольные или многосимвольные ограничители, числа, выделенные символы, строки (константы) и термины (в частности, зарезервированные слова). Конструкция терминов уже рассмотрена. Конструкции ограничителей рассматриваются по мере необходимости, например в выражениях. Ограничители являются также терминами и средством для разделения словных терминов, если они представлены знаками. Ограничители также указывают на те действия, которые реализуются над именами или значениями терминов. Ограничители обеспечивают целостное восприятие всего текста. В Приложении 1 даны списки всех терминальных символов языка в виде сводки их кодов, изображений и наименований. Некоторые ограничители могут быть представлены только специальными зарезервированными словами, поскольку на традиционных клавиатурах использовано ограниченное число символов. С другой стороны, словные обозначения ограничителей нагляднее и способствуют пониманию текстов. Синтаксис. лексема: простое имя ; литерал ; дата ; время , агрегат литералов ; ссылочный литерал. литерал : символьный литерал ; логический литерал ; числовой литерал ; строковый литерал. Ограничения синтаксиса. Простое имя назначает пользователь. Все другие литералы, которые встречаются в записях различных специальностей, должны быть представлены в соответствии с изложенным синтаксисом. Семантика. Значение простого имени задается пользователем или определяется в процессе логического вывода или запуска программы, полученной в результате логического вывода. Значение других лексем определяется по самой их записи. Примеры. идет дождь 21 сентября 1895 года 3 часа 28 минут 48 секунд -- простое имя или термин, -- дата, -- время, nil (1, 2, 3, 4, 5) [Петров, 35, 1500, “м”] {25, 35, 45, 55} «а» истина 378.49 «слово» -- ссылочный, -- агрегат массива, -- агрегат записи, -- агрегат множества, -- символьный литерал, -- логический литерал, -- числовой литерал, -- строковый литерал. 4.2.1. Символьные литералы. Назначение. Символьный литерал - это один из графических символов (включая пробел), используемый при обработке текста или в качестве распознавателя элементов текста. Синтаксис. символьный литерал: « знак » ; код символа. знак: пусто ; пустой символ ; графический знак. пустой символ: «пробел». код символа: #целое. пусто: . Ограничения синтаксиса. Пробел между кавычками задается пропуском одной позиции символа. Пробел в синтаксической форме не принимается во внимание. Символ кавычки может задаваться в кавычках указанием двух кавычек и восприниматься как один символ кавычки. Любой символ может задаваться кодом символа после знака #. Код в кавычках уже не является символьным литералом. Семантика. Графический символ запоминается своим внутренним кодом в соответствии с Приложением 1. Он представляет значение символьных величин. Смысл символьного литерала определяется его написанием. Примеры. «а» -- символ буквы а, «» -- пустой символ, ««»» --символ кавычки, левая и правая кавычки, -- не различаются своими кодами, #123 -- код символа. 4.2.2. Логические литералы. Назначение. Значения истинности в классической или основной двузначной логике определяются внешне зарезервированными словами и терминами-синонимами (в общем случае терминами) пользователя. Термины истинности используются при формировании перечислимых, они определяют значения в многозначных логиках. Синтаксис логический литерал: ложь ; истина. пользовательское логическое значение: термин. Ограничение синтаксиса. Ложь соответствует отрицанию факта или отсутствию решения логического уравнения, истина соответствует утверждению факта или наличию всех возможных решений логического уравнения. Каждое пользовательское логическое значение определяется самим пользователем при описании синонима логического значения. Семантика. Логический литерал представляет значение логических величин и изображает логические константы нуля и единицы. Смыслы лжи и истины ясны по своей сути. Пользовательские логические значения обычно (но не обязательно) представляются модальными словами или последовательностью слов с включением модальных слов. Последние используются при описании типа перечислимых. Смысл таких терминов интерпретируется самим пользователем. Примеры. ложь, истина -- константные лексемы логических величин, нет, да, возможно, вероятно -- пользовательские логические значения. 4.2.3. Числовые литералы. Назначение. Числа (числовые литералы) используются часто для обозначения значений (в фактах, утверждениях о фактах или правилах) величин числового типа. Синтаксис числовой литерал: число. число: целое ; десятичное число ; десятичное число с порядком ; число с основанием ; кардинал. целое: цифра ; целое , цифра. десятичное число: целое , символ точки , целое. десятичное число с порядком: целое , разделитель порядка , порядок ; десятичное число , разделитель порядка , порядок. разделитель порядка: e ; E. порядок: целое ; символ плюс , целое ; символ минус , целое. число с основанием: основание # целое # ; основание # десятичное число #. основание: 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; 16-цифра. цифра: 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9. 16-цифра: цифра ; A ; B ; C ; D ; E ; F. кардинал: омега целое ; алеф целое. Ограничение синтаксиса. Здесь определены целые, вещественные числа, числа с основанием счисления и кардиналы . Целые используются для записи значений типа целое, числа с точкой и/или порядком - типа вещественный, числа с основанием кодовое представление чисел соответствующего типа. Число с основанием - это числовой литерал, значение которого записывается в соответствующей основанию от двух до шестнадцати системе счисления. При записи мантиссы необходимо учитывать, что каждая расширенная цифра должна быть меньше основания. Передние нули числа не влияют на значение числа и могут опускаться. Кардиналы используются в операциях с множествами. Семантика. Каждый числовой литерал переводится во внутреннее представление в соответствии с традиционными алгоритмами перевода. Смысл числового литерала считается известным пользователю. Шестнадцатеричные цифры понимаются как следующие факты: A = 10; B = 11; C = 12; D = 13; E = 14; F = 15. Примеры. 0001, 256 2.35, 0.69 7.08e –2 2#1001 5#4321 -- целые числа, -- десятичные числа, -- вещественное число, -- целое число с основанием 2, -- целое число с основанием 5. 4.2.4. Агрегаты литералов. Назначение. Агрегаты предназначены для представления значений структурного типа: массивов (векторов, матриц и др.), записей (характеристик и свойств объектов со структурой), таблиц (сводки данных по столбцам и строчкам) и множеств (конечных по размеру и представленных значениями или выражениями, либо с условием принадлежности элементов, которых может быть любое число). Синтаксис агрегат литералов: агрегат массива ; агрегат записи ; агрегат множества. агрегат массива: ( сопоставление элемента массива , возможный список позиционных сопоставлений элементов массива , возможный список именованных сопоставлений элементов массива). агрегат записи: [ позиционное сопоставление , возможный список позиционных сопоставлений , возможный список именованных сопоставлений ]. агрегат множества: { возможный список позиционных сопоставлений } ; { список новых терминов , символ точки с запятой , логическое выражение }.; { определение нового термина символ точки с запятой , логическое выражение }. позиционное сопоставление : логическое выражение. именованное сопоставление : выбор символ замены логическое выражение ; другие , символ замены логическое выражение. выбор : целое ; литерал дискретного типа ; дискретный диапазон ; имя поля Ограничение синтаксиса. Агрегаты массива и записи могут иметь в качестве выражения вновь агрегат. Агрегат таблицы записывается так же, как агрегат записи, их различие состоит в соответствии типов элемента записи или столбца таблицы, агрегат таблицы не может содержать агрегаты. Агрегат множества может задавать конечное множество из списка его элементов или набор элементов, определяемый логическим выражением (свойством каждого элемента). Для литералов массива имеются частные случаи, которые относятся к литералам символьных и строковых. Для литералов записи имеется частные случаи, которые относятся к литералам даты, времени и комплексного. Эти три конструкции рассматриваются в соответствующих разделах. Литералы комплексных - это запись двух вещественных полей в квадратных скобках. Первое поле относится к вещественной части комплексного числа, второе - к мнимой части комплексного числа. Выборы, заданные целыми, литералами дискретного типа, дискретным диапазоном и именем поля определяют именованные позиции массива или записи. Имя поля в выборе определяет позицию записи или таблицы. Слово другие относится к заполнению агрегата литералами до конца размера массива. Агрегаты множества имеют три вида: перечисление элементов, указание на обозначение элемента термином и логическим выражением, определяющим набор элементов по значению истина для каждого элемента набора, и подмножества конечного числа элементов, выбираемых из множества-типа. Семантика. Агрегаты литералов представляют значения (смыслы) структурных величин (массивов, записей, таблиц и множеств). Примеры. ((1,2),(3,4)) -- агрегат двумерного массива, (а, б, в) -- агрегат одномерного массива, [2, истина, взять] -- агрегат записи, [2.5, 7.3] -- комплексное число, {«a», «b», «c», «d»} -- агрегат множества символьных, {~x~: целое ; x > 0} -- множество положительных чисел. 4.2.5. Строковые литералы. Назначение. Строковый литерал вводит в БЗ и запросы текстовые данные (последовательности символов) в качестве исходной единицы обработки знаний. Синтаксис строковый литерал: символ кавычки , знаки , символ кавычки ; символ кавычки , символ кавычки. знаки: знак ; знаки , знак. Ограничение синтаксиса. Строковый литерал образуется из последовательности (возможно, пустой) графических символов, заключенной между двумя символами кавычки - строковыми скобками. Для представления кавычки в последовательности значений символов необходимо в соответствующем месте внутри строкового литерала поместить пару соседних символов кавычки. Длина строкового литерала равна количеству графических символов, считая две соседние кавычки за одну и не считая крайних кавычек. Семантика. Строковый литерал представляет смысл каждой строковой величины и запоминается посимвольно, а вместо двух кавычек в литерале запоминается один символ кавычки. Значение строкового литерала образуется из последовательности значений символов строки. Примеры «это строка» -- это простая строка, «» -- пустая строка, «кавычка «» представлена парой кавычек» -- составная строка. 4.2.6. Литералы дат. Назначение. Дата задает при описании знаний или запросов календарное время, она также может вызываться системой по стандартной процедуре. Синтаксис дата: день , название месяца , год года ; день , символ точки , число месяца , символ точки , год. день: целое. название месяца: январь ; февраль ; март ; апрель ; май ; июнь ; июль ; август ; сентябрь ; октябрь ; ноябрь ; декабрь. год: целое. Ограничение синтаксиса. День изменяется в пределах, которые соответствуют календарю, число месяцев не превосходит 12, год может быть отрицательным. Год, заданный двумя цифрами (лучше избегать такого способа задания года) понимается как 20 век, если число больше или равно 50, как 21 век, если число меньше 50. Семантика. Считается, что смысл даты понятен. Интеллсист проверяет правильность написания даты с точки зрения допустимости и учета високосных годов. Всюду выдерживается новый стиль летоисчисления. Пример. 13 января 1998 года. 4.2.7. Литералы времени. Назначение. Время задает при описании знаний или запросов отметку часов с указанием часа, минут и секунд (возможно с дробями), оно может вызываться системой по стандартной процедуре. Синтаксис время: часы часов возможные минуты минут возможные секунды секунд. часы: целое. минуты: целое. секунды: десятичное число. Ограничение синтаксиса. Часы изменяются от 0 до 23, минуты - от 0 до 59, секунды - от 0 до 59 возможно с тысячными долями секунды (или без них). Секунды могут опускаться, а вместо них подразумеваться нули секунд. То же можно сказать об одновременном пропуске минут и секунд, подразумевая нули вместо минут и секунд. Семантика. Считается, что смысл времени понятен. Интеллсист проверяет правильность написания времени с точки зрения допустимости часовых показаний. Примеры. -- с пропусками секунд, минут и секунд: 12 часов 27 минут 35.09 секунд, 12 часов 27 минут, 12 часов. 4.2.8. Литералы комплексных чисел. Назначение. Комплексные числа являются примером записи с двумя полями. Первое поле - Re, действительная часть комплексного числа, второе поле - Im, мнимая часть комплексного числа. Синтаксис комплексное число: [ действительная часть символ запятой мнимая часть ]. действительная часть: логическое выражение. мнимая часть: логическое выражение. Ограничение синтаксиса. Логические выражения должны иметь значения числового типа или быть числовыми значениями. Семантика. Считается, что смысл комплексных чисел понятен. Например, комплексное число [Re, Im] в алгебре обычно изображается в виде Re + i * Im, что частично выражает смысл комплексных величин. Пример. [2.27, 35.009] -- интерпретируется как 2.27+ i 35.009. 4.2.9. Ссылочные литералы. Назначение. Ссылочные величины являются условными обозначениями для величин любого типа. Ссылочные литералы являются значениями ссылочных величин, их имеется два сорта. Синтаксис ссылочный литерал: nil ; символ доллара код. код: 16-цифра ; код , 16-цифра. Ограничение синтаксиса. Код должен находиться в пределах, доступных размерами адресов памяти данной вычислительной машины. Семантика. Ссылочный литерал указывает шестнадцатеричный адрес значения величины. Нулевой адрес nil не ссылается на что-либо. Примеры. nil -- нулевой адрес, $20AF -- ненулевой адрес. 4.2.10. Другие литералы. Во-первых, сделаем общее замечание. Многие литералы могут иметь синонимы, как и все термины (их можно условно отнести к другим литералам). Например, числительные русского языка являются синонимами чисел. Во-вторых, имеется один литерал для процедурного - void (пустое процедурное значение), определяющий отсутствие значения в вычислительном смысле, для текстовых файлов литералом можно считать строки, определяющие путь к разделу и наименование файла. Файл с типом элементов последовательности имеет тип строковой величины, состоящей из последовательности значений заданного типа. Абстрактный тип не имеет значений. Величина абстрактного типа может принять значение только после автоматического определения ее типа по контексту. Для всех других типов величин тип значения определен. Имеются функциональные и процедурные «литералы», которые представляются логическими выражениями в их определении. Экзотика таких литералов не должна вызывать коллизии, так как смысл функций и процедур может задаваться выражениями. Следует различать значения вызова функции, которые определяются обычными литералами в соответствии с типом значений функции, и значения вызова подпрограмм, которые имеют смысл истины (процедура выполнилась) и лжи (процедура не выполнилась). Кстати, если функция не выполнилась после исполнения вызова, то ее значением будет неопределенным. Поскольку литералы указанных типов представляются из известных литералов, то величины таких типов имеют предписанный тем самым общий смысл. Имеется два способа задания последовательностного типа. Величины таких типов, обозначающиеся или формируемые порождающими или распознающими грамматиками, имеют значения последовательностей символов - строки большой длины. Все другие литералы строятся как композиции представленных выше литералов со смыслом, известным пользователю. Мир объектов пользователя 4.3. Определение типов (предметная область) Назначение. Тип - это множество значений (смыслов), определяющее предметные и проблемные области величины при ее определении через это множество значений. Типы понятий - это наименование множества значений, которые может принимать данное понятие. Кроме множества значений тип характеризуется набором операций. Различают типы, которые перечислены синтаксически. Их можно подразделить условно на скалярные и структурные, дискретные и непрерывные типы. Синтаксис определение типа: символьный тип ; логический тип ; числовой тип ; строковый тип ; тип даты ; тип времени ; ссылочный тип ; абстрактный тип ; пользовательский тип. пользовательский тип: тип истинности ; индексируемый тип ; именуемый тип ; табличный тип ; множественный тип ; последовательностный тип ; подпрограммный тип . Ограничение синтаксиса. К простым или базовым типам относятся символьный, логический, числовой, ссылочный, абстрактный и тип истинности. К составным или производным типам относятся индексированный, строковый, именованный, табличный, множественный, последовательностный, процедурный и типы даты и времени. Пользователь может сформировать практически любой тип своих данных. Процедурный тип определяет элемент предметной и проблемной областей. Тип может включать подтипы и компоненты в качестве составной части описания типа. Любой тип не должна иметь компонент, типом которого является он сам. Семантика. Смысл типа - описание мира смыслов объекта, термин которого в определении снабжается этим типом. Каждый термин может приобретать смысл, который содержится в типе. Примеры (термин определен типом в разделе типов): ~пол~ = символьный; -- символьный тип, состоящий из «М» и «Ж», ~диад_а~ = логический; -- логический тип, ~выбор~ = (~нет~, ~возможно~, ~да~); -- тип истинности в трехзначной логике, ~данн_ые~ = вещественные; -- числовой тип, ~вектор~ = массив [1..10] из вещественных; -- индексируемый тип, ~имена~ = строка; -- строковый тип, ~ведомост_ь~ = запись ~ФИО~ = строка; ~оценк_а~ = целое конец записи; -- именуемый тип, ~ведомости~ = таблица («xyz», временная) ~ФИО~ = строка; ~оценк_а~ = целое конец таблицы; -- табличный тип, ~дат_а рождени_я~ = дата; -- тип даты, ~текущ_ее врем_я~ = время; -- тип времени, ~множеств_о мебел_и~ = множество; -- множественный тип, ~язык А~ = последовательность; -- последовательностный тип, ~пол_е запис_и~ = ссылка на множество мебели; -- ссылочный тип, ~функци_я скорост_и~ = функция (~пут_ь~: вещественный; ~период~: вещественный): метров в секунду; -- подпрограммный тип, ~элемент групп_ы~ = абстрактный; -- абстрактный тип. 4.3.1. Символьный тип. Назначение. Символьный тип используется для указания значений из символьных литералов, которые может принимать величина, квалифицированная этим типом. Тип обозначается в его определении словом символьн_ый, он является предопределенным. Синтаксис символьный тип: символьн_ый. Ограничения синтаксиса. Символьный тип включает в качестве литералов символьные литералы или коды символов. Семантика. Смысл символьного типа - множество значений символа. Примеры «» -- пустой символ, «к» -- символ буквы к. 4.3.2. Логический тип. Назначение. Логический тип используется для квалификации значений логических величин и конечного результата. Тип обозначается в его определении словом логическ_ий и является предопределенным. Синтаксис. логический тип: логический. Ограничение синтаксиса. Этот тип определяется в соответствии с формализмом стандартного перечислимого типа, его описание не вводится пользователем. Можно ввести только синонимы для логических литералов и логического типа. Семантика. Смысл логического типа описать мир предмета, явления, процесса или состояния объекта. Каждый объект есть или его нет, присутствует или отсутствует, протекает или остановлен и т.п. Примеры. нет -- когда отсутствует явление или процесс (синоним слова ложь) да -- когда присутствует явление или процесс (синоним слова истина) 4.3.3. Типы перечислимых. Назначение. Этот тип определяет конечное множество (модальных) имен понятий, задаваемых меры истинности для рассуждений с неполными знаниями. Пользователь сам формирует меру истинности и модальные имена для обозначения меры. Синтаксис перечислимый тип: ( список литералов перечисления ). литерал перечисления: новый термин. Ограничение синтаксиса. Термины в одном перечислении все должны быть различными. Одинаковые термины в различных определениях перечислимого типа называются совмещенными. Тип такого литерала при использовании определяется по контексту. Определяемые в различных местах типы являются различными, даже если они совпадают по составу терминов перечисления. Термин из перечисления не должен совпадать с терминами вели чин. При совпадении терминов-констант из перечисления необходимо использовать квалифицированные выражения. Появление термина в качестве литерала перечисления составляет его описание: это описание эквивалентно описанию функции без параметра с результатом определяемого перечислимого типа, номером позиции термина в списке. Перечислимый тип определяет конечное число таких функций. Двуместная операция применяется только для однотипных величин. Семантика. Каждый литерал перечислимого типа вырабатывает свое отличное от других значение, которое обозначено заданным термином. Все литералы упорядочены в соответствии с номером позиции. Позиции нумеруются отрезком натурального ряда, начиная с нуля. Номера двух соседних литералов перечисления отличаются на единицу. Для перечислимых типов определены все логические операции. Для логических операций многозначной (типа К-значной) логики логическое выражение в определении должно начинаться со знака @ и иметь вид одно или двумерного агрегата занумерованных значений типа: массив[0..К-1] из целых -- для одноместной операции или массив[0..К-1, 0..К-1] из целых -- для двухместной операции. Агрегат заполняется целым числом от 0 до К-1 для префиксной операции или инфиксной операции в том месте массива, где индекс или пара индексов определяются по значению для данной операции К-значной логики. Порядок компонентов агрегата должен различным значениям операнда для одноместной операции или различным парам значений операндов для двухместной операции. Так определяется табличная логическая операция в многозначной логике. Примеры. (~нет~, ~возможн_о~, ~да~) (~не сделан_о~, ~начат_о~, ~завершен_а подготовк_а~, ~сделан_о~) -- концы слов выделены для их вариации в текстах знаний и запросов. 4.3.4. Числовые типы. Назначение. Числовые типы определяют значения числовых величин или объектов (в числовых фактах). Синтаксис числовой тип: описание целого; описание вещественного. описание целого: короткий целый ; целое ; длинный целый ; байтовый ; словный ; целый в диапазоне ; целый с шагом. целый с шагом: целое (целое) целое. целый в диапазоне: целое .. целое. описание вещественного: вещественный ; короткий вещественный ; длинный вещественный ; расширенный вещественный ; фиксированный вещественный ; плавающий вещественный. фиксированный вещественный: число ( число ) число. плавающий вещественный: число ( целое ) число . Ограничение синтаксиса. Определение множества чисел предусматривает задание различных классов числовых множеств. Все типы, обозначаемые именем типа, являются предопределенными, остальные – пользовательскими числовыми типами. Диапазоны и шаги для типов указаны в таблице. Обозначение Минимальное Шаг Максимальное типа короткий целый целое длинный целый байтовый словный вещественный короткий вещественный длинный вещественный расширенный вещественный двойной вещественный фиксированный вещественный плавающий вещественный -128 -32768 -2147483648 0 0 меньший порядок -39 меньший порядок – 45 меньший порядок 1.84e-19 меньший порядок – 4951 меньший порядок – 324 Десятичное число десятичное число с порядком 1 1 1 1 1 127 32767 2147483647 255 65535 большой порядок +38 большой порядок +38 десятичное число положительное целое число большой порядок 1.84e+19 большой порядок +4932 большой порядок +308 десятичное число десятичное число с порядком Класс вещественных чисел с плавающей запятой (плавающий пользовательский числовой тип) определяется, если число десятичных знаков, указанных в описании в скобках, представлен целым числом, задающим число верных знаков (относительная погрешность) в представлении вещественных чисел, находящихся в заданном диапазоне. Концы диапазона должны входить в данное множество вещественных чисел с плавающей запятой. Эти концы должны задаваться вещественными литералами. Класс вещественных чисел с фиксированной запятой (фиксированный пользовательский числовой тип) определяется, если шаг представлен десятичным числом, задающим шаг для чисел - абсолютную погрешность представления вещественных чисел. Концы диапазона должны входить в данное множество вещественных чисел с фиксированной запятой. Эти концы задаются числовым литералом. Класс целых чисел может быть задан диапазоном (пользовательский числовой тип). Если шаг для целых чисел равен единице, то тип можно определить через диапазон в соответствии с синтаксисом. Для всех случаев задания пользовательского числового типа шаг не должен равняться нулю. Границы числового диапазона должны быть согласованы с шагом так, чтобы тип не был пустым (без единого числа). Семантика. Числовые типы являются основой количественной характеристики величин и используются в арифметических выражениях для расчета и получения значений искомых величин. Передние нули целой части числа являются незначащими. Примеры 1..37 1(2)37 0.0(0.01)0.99 0.0(3)0.99 -- целый в диапазоне, -- целый с шагом отличается от целого в диапазоне. -- фиксированный тип, -- плавающий тип. 4.3.5. Индексируемые типы. Назначение. Объектом индексируемого типа является массив, состоящий из компонентов (значений) одного и того же типа. Синтаксис индексируемый тип: массив [ список определений типа индекса ] из определение типа. определение типа индекса: дискретный тип. дискретный тип: символьный ; логический ; тип истинности ; целый ; байтовый ; словный ; короткий целый ; длинный целый ; целый с шагом; целый в диапазоне ; диапазон дат ; конечное множество ; ссылочный тип ; абстрактный тип ; имя дискретного типа. диапазон дат: дата .. дата. имя дискретного типа: термин. Ограничение синтаксиса. Массив характеризуется именем, числом индексов (размерностью и размером по каждому индексу), диапазоном изменения каждого индекса с указанием нижней и верхней границ для значений индексов или дискретным типом и типом компонента. Эти данные представляют паспорт данного массива из значений его атрибутов. Кроме паспорта в памяти ВМ может находиться значение массива. Значение массива может быть не пустым. Положение компонента определяется значениями индексов, принадлежащими заданным дискретным типам. Значение массива - это составное значение из всех компонент (агрегат массива). Имя дискретного типа, как термин, задается пользователем в определении дискретного типа или в качестве синонима этого термина. Семантика. Массивы определяют значение структурной величины (вектора, матрицы и др.), состоящее из набора значений одинакового типа. Примеры. массив[1..10, 1..10] из вещественных-- для описания матрицы размером 10 на 10: массив [1..25] из целых -- для описания данных 25 вариантов: 4.3.6. Строковые типы. Назначение. Строковый тип определяет множество значений текстовых переменных из символов, но ограниченных по длине текстов. Синтаксис строковый тип: строка ; строка [ выражение ]. Ограничение синтаксиса. Строковый тип - это одномерные массивы компонентов символьного типа, индексируемого значениями целого типа, начиная с единицы до целого, если оно задано, иначе до 255. Семантика. Строковые типы определяют значения строковых величин. Значение строкового типа - строка размера не более 255 или указанного при задании типа. Примеры. строка строка[5] -- тип строки размером 255, -- тип строки длины по числу символов 5. 4.3.7. Именуемые типы. Назначение. Объект именованного типа (типа записи) - это составной объект из именованных компонентов (полей записи), составляемый пользователем. Стандартными типами записи являются составной объект даты из именованных полей дня, месяца и года, составной объект времени из именованных полей часы, минуты и секунды, составной объект комплексных чисел. Синтаксис именуемый тип: запись список определений полей конец записи. определение поля: список новых терминов , символ двоеточия , простое имя типа , возможное начальное значение ; nil. тип даты: дата. тип времени: время. тип комплексный: комплексный. Ограничение синтаксиса. Каждое заданное таким образом описание объекта задает запись (пользовательскую запись, дату, время или комплексное число). Термины всех полей данного именованного типа должны быть различными. Описание записи с несколькими терминами эквивалентно соответствующему числу описаний записей. Если описание объекта включает присваивание выражения, то его значение относится ко всем полям записи, имена полей которых перечислены в описании. Это выражение называется выражением по умолчанию. Семантика. Значение данной записи - составное значение или агрегат записи, состоящей из значений своих полей записи. В качестве иллюстрации ниже приведены описания типов даты, времени, комплексного и события. Они являются производными типами для стандартного использования [Вирт77б]. Считается, что семантически фиксируется стандартный (предопределенный) тип записи «дата», который имеет следующую структуру: тип дата = запись ~день~ : 1..31; ~месяц~ : 1..12; ~год~ : словный; конец записи. Определение используемой даты осуществляется логически путем вычисления логических выражений или путем вызова стандартной процедуры. Смысл даты определяется тремя целыми числами. Внутреннее представление смысла даты задается одним длинным целым числом вида: 1000000*день + 10000*месяц + год. Такие данные в десятичной системе счисления будут просматриваться достаточно просто. Считается, что семантически фиксируется стандартный (предопределенный) тип записи «время», который имеет следующую структуру: тип время = запись ~час~ ~минут_а~ ~секунд_а~ ~дол_я секунд_ы~ конец записи. : 0..23; : 0..59; : 0..59; : 0.0(0.01)0.99; Определение используемого времени осуществляется логически путем вычисления логических выражений или путем вызова стандартной процедуры. Смысл времени определяется тремя целыми числами и десятичным числом. Внутреннее представление времени задается одним вещественным числом вида: 10000*час + 100*минута + секунда + доля секунды / 100 Такие данные в десятичной системе счисления будут просматриваться также достаточно просто. Считается, что семантически фиксируется стандартный (предопределенный) тип записи «комплексные», который имеет следующую структуру: тип комплексный = запись ~Re~ : расширенный; ~Im~ : расширенный; конец записи. Считается, что семантически фиксируется стандартный (предопределенный) тип записи «событие», который имеет (предварительно и фрагментарно) следующую структуру: тип событие = запись ~что~ : словное; -- определяет тип события --………… ~событи_е от мыши~ : ~кнопк_и~: байт; -- состояние кнопок ~дважды~: логический; -- признак двойного нажатия ~где~: типа ссылки; -- координаты курсора мыши ~событи_е от клавиатур_ы~: --……….. ~событи_е сообщени_е~: ~команд_а~: словное; ~код команд_ы~: словное; конец записи. 4.3.8. Табличные типы. Назначение. Объект табличного типа (таблица) - это составной объект из именованных столбцов и из не фиксированного числа строчек. Понятие строчки следует отличать от понятия строки (как лексемы), так как строчка может состоять из некоторого числа полей самых различных типов. Таблица является интегральной памятью данных. Это значит, что внесение в таблицу новых записей приводит к пополнению ее, запись попадет в новую строчку, исключая случай замены строчки новыми данными. Синтаксис табличный тип: имеющаяся таблица ; новая таблица. имеющаяся таблица: таблица равенство идентификатор имеющейся таблицы , ( имя базы данных , возможные запятая список свойств таблицы ) , возможный перечень столбцов символ точки с запятой , конец таблицы. новая таблица: таблица идентификатор новой таблицы , возможный ( список свойств таблицы ) , возможный перечень столбцов символ точки с запятой , возможный индекс последовательность определений ключа. конец таблицы возможное начальное значение. столбец: список новых терминов столбца двоеточие тип столбца , возможное начальное значение символ точки с запятой. новый термин столбца: новый термин , идентификатор столбца. определение ключа: возможный ( список свойств ключа ) , ключ символ точки с запятой. ключ: индекс ; первичный ключ ; внешний ключ. индекс: новый термин ключа равенство выражение. первичный ключ: новый термин ключа равенство ( список имен столбцов ). внешний ключ: новый термин ключа равенство ( список имен столбцов ) двоеточие имя внешней таблицы , (список внешних имен столбцов). тип столбца: символьный ; логический ; строковый ; длинный строковый ; истинностный ; байтовый ; словный ; целый ; длинный целый ; вещественный ; длинный вещественный ; абстрактный ; плавающий вещественный ; фиксированный вещественный ; дата ; время ; файловый ; ссылочный. свойства таблицы: временная ; исключительный доступ ; неопределенное значение. свойство ключа: нет модификации ; уникальный ; один регистр ; прямая сортировка ; обратная сортировка ; первичный. имя БД: строка. имя внешней таблицы: имя таблицы. новый термин ключа: новый термин. (предусмотреть идентификатор!) имя столбца: термин. внешнее имя столбца: идентификатор столбца. имя файла: строка. идентификатор имеющейся таблицы: строка идентификатора. идентификатор новой таблицы: строка идентификатора. идентификатор столбца: строка идентификатора. строка идентификатора: «идентификатор». идентификатор: слово идентификатора ; идентификатор _ слово идентификатора. слово идентификатора: буква ; слово идентификатора , буква ; слово идентификатора , цифра. Ограничение синтаксиса. Каждое описание объекта задает либо имеющуюся в БД, либо новую таблицу. Термины всех столбцов данного табличного типа должны быть различными. Имеющиеся в БД имена таблиц описываются (вообще говоря) новыми именами, которые сопоставляется с имеющимися. Имеющиеся таблицы могут менять свои свойства. Имя таблицы из БД, которая будет использована в запросе, указывается в строке. Для введения своих имен пользователь вводит терминысинонимы имеющимся терминам. Новые таблицы создаются по всем правилам, предписанными средствами ведения таблиц (СУБД). Описание таблицы с несколькими терминами эквивалентно соответствующему числу описаний. Можно воспользоваться операциями СУБД для проведения действий, связанных с пополнением таблиц, редактированием или печатью (показом содержимого). Семантика. Таблица является собранием совместных фактов, которые представляют часть знаний. Таблицы обладают свойствами: временная – таблица будет существовать только во время выполнения СП, исключительный доступ - , неопределенное значение – Тип столбца зафиксирован в описании. Если имеются типы столбцов, не воспринимаемые некоторой СУБД, то применяются подходящие преобразования типов в требуемый тип. Значение столбцов не задается по умолчанию. Таблица создается (открывается) синтезатором программ через СП, если ее нет в СУБД. Синтезатор программ проверяет наличие таблицы в БД. Если она имеется в БД, то она не создается, иначе инициируется. Ошибки описания таблиц или их применений обнаруживаются в динамике выполнения СП. Некоторые операции с таблицами и ее столбцами и строчками рассматриваются в разделе 4.4.1. Значение данной таблицы - составное значение или массив агрегатов записи, состоящий из значений своих столбцов и строчек таблицы. Ключи или индексы создаются для логической связи различных таблиц. Ключи обладают такими свойствами: нет модификации - , уникальный , один регистр - , прямая сортировка - , обратная сортировка - и первичный - . Примеры. ~ ведомост_ь класс_а ~ таблица = "TableOfKlass" FIO: строка; Resalt: целое; конец таблицы. -- Описание таблицы-ведомости класса 4.3.9. Ссылочный тип. Назначение. Объекты, не имеющие имени или имеющие подразумеваемые имена, но обладающие значениями заданного типа, собираются в ссылочный тип. Синтаксис ссылочный тип : ссылка на определение типа. Ограничение синтаксиса. Для каждого ссылочного типа существует один литерал nil, который не ссылается ни на что, он не указывает на объект. Ссылочный тип содержит большое число кодовых литералов (адресов памяти), которое полностью согласуется с объемом памяти ВМ. Пустое ссылочное значение nil является начальным значением этого типа по умолчанию. Значения ссылочного типа генерируются в программах специальной операцией, знание которой пользователю не обязательно. Семантика. Ссылочное значение указывает объект. Смыслом ссылки является адрес ячейки памяти ВМ. Использованием ссылочного типа можно скрывать рекурсивные определения типа. К примеру, при построении списочных структур можно использовать имя типа, который является списочной структурой, при определении этого типа. Пример раздела типа ~список~ : запись ~указател_ь~: ссылка список; ~значени_е~: тип значения; конец записи. 4.3.10. Множественные типы. Назначение. Множество является объектом для исследований или использования. Можно рассматривать конечные и бесконечные множества различной мощности. Синтаксис описание множества: множество ; множество из имя типа омега целое ; множество из имя типа алеф целое ; множество из имя типа. Ограничение синтаксиса. В качестве целого используется положительное значение из натурального ряда. Любое множество (в том числе и неопределенное) должно состоять из элементов одного и того же типа. «омега» используется для задания счетных множеств, «алеф» - для континуальных множеств. Семантика. Множество образует набор смыслов, которые являются элементами для сопоставления их с конкретными данными. Сравнение предназначено для разрешения логической операции принадлежности некоторого значения данного объекта данному множеству. Набор смыслов реализуется либо в процессе логического вывода, либо в результате теоретико-множественных операций с множествами. Тип элемента множества, у которого не задан тип, определяется по контексту фраз, такое множество является абстрактным. Смысл конечного множества определяется набором конкретных элементов, смысл счетного, континуального и абстрактного множеств определяется понятием множества как актуального объекта. Примеры множество, множество омега 2, множество алеф 5, множество из целых. 4.3.11. Последовательностные типы. Назначение. Последовательностные типы определяют непрерывную (без ограничителей) последовательность данных одинакового типа. Последовательностями могут быть файлы с типом или без типа, порождающие или распознающие грамматики в соответствии с их формализмом. Порождающая грамматика записывается на ФЯ Марков, а распознающая - на ФЯ Граф языка (см. гл.5). Синтаксис последовательностный: файл ; текст ; файл из определение типа ; последовательность грамматика. грамматика: порождающая грамматика ; распознающая грамматика. порождающая грамматика: файл с записью на языке Марков. распознающая грамматика: файл с записью на языке Граф языка. Ограничение синтаксиса. Словом «файл» задается нетипизированный файл со значением строки (путь к файлу и имя файла). Словом «текст» задается особый типизированный файл с таким же значением. Словом «последовательность» задается файл, который содержит описание порождающей или распознающей грамматики. Семантика. Файлы содержат исходный материал для обработки, наборы смысловых единиц, предписываемых некоторой величине (понятию). Исходный материал является смыслом последовательности. Примеры. файл текст файл из вещественных последовательность грамматика. 4.3.12. Подпрограммные типы. Назначение. В языке вводится тип, значениями которого являются функции или процедуры - подпрограммы. Синтаксис подпрограммный тип: процедурный тип ; функциональный тип. процедурный тип: процедура ; процедура ( перечень параметров ). функциональный тип: функция символ двоеточия простое имя типа ; функция ( перечень параметров ) символ двоеточия простое имя типа. параметр: вид параметра , определение параметра. вид параметра: возможный признак обмена или доступа. определение параметра: список новых терминов символ двоеточия простое имя типа. признак обмена или доступа: обмен ; ввод ; вывод. значение подпрограммы: логическое выражение ; ссылка на программу. ссылка на программу: строка. Ограничение синтаксиса. Определение процедурного типа задает профиль процедур и функций (или обобщенных операций). Тип формального параметра определяется именем типа. Имеется одна не используемая (виртуальная) константа void для обозначения пустой программы. Семантика. Процедурный тип задает спецификацию подпрограммы и может обозначать функцию или процедуру. Функция выдает значение заданного типа. Описание формального параметра с несколькими идентификаторами эквивалентно последовательности спецификации всех параметров, указанных терминами в списке. Каждый параметр имеет вид, указывающий на свойства этого параметра передавать значение фактического параметра в тело подпрограммы (умолчание вида параметра), из тела подпрограммы (ввод или вывод) или туда и обратно (обмен). Отсутствие вида параметра подразумевает вид ввода. Для параметра может быть задано выражение по умолчанию. Значение выражения должно относится к типу, заданному в спецификации для соответствующего параметра по умолчанию. Имя параметра не может встречаться в данном списке параметров или в выражении по умолчанию. Смысл выполнения подпрограммы может выражаться двумя способами. Первый способ - получение истины, если подпрограмма выполнилась, а второй - ложь, если она не выполнилась по каким-либо причинам. В результате выполнения подпрограммы возможны следующие данные. Процедура имеет в качестве результата процедурное пусто (синоним void). Функция имеет в качестве результата значение-литерал, соответствующее заданному типу значений функции. Поскольку функция участвует в логическом выражении как первичное, полученное значение участвует в дальнейших расчетах смысла этого логического выражения. При невыполнении подпрограммыфункции все логическое выражение становится ложным. Примеры. функция: логический; функция(а,в:целые): логический; процедура. 4.3.13. Абстрактные типы. Назначение. Некоторый новый тип может быть ответом на запрос пользователя. Некоторая задача может оперировать с неопределенными типами данных. В таких случаях задается абстрактный тип. Синтаксис абстрактный тип: абстрактный. Ограничение синтаксиса. На использование абстрактных величин накладывается никаких ограничений, кроме тех, которые оговорены в семантике. не Семантика. Описание абстрактного типа задает проблему определения типа величины в процессе логического вывода (по контексту). Тип может и не определиться или определиться частично. Первый анализируемый контекст может определить характеристики величины, которые могут противоречить характеристикам величины, получаемым в другом контексте, что приведет к обнаружению семантической ошибки. 4.4. Логические выражения. Назначение. Основу логических уравнений (будем пока условно так говорить) составляют логические выражения (фразы, утверждения или просто выражения). Они представляют на ЯПП содержательную часть знания и запросов или их фрагментов. Логические уравнения обрисовывают формально область знаний с точки зрения их применения. Область знания уточняет предметную и проблемную области, результат выполнения выражения (решения логического уравнения) и использования контекста. Область знания по существу обрисовывается всей совокупностью выражений. Синтаксис помеченное логическое выражение: логическое выражение ; метка выражения двоеточие помеченное логическое выражение. логическое выражение: отношение ; операция отрицания , логическое выражение ; логическое выражение , логическая операция , отношение. отношение: простое выражение ; простое выражение , операция отношения , простое выражение. простое выражение: слагаемое ; унарная аддитивная операция , слагаемое ; простое выражение , бинарная аддитивная операция , слагаемое. слагаемое: множитель ; слагаемое , мультипликативная операция , множитель. множитель: первичное ; множитель , операция высшего приоритета , первичное. первичное: литерал ; имя ; квантор ; вызов функции ; вызов процедуры ; преобразование типа ; квалифицированное выражение ; атрибут ; отрезок ; присваивание ; ( перечень логических выражений ). имя: простое имя ; расширенное имя ; элемент таблицы. метка выражения: простое имя. следование в правиле: ->. логическая операция: and ;or ;xor ; => ;<- ; in ;not in. операция одинаковости: = ; <>. операция отношения: операция одинаковости ; < ; <= ; > ; >= . бинарная аддитивная операция: + ; - ; ^ , &. унарная аддитивная операция: + ; -. операция отрицания: not. мультипликативная операция: * ; / ; mod ; div ; \. операция высшего приоритета: ** ; ‘ ; ` ; abs ; not ; pred ; next ; ref ; skim ; математическая функция: sign ; entier ; sqrt ; exp ; ln ; log ; random ; arg ; sin ; cos ; tg ; ctg ; sec ; cosec ; arcsin ; arccos ; arctg ; arcctg ; arcsec ; arccosec ; sh ; ch ; th ; cth ; Arsh ; Arch ; Arth ; Arcth ; min ; max ; sum ; mult. начальное значение: знак присваивания , выражение ; константа. знак присваивания: равенство ; присваивания влево. Ограничение синтаксиса. Формальное определение логического выражения является частью внутреннего представления фраз ЯПП, оно определяет основные черты универсальной грамматики. Семантика. Смысл каждого действия поясняется в отдельности по фразам выражения (по операциям) в соответствующем разделе этой главы. Смысл логического выражения - быть истинным или ложным. Только логические значения допустимы в качестве лексем логических выражений. Все другие лексемы могут быть только составными частями логического выражения. Кроме определенного логического выражения далее в грамматике используется формальное логическое выражение (см. определения правил и подстановок), которое построено по правилам данной грамматики с использованием в составе выражений новых терминов (выделенные термины). Примеры. идет снег или идет дождь, -- операция «или» является синонимом операции \/. А + В * С > sin X M: A => B 4.4.1. Имена. Назначение. Имя - это языковое выражение, обозначающее понятие предмета, явления, процесса или их свойств. Имена обычно подразделяются на собственные (в информатике - лексемы) и несобственные (в информатике - термины понятий). Все имена подразделяются на простые и расширенные. Перечень простых имен дан в таблице. Расширенные имена образуются из простых и, вообще говоря, логических выражений. Практически важны имена, представляющие элемент таблицы. Выбор значений из таблицы или передача значения в таблицу оформляется по принципу адреса значения: «таблица . колонка» или «таблица . столбец». Синтаксис. простое имя: термин. расширенное имя: именуемый компонент ; индексируемый компонент. элемент таблицы: имя таблицы ; имя таблицы символ точки имя столбца ; имя таблицы [ номер строчки ] ; имя таблицы символ точки имя столбца [ номер строчки ] ; имя таблицы символ точки (список столбцов) [ номер строчки ] ; имя таблицы при (логическое выражение ) ; имя таблицы символ точки имя столбца при (логическое выражение ) ; имя таблицы символ точки (список столбцов ) при (логическое выражение ). имя таблицы (череда выражений столбцов ) ; имя таблицы (череда выражений столбцов ) при (логическое выражение ). номер строчки: логическое выражение. череда выражений столбцов: возможный признак упорядочивания , имя ключа ; возможный признак упорядочивания , имя столбца ; череда выражений столбцов , разделитель череды , имя столбца. признак упорядочивания: упорядочить по двоеточие ; упорядочить по возрастанию двоеточие ; упорядочить по убыванию двоеточие. разделитель череды: запятая ; запятая признак упорядочивания Ограничения синтаксиса. Многие имена рассматривались ранее, а составные имена будут рассмотрены в последующих разделах. Внешне запись расширенного имени напоминает вызов (дискретной) функции. Из перечня расширенных имен здесь поясняется лишь понятие элемента таблицы. Оно используется для ссылок на значения в таблицах, в которых задается фактический (накапливаемый) материал или факты. Имена, представляемые терминами, классифицируются на языковые, которые используются в языках Лейбниц или ЯПП, и пользовательские, изобретаемые пользователем. Некоторые языковые словесные имена приведены в таблице. Они могут использоваться в качестве части пользовательского термина или отдельным термином. База данных и схемы в базе данных не описываются в языке, но используются имена, которыми они обозначены в базе данных. Индекс (или ключ) указывает на номер строчки в таблице. Семантика. Смысл расширенного имени раскрывается через его компоненты. Смысл элемента таблицы определяется через значения, которые могут быть получены так. Отдельное имя таблицы Т используется для передачи всей таблицы, сравнения с другими таблицами или для выполнения операций с таблицами. Имя таблицы соединенные с полем (именем столбца) точкой Т.имя используется для выбора всего столбца. Имя таблицы с индексом Т[выражение] используется для выбора строчки таблицы, при этом получается значение записи с полями, задаваемыми именами столбцов. Выражение определяет номер строчки таблицы. Совместная конструкция Т.имя[выражение] определяет одно скалярное значение из столбца «имя» и строчки, определяемой номером (через значение выражения), таблицы Т. Часть записи из табличной строчки выбирается конструкцией Т.(список имен столбцов)[выражение]. Выбор столбца по условию использует операцию «при», правый операнд которой является логическим выражением: Т при выражение. Выбор части таблицы (некоторое число строчек) можно осуществить по условию, заданному логическим выражением по форме: Т при (выражение). Причем скобки можно опускать, если в качестве выражения используется терм. Аналогично записывается выбор части столбца таблицы Т по условию: Т.имя при (выражение). А также выбор части таблицы из нескольких столбцов таблицы реализуется по форме: Т.(список имен столбцов) при (выражение). Выбор всей или по условию части таблицы с преобразованием значений в столбцах осуществляется по формам: Т(череда выражений из столбцов) и Т( череда выражений из столбцов) при (выражение). Череда выражений образуется из имен столбцов, разделенных запятой или запятой с признаком упорядочивания (по возрастанию или по убыванию с двоеточием после этих слов). Признак упорядочивания может помещаться перед первым выражением из столбцов. Условие в операции «при» предназначено для тех же целей условного выбора части таблицы. Примеры. Имена понятий задаются терминами, которые приведены в таблице. Номер п/п Классы имен 1 2 имя анкеты имя атрибута 3 4 5 6 7 8 9 10 11 12 13 14 имя базы данных имя базы знаний имя библиотеки имя документа имя запроса имя знания имя исключения имя метапонятия имя метки имя отношения имя правила имя прагмы 15 16 17 18 19 20 имя преобразования имя раздела раздел библиотеки имя термина имя шаблона имя языка Пояснения Анкета именуется идентификатором файла Каждый атрибут зафиксирован в языке, все они приведены в Приложении Каждая БД может быть поименована Каждая БЗ должна быть поименована Каждый запрос именуется Каждый раздел знаний именуется Некоторые объекты обозначают класс понятий Некоторые выражения помечаются именем Каждая прагма зафиксирована в языке, все они приведены в Приложении Каждое преобразование имеет имя некоторые разделы знаний именуются Разделы библиотеки именуются стандартно Каждый объект имеет термин Шаблон именуется идентификатором файла Используются известные и пользовательские имена формальных языков Термины подразделяются на сорта, которые представлены в таблице ниже. Номер п/п 1 2 3 4 5 6 7 8 9 10 Классы терминов лексема величина тип перечислимое синоним массив запись таблица поле записи связная переменная Пояснения константа некоторого типа простого типа для простых лексем многозначные логики введение собственных терминов набор однотипных значений заданного размера набор значений заданных типов и размеров последовательность записей связанная с записью величина заданного типа для квантора всеобщности, квантора 11 функция 12 14 операция процедура существования, имени элемента множества в агрегате, поля, ключа, параметров функции и процедуры имя вызываемых действий для получения значения одноместное или двуместное действие имя вызываемых действий К именам объектов языка относятся простые имена, указанные в таблице. Номер п/п 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Наименование имени имя величины имя типа имя синонима имя массива имя таблицы имя записи имя формулы имя связной величины имя функции имя подпрограммы имя пользователя имя файла имя Интеллсист имя операции имя квантора имя модуля имя параметра имя квантора Пояснения термин объекта термин набора значений термин ссылки на основной термин термин набора однотипных данных термин массива записей в БД термин набора разнотипных данных термин метки перед выражением термин скрытой величины термин функции термин подпрограммы фамилия, имя (и отчества) идентификатор файла термин системы знак или термин операции термин квантора идентификатор модуля термин параметра термин квантора Семантика. Смысл имени определяется в соответствии с описаниями имен. Примеры. для всякого скорость размер sin -- имя квантора, -- имя величины, -- имя атрибута, -- имя математической функции. Некоторые имена имеют фиксированный смысл. Ниже даны пояснения для системы стандартных величин. Часть функций и операций определены в таблице операций, часть определены стандартной БЗ. Примем для этих пояснений следующие обозначения: Т - имя таблицы, Т[i] - строчка i таблицы Т, Т.f - колонка f таблицы Т, Т.(f1, f2,…,fк) - совокупность колонок f1, f2,…,fк из таблицы выр - некоторое логическое выражение. удалит_ь из(Т) -- процедура удаления (очистки) таблицы Т; удалит_ь из(Т[i]) -- процедура удаления строчки i таблицы Т; удалит_ь из(Т при выр) -- процедура удаления строчек таблицы Т по условию выр; добавит_ь к(Т, выр) -- добавить строчку выр (запись) в таблицу Т; добавит_ь к(Т1.f1, T2.f2) -- добавить столбец T2.f2 к столбцу T1.f1 в таблице Т1; добавит_ь к(Т.f, выр) -- добавить значение выр к столбцу T.f в таблице Т; добавит_ь к(Т.( f1, f2,…,fк), выр) -- добавить к столбцам f1, f2,…,fк выр (запись) в таблице Т; удалит_ь повторяющ_иеся строчк_и(Т) - в таблице Т удаляются одинаковые строчки кроме одной; среднее значение(Т.f) - операция вычисления среднего значения для всех чисел в колонке f таблицы Т; При расширении ЯПП будут добавлены теоретико-множественные операции с таблицами. Например, будут добавлены операции "объединения", "общая с", "за исключением" и др. 4.4.2. Кванторы. Назначение. Кванторы - это логическая операция перебора или поиска значений, представленная записью кванторов всеобщности или существования соответственно. Квантор всеобщности перебирает известные термины (например, «для», «для всякого» и др.), с задаваемыми или уже определенными подкванторными выражениями для связной величины, квантор существования (например, «найти», «существует» и др.) - с неизвестными терминами в качестве связной величины, требующие поиска значений (смыслов) по логическим значениям подкванторного выражения. Синтаксис квантор: наименование квантора , список связных переменных , ( логическое выражение ). наименование квантора : для всякого ; существует. связная переменная : список новых терминов ; список новых терминов двоеточие простое имя типа. Ограничение синтаксиса. Связная величина является локальной. Она должна быть описана как термин с типом или без него. Если тип отсутствует, то считается, что она описана как абстрактная величина. Семантика. Смысл связной величины, представленной термином некоторого типа, либо задается в тексте знания или запроса (в кванторе всеобщности), либо находится в процессе логического вывода (в кванторе существования). Смысл любого квантора определяется в зависимости от смысла подкванторного выражения и равен ложь или истина. Если все задание не охвачено квантором, тогда (автоматически) реализуются аналитические выкладки, если задание охвачено кванторами, то реализуется построение программы. Внешние кванторы могут задаваться явно или неявно путем указания входных величин (квантор всеобщности) и искомых величин (квантор существования). Примеры. для всякого Х(А(Х) или В(Х)), для всякого Х(А(Х) => существует У(В(Х, У))). -- квантор всеобщности, -- формулировка проблемы --поиска алгоритма. 4.4.3. Вызов функции. Назначение. Вызов функции - это обращение к ее описанию с подстановкой ее значения или с выполнением выражения - начального ее значения. Вызов функции также определяет инициализацию пользовательской операции или математической функции. Синтаксис вызов функции: термин функции , возможный агрегат фактических параметров. агрегат фактических параметров: ( позиционное сопоставление полей записи ) ; ( позиционное сопоставление полей записи символ запятой возможный список позиционных сопоставлений полей записи , возможный список именованных сопоставлений полей записи ). термин функции: термин ; математическая функция. Ограничение синтаксиса. Функция используется в составе выражения или вместо выражения. Профиль функции определяется при ее описании и состоит из имени функции, перечня параметров с их типами и порядком следования, а также тип, предписанный для значений функции. Вызов функции и ее описания должны иметь одинаковый профиль, типы фактических параметров должны быть такими же как и в описании. Математические функции предопределены во встроенных знаниях. Они являются стандартными. Допускаются функции с одинаковыми терминами, но с различными профилями. Значение функции может задаваться строкой из пути и имени файла реализации этой функции кодами. Семантика. Смысл функции определяется в результате вычисления выражения, заданного для функции в описании или полученного в результате вычисления выражения. Смысл функции должен соответствовать типу, предписанному для значений функции. Примеры. F(X), F(X, Y), G, cos(A) -- две функции имеют одинаковые имена, -- но различные профили. -- математическая функция может записываться без скобок для параметра. 4.4.4. Вызов процедуры. Назначение. Вызов процедуры - это обращение к ее описанию. Вызов процедуры также определяет инициализацию пользовательской операции преобразования данных или входных параметров и определения значений некоторых терминов или выходных параметров. Синтаксис вызов процедуры : термин , возможный агрегат фактических параметров. Ограничение синтаксиса. Процедура используется как самостоятельное выражение, но не в составе другого выражения. Профиль процедуры определяется при ее описании и состоит из имени процедуры, перечня параметров с их типами и порядком следования. Для всех процедур предписано пустое статическое значение (или смысл) void. Вызов процедуры и ее описания должны иметь одинаковый профиль. Значение процедуры может задаваться строкой из пути и имени файла реализации этой процедуры кодами. Допускаются процедуры с одинаковыми терминами, но с различными профилями. Значение процедуры может задаваться строкой из пути и имени файла реализации этой функции кодами. Семантика. Смысл процедуры в динамике выполнения есть истина, если она выполнилась, и ложь в противном случае. Процедура связана с выполнением выражения или выражений, которые предписаны при ее определении. Предписание может состоять из последовательности выражений или из ссылки на подпрограмму (математическую модель предмета, явления или процесса), выполненной в виде строки, содержащий путь и файл с кодом этой процедуры. Примеры. вычертить (а, в, с, д) -- построение прямой линии, модель перемещения робота(А, В) -- обращение к готовой подпрограмме. 4.4.5. Преобразование типа. Назначение. Значения некоторого исходного типа могут быть преобразованы в значения другого совместимого по смыслу со значениями исходного типа. Преобразования могут быть явными, подразумеваемыми и неявными. Явные преобразования - это функция перекодировки или приведения данного к заданной внутренней структуре, все они рассматриваются в данном разделе. Подразумеваемые преобразования - это явные преобразования без указания типа перед выражением. Неявные преобразования - это преобразования, производимые Интеллсист в полном соответствии с грамматикой ЯПП и поддержанные операционными системами. Синтаксис преобразование типа : простое имя типа ( логическое выражение ). Ограничение синтаксиса. Преобразование значения допустимо только для согласованных типов данных. Согласование логического выражения с указанным типом допустимо в соответствии с приводимой ниже таблицей. Каждый тип может преобразовываться в тот же самый тип. Это относится и к пользовательским типам. Пользовательский тип «раскрывается» до основного языкового типа для осуществления контроля над правильностью преобразований. В целые типы можно преобразовывать только те целые значения, которые имеют тип, являющийся подтипом целого типа. Целые типы находятся в таком соответствии (для положительных чисел): короткий < целый < байтовый < целый словный < длинный целый (для любых чисел): короткий < целый < длинный целый, байтовый < целый словный. Целый с шагом и целый в диапазоне условно являются надтипами всех целых типов. Условность состоит в том, что система осуществляет непрерывный контроль типа выражения и указанных типов в процессе преобразования. Могут возникнуть ошибки, если типы границ не согласуются с типом преобразования. В вещественные типы можно преобразовывать только те целые и вещественные значения, которые имеют тип, являющийся подтипом целого типа. Целые и вещественные типы находятся в таком соответствии (для положительных чисел): короткий < целый < байтовый < целый словный < короткий вещественный < вещественный < длинный целый < длинный вещественный < расширенный вещественный Данные соотношения надо понимать условно (с позиции целой части вещественных чисел). Фиксированный вещественный и плавающий вещественный условно являются надтипами некоторых целых или вещественных типов соответственно. Условность состоит в том, что система осуществляет непрерывный контроль типа выражения и указанных типов в процессе преобразования. Могут возникнуть ошибки, если типы границ не согласуются с типом преобразования. В символьный тип могут преобразовываться перечислимый, короткий целый и байтовый типы. Преобразование перечислимого типа приведет к получению символа с кодом, совпадающим с кодом литерала перечислимого. В перечислимый и ссылочный типы могут преобразовываться только значения всех целых типов. В тип массива могут преобразовываться все типы значений, которые могут быть указаны в описании массива. Скалярная величина тиражируется так, что все компоненты массива становятся равными значению этой величины. В строковый тип могут преобразовываться символьные типы и все целые и вещественные типы значений. Сопоставленные выше типы для преобразований условно называются совместимыми по смыслу. Семантика. Смысл выражения для преобразования не изменяется, но возможно с минимальными потерями знания или смысла преобразуемого значения. Потеря допускается только пользователем. Примеры. вещественный(7) строка(«ф») -- преобразование 7 в 7.0, -- преобразование символьного в строку. 4.4.6. Квалифицированное выражение. Назначение. Значения некоторого исходного типа могут быть квалифицированы. Значение выражения сохраняется, не преобразуется. Осуществляется проверка типа значения указанному типу. Для создания короткого контекста выражение может быть квалифицировано заданным типом. Синтаксис квалифицированное выражение: простое имя типа ` ( логическое выражение ) ; первичное выражение , простое имя типа. Ограничение синтаксиса. Квалификация значения допустима только для согласованных типов данных. Согласование логического выражения с указанным типом допустимо только для одинаковых типов выражения и указанного типа. Семантика. Смысл выражения после квалификации не изменяется, но может возникнуть новое понимание смысла в зависимости от контекста. Примеры. целый`(25 метров), вещественный`(6), целый`(возможно). 4.4.7. Атрибуты. Назначение. Каждый объект знания полностью характеризуется своими атрибутами, которые либо известны пользователю, либо они скрыты в БЗ. Извлечение значений атрибутов осуществляется с помощью стандартных терминов. Синтаксис атрибут: простое имя атрибута ‘ первичное выражение ; первичное выражение ‘ простое имя атрибута. Ограничение синтаксиса. Логическое выражение должно быть первичным для точного указания объекта, к которому применяется операция выбора атрибута. Сложное логическое выражение заключается в круглые скобки. для перевода его в разряд первичного выражения Смена атрибута объекта не допускается. Ограничения, накладываемые на применение атрибутов, указаны в Приложении. Семантика. Смысл характеристики объекта. операция выбора атрибута совпадает со смыслом Примеры. размер ‘ массива А, размерность ‘ массива А. 4.4.8. Индексируемые компоненты и отрезки. Назначение. Выбор из массива одного компонента или подмассива по диапазону индексного значения называется индексируемым компонентом и отрезком. Индексируемые компоненты могут быть именами, с помощью которых изменяются значения массива. Отрезок может быть построен только для одномерного массива. Диапазон индексного значения должен быть частью заданного диапазона для первого индекса. Синтаксис индексируемый компонент: простое имя массива ; простое имя массива [ список индекса ]. отрезок: простое имя массива [ значение индекса , символ точки , символ точки , значение индекса]. значение индекса: логическое выражение. Ограничение синтаксиса. Все индексы должны удовлетворять условиям принадлежности их диапазонам для соответствующих индексов из описания массива, число индексов должно полностью соответствовать числу индексов в описании массива. Семантика. Операция индексирования всегда находит конкретный смыслзначение (а для отрезка - набор значений), помещенное в массиве или придает элементу массива (а для отрезка - набору элементов) новый смысл, если индексируемый компонент или отрезок помещен в левой части присваивания. Примеры. А[25, 44], В[5..9] индексируемый компонент массива А и отрезок массива В. 4.4.9. Именуемый компонент. Назначение. Выбор значений из записи или передача значения в запись оформляется по принципу почтового адреса «страна . город .улица .дом .квартира .имя». Синтаксис именуемый компонент: имя записи символ из имя поля ; имя записи символ из именуемый компонент. имя поля: простое имя. Ограничение синтаксиса. Не допускается сокращение в записи «адреса» элемента записи, например недопустим считается адрес «улица . дом . имя» и другие варианты сокращения. Семантика. Смысл именуемого компонента определяется смыслом поля записи. Примеры. Re . F -- есть вещественная часть комплексного числа, Im . F -- есть мнимая часть комплексного числа 4.4.10. Запись алгоритма. Назначение. Запись команд необходима для представления алгоритмического знания. Запись алгоритмов включает присваивание, метку выражения (см. раздел 4.4), переход по метке и операцию катенации выражений. Присваивание определяет подстановку логического выражения вместо вхождения имени величины. Обмен определяет обоюдную смену значений двух величин. Логическое выражение может быть помеченным термином метки, тогда выражение становится точкой входа для реализации потока управления. Переход по метке (аналог goto) реализует переход на выражение с этой меткой. Операция катенации фиксирует последовательность выражений в алгоритме. Синтаксис присваивание : присваивание влево ; присваивание право ; обмен ; следование в правиле. присваивание влево : имя двоеточие , равенство логическое выражение. присваивание право : логическое выражение равенство, двоеточие имя. обмен : имя двоеточие , равенство, двоеточие имя. переход по метке: перейти к метка. операция катенации: помеченное логическое выражение , катенация программ , помеченное логическое выражение ; операция катенации , катенация программ , помеченное логическое выражение. катенация программ: символ точки ^ ; символ точки с запятой ^. Ограничение синтаксиса. В качестве имени не допускается использование вызова функции, допускается использование имени функции в логическом выражении, определяющем функцию. Присваивание не допускает никакого преобразования значения логического выражения перед присваиванием или обменом. Тип значения должен соответствовать типу имени по значениям и по структуре. Переход по метке не может вести во вне процедуры. Семантика. Смысл имени в левой или правой частях присваивания становится новым и равным получаемому значению логического выражения. Смыслы имен в обмене обмениваются друг с другом. Смысл присваивания определяется значением истина, если присваивание осуществилось, иначе оно определяется значением ложь. Смысл перехода по метке всегда определяется значением истина. Значение операции катенации после выполнения равно истина и равно ложь, если в одном их двух выражений произошло прерывание с выходом из алгоритма. Примеры. Х:=1; Y:=2; метка выражения: Z:=3; если Х=0, то перейти к метке выражения; X:=F1(a, b) ^ Y:=F2(a, b) 4.5. Разделы записей на языке Лейбниц Назначение. Текст знания на языке Лейбниц состоит из разделов, каждый из которых может быть или отсутствовать или повторяться несколько раз. Разделами текстов знания или запроса являются соответствующие содержания разделов. запись на языке Лейбниц: раздел языка ; запись на языке Лейбниц , раздел языка. раздел языка: раздел наименование раздела , содержание раздела , конец раздела; раздел языка , содержание раздела , конец раздела. содержание раздела: описание меток ; описание типа ; описание понятий ; описание метапонятий ; описание синонимов ; описание вводных фраз ; описание отношений ; описание исключений ; описание операций ; описание правил ; описание подстановок ; описание масштаба ; база знаний ; описание запросов. конец раздела: символ точки ; символ точки с запятой. Ограничение синтаксиса. Все определения группируются в квалификационные разделы с соответствующим наименованием: 1. раздел управления - описание меток с наименованием метка; 2. раздел о предметной области - это описание типов с наименованием тип, описание понятий с наименованием понятие, описание метапонятий с наименованием метапонятие, описание синонимов с наименованием синоним или описание вводных фраз с наименованием вводные; 3. раздел о проблемной области - описание отношений с наименованием отношение, описание операций с наименованием операция, описание исключений с наименованием исключение, описание правил с наименованием правило, описание подстановок с наименованием подстановка, описание масштаба с наименованием масштаб; 4. раздел о библиотеках - описание библиотек с наименованием библиотека; 5. раздел области знаний - база знаний с наименованием знание; 6. раздел области запросов с наименованием запрос; 7. раздел области систем с наименованием система. Каждый сорт раздела имеет свое наименование, которое дается в соответствующем описании раздела (в параграфе задания знаний или запросов). Выше в тексте перечня разделов полужирным шрифтом выделены зарезервированные слова, которые могут использоваться во множественном числе, например, раздел запроса, раздел запросов и раздел запрос. Раздел запроса в тексте должен быть последним и единственным. Семантика. Смысл каждого раздела ясен из его заголовка. Раздел пользователя определяет имя и пароль конкретного пользователя - это единственный смысл раздела. Предметная область - набор совокупностей имен и данных, которые являются или будут являться именами и значениями для фактов. В этом разделе определяются множества данных (типы), новые термины понятий или метапонятий и синонимы ранее введенных терминов. Смысл элемента предметной области ясен из объяснений смысла лексем. Проблемная область - набор допустимых операций над предметной областью. В разделе о проблемной области определяются пользовательские операции. Операции, которые предопределены в языке Лейбниц, описаны полностью в языке. Смысл вводимой пользователем операции ясен пользователю, если соблюдены все правила СеГ. Область библиотеки включает сопровождаемыми карточками семь разделов: таблицы символов, языка представления знаний, лексиконы, БД, БЗ, подпрограммы и варианты Интеллсист. Смысл элемента библиотеки ясен из его карточки. Области знаний и запросов определяются пользователем, их смысл известен пользователю. Область систем формируется из версий и редакций Интеллсист, которые либо приобретаются, либо формируются пользователем по правилам композиции одних и тех же или различных Интеллсист. Все базовые операции являются примитивами языка и языкового процессора. Каждая базовая операция полностью описана во встроенной БЗ. Кроме этих операций имеются внутренние операции логического процессора вывода решения и обработки знаний и запросов. Базовыми операциями являются: термин, нуль, единица, числовой литерал, символьный литерал, строковый литерал, предопределенная операция, термин с индексом, термин именования, отрезок, вызов функции, вызов подпрограммы, квалификация, преобразование типа, неявное преобразование, атрибут, квантор всеобщности, квантор существования, агрегат массива, агрегат записи, агрегат множества. Описание операций вводит новые термины для обозначения действий над данными. 4.5.1. Раздел пользователя. Назначение. Идентификация пользователя реализует доступ его в Интеллсист, в библиотеку или к файлу, если его пароль будет принят системой. Пароль создается администратором и распадается на две части: открытая для указания имени и скрытая частного символьного набора. Синтаксис описание пользователя : простое имя пользователя , пароль. Ограничение синтаксиса. Пользователь входит в Интеллсист санкционировано разработчиком или администратором Интеллсист. Пароль сопровождается сокрытием материала знаний, запросов и др. Вход в систему инициирует все подготовительные работы. В языке Лейбниц синтаксис описания пользователя используется только через меню при входе в систему. Семантика. Смысл имени и пароля заключается в защите знаний и запросов от несанкционированного использования. Пример: А.А. Красилов = intellsyst. 4.5.2. Определения типов. Раздел о предметной области. Назначение. Описание типа задает множество значений (смыслов) понятия с требуемыми свойствами значений и набором операций над данными этого типа. Описание типа определяет первый этап формализации знаний, оно формируется пользователем. Синтаксис описание типа: описание без идентификатора ; описание с идентификатором. описание без идентификатора: список новых терминов равенство определение типа ; описание с идентификатором: список новых терминов равенство определение типа двоеточие строка. Ограничение синтаксиса. Типы различных описаний являются различными даже при графическом совпадении определений типов. Описание типа, предписанное списку новых терминов, одинаково для всех новых терминов списка. Семантика. Тип термина - это множество значений для термина вместе с операциями над этим множеством. Описание типа задает новый термин для обозначения множества данных некоторой природы и атрибуты этого множества. Генерация Интеллсист начинается с построения предметной области. Она сводится к формированию типов данных, из которых будет сформирована БЗ. Типы могут быть простыми, например числовые или символьные, и сложные, например массивы или записи. Принадлежность типу определяется выполнением логического выражения. Если его значение истина, то значение принадлежит типу, в противном случае не принадлежит. Предписание об использовании идентификатора, записанного в строке, необходимо при создании пакета подпрограмм. В строке записывается идентификатор типа с предшествующим путем описания типа. В этом случае тип можно именовать внешним типом относительно пакета. В частности он может быть заимствован из других программных систем. Примеры. тип ~диапазон номер_ов~ ~метр~ ~кулон~ ~грамм~ = 1 (1) 100; = вещественный; = вещественный; = вещественный. 4.5.3. Определения понятий. Раздел о предметной области. Назначение. Понятие является главным атрибутом знания и запроса. Только через понятия передается любое знание. Понятие представляется термином с или без его значения. Описание понятие определяет второй этап формализации знаний. Синтаксис описание понятий: перечень описаний терминов. описание термина: список новых терминов , двоеточие , определение типа ; Ограничение синтаксиса. Если после описания типа помещен знак равенства, то термин определяется как константа, введенная своим обозначением. Тот же самый эффект будет при помещении слова «константа». Конкретное значение может быть задано перед запуском программы после разрешения запроса. Если после описания типа помещен знак присваивания влево с логическим выражением, то термин определяется как величина с этим начальным значением. Значение логического выражения должно быть того же типа что и тип величины. Без начального значения термин также определяется как величина, принимающая значения либо при логическом выводе, либо при запуске программы. Семантика. Смысл понятия представляется следующими атрибутами: термин и его номер, сорт термина, тип и структура значений, текущее значение (и дата введения термина, проставляемая в лексиконе автоматически). Примеры. а, б, в : целые; аа, бб, вв : вещественные := 0; пи, ее : константы. 4.5.4. Определения метапонятий. Раздел о предметной области. Назначение. Понятия могут собираться в кластер, для построения классификации или иерархии этих понятий и для формирования запросных анкет. Метапонятие служит для создания контекста или классификации терминов описания знаний. Описание метапонятия также определяет второй этап формализации знаний. Синтаксис описание метапонятия: новый термин равенство ( список терминов ). Ограничение синтаксиса. В списке допускается использовать только уже определенные (выше по тексту запроса или знания) термины. Семантика. Смысл метапонятия заключается в описании классификации известных понятий на данном уровне иерархии. Среди понятий в списке терминов могут использоваться вновь метапонятия, показывая зависимости в иерархии. Примеры. ~болезни~ = (грипп, ОРЗ, простуда, недомогание). 4.5.5. Определения синонимов. Раздел о предметной области. Назначение. В предметной области определяются новые термины для понятий с известным смыслом (синоним). Синоним в ЯПП является самым употребительным понятием, с его помощью создается разнообразие выразительных средств для представления знаний о предметах, явлениях или процессах. Описание синонима также определяет второй этап формализации знаний. Все величины и операции на ЕЯ и ЯПП могут иметь синонимы, представленными подходящими терминами (или даже фразами и фразеологизмами). Синтаксис описание синонимов: список новых терминов равенство составной термин. составной термин: термин ; составной термин из термин. Ограничение синтаксиса. В качестве термина может использоваться синоним другого термина. При назначении синонима для имени поля записи или столбца таблицы используется составной термин, включающий термин записи или термин таблицы соответственно. Семантика. Синоним - это новый термин, имеющий смысл некоторого известного термина. Примеры. ~if~ = если, ~сложить~ = +. ~ведомост_ь документ_ов~ = сборная ведомость из документа. 4.5.6. Определения отношений. Раздел о проблемной области. Назначение. Описание отношений вводят новые множества - декартовые произведения множеств. Работа по определению отношений относится к определению новых пользовательских множеств-отношений для конкретного применения. Синтаксис описание отношений: список новых терминов равенство множество значений ; описание отношений * множество значений. множество значений: простое имя типа ; простое имя множества. Ограничение синтаксиса. Исходные множества представляются типами или множествами данных, которые имеются в языке Лейбниц или введены пользователем как новые типы данных или множества. Семантика. С помощью декартового произведения множеств порождается отношение. Смысл отношения - множество агрегатов и их смыслов. Примеры. ~решетк_а на плоскост_и~ = целое * целое ~сло_й векторов~ = вектор * целых -- использование двух -- зарезервированных слов допустимо 4.5.7. Определения операций. Раздел о проблемной области. Назначение. Иногда стандартных (фундаментальных) действий (операций) над операндами недостаточно, поэтому пользователь сам может ввести свои действия и сообщить их свойства для Интеллсист. Новые операции вводятся после объявления новых типов данных. Действия можно ввести двумя способами: в форме функции и в форме одно- или двуместной операции. Операция от функции отличается тем, что она может применяться к одному или двум операндам, а функция к нулю, одному, двум и более операндам. Описание операции (как и функции) задается аксиоматически или правилами преобразования. Кроме этого операция не требует группирования операндов (как для функции). Операция обозначается термином. Работа по определению операций относится к третьему этапу процесса формализации знаний. Синтаксис описание операций: определение операции. определение операции: образ операции. образ операции: новый термин операции ( перечень формальных параметров ) двоеточие простое имя типа. формальный параметр: список новых терминов символ двоеточия простое имя типа. новый термин операции: стандартный термин операции ; новый термин. Ограничение синтаксиса. Операции бывают только одноместные (префиксные) и двуместные (инфиксные). Если в качестве обозначения операции используется стандартное обозначение предопределенной операции, то приоритет операции сохраняется таким, каким он является в описании этой операции. Пользовательская операция имеет наивысший приоритет. Понизить приоритет можно путем расстановки скобок. Знак операции может выбираться из числа имеющихся, но типы операндов этой операции должны быть новыми. Значение операции, задаваемое после знака присваивания, должно иметь тип, совпадающий с типом результата операции. Операции и их старшинство. В выражении (или фразе) должно учитываться старшинство операций и использоваться меньшее количество скобок для указания порядка выполнения операций. Ниже приведена иерархия операций с пометкой номера ранга (Пункт-ранг) операции. Пункт – ранг 1 2 3 4 5 6 7 8 9 10 11 12 Операции и некоторые синонимы := =: => <- ^ xor \/ or /\ and = <> < <= => > in not in .. + - \ ^ & :=: + - abs not pred next ref skim * / mod div ** ' ` @ агрегат, (), [], {}, квантор, функция, преобразование, индексирование, именование, отрезок, Наименование основных операций обмен, присваивание влево и вправо следование вправо и влево логическая операция «или» логическая операция «и» равенство и неравенство неравенство - отношение порядка принадлежит и диапазон бинарные операции и катенация унарные операции группа умножения и композиции операции высшего приоритета Базовые операции наивысшего приоритета (квалификация), атрибут. Применения стандартных операций. Для краткости под типом будем понимать значения любой логики, под целыми и вещественными вещественные типы соответственно, целые и вещественные типы арифметическими, под множествами - все типы множеств. С такими рассмотрим таблицы допустимых типов операндов и типов результата операции. логический все целые и называются оговорками применения Логические операции or (или), xor (исключающее или), and (и), not (не), => (следование), <- (обратное следование) применяются для любых логических с результатом соответствующего типа логический. Логические операции in (принадлежит), not in (не принадлежит) применяется для множества (слева) и выражения того же типа, что и тип элемента множества. Операции отношения = (равно), <> (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно) применяются для любых типов данных с результатом типа логический. Арифметические операции + (сложение), - (вычитание), * (умножение), / (деление), ** (возведение в степень) применяются для любых арифметических типов с таким же арифметическим типом результата. Они применяются для множеств как операции объединения, симметричной разности, декартового произведения и соответственно с результатом типа множество. Кроме этого для множеств имеется операция разности (\). Арифметические операции mod (остаток целочисленного деления) и div (частное целочисленного деления) имеет в результате значение целого типа. Одноместные арифметические операции + (сохранение знака), (изменение знака) сохраняют тип результата. Функциями математического анализа являются: sin (синус), cos (косинус), tg (тангенс), ctg (котангенс), lg (двоичный логарифм), exp (экспонента), arcsin (арксинус), arccos (арккосинус), arctg (арктангенс), arcctg (арккотангенс), entier (целая часть), sign (знак числа), random (случайное число), sec (секанс), cosec (косеканс), sh (гиперболический синус), ch (гиперболический косинус), th (гиперболический тангенс), cth (гиперболический котангенс), Arsh (гиперболический арксинус), Arch (гиперболический арккосинус), Arth (гиперболический арктангенс),Arcth (гиперболический арккотангенс), sqrt (квадратный корень), arg (аргумент), log (десятичный логарифм), abs (абсолютное значение), min (минимум), max (максимум), sum (групповое сложение), mult (групповое произведение) применяются к значениям арифметического и комплексного типов из известного допустимого диапазона с результатом соответствующего типа. Функции next (следующий) и pred (предыдущий) применяются к значениям дискретного типа с результатом того же типа. Функции суммирования, произведения, максимума и минимума sum(i,1,n,E(i)) суммирование выражения E(i) по индексу i от 1 до n, sum(i,Cond,E(i)) суммирование выражения E(i) по условию, sum(А1, А2, А3,..,Ак) суммирование из списка, sum(E) суммирование элементов из массива. Аналогично рассматриваются групповые операции mult - произведение, max – максимальное значение или min - минимальное значение. Остальные операции: ref A взять ссылку А, skim A снять ссылку с А, А^В катенация программ и строк, @ композиция функций и отношений. Семантика. Все вводимые операции имеют смысл, который им предписывает пользователь простым именем простого типа результата. Смысл некоторых операций может определиться в процессе логического вывода по заданному значению операции. Операции-константы задаются формами = const или = логическое выражение. Операции-величины, задаются умолчанием или формой := логическое выражение. Неопределенные операции задаются только своим образом, они являются величинами. Таким образом, смысл операции может быть вычислен по логическому выражению, помещенному после знаков равенства или присваивания, либо ее смысл определен предписанным типом. Примеры. ~+~ -- сложение в метрах (~X~, ~Y~: метр): метры = вещественный(X) + вещественный(Y). ~-~ -- вычитание в метрах (~X~, ~Y~: метр): метры = вещественный(X) - вещественный(Y). ~*~ -- умножение в метрах (~X~, ~Y~: метр): метры = вещественный(X) * вещественный(Y). ~/~ -- деление в метрах (~X~, ~Y~: метр): метры = вещественный(X) / вещественный(Y). 4.5.8. Определения исключений. Раздел о проблемной области. Назначение. К области знания относятся фразы знания, использующие исключения, которые при инициализации, вызванной оговоренными условиями, в процессе вывода вызывают дополнительное знание. Работа по определению исключений относится ко второму этапу процесса формализации знаний. Введение исключений (анализ исключительных ситуаций) связано с обработкой ошибок в знаниях так, чтобы исключить порождаемые ошибки. Для продолжения работы Интеллсист обнаружение ошибки связано с ее исправлением. Автоматическое исправление может оказаться неудачным, тогда могут возникнуть порождаемые ошибки. Если в исправление вмешивается пользователь через исключения, то вероятность появления порождаемых ошибок весьма существенно снизится или произойдет их автоматическое исправление. Пользователь должен предвидеть появление таких ошибок. В качестве процедуры обработки ошибок он должен предусматривать рациональные исправления обнаруживаемой ошибки. Список ситуаций, в которых может возникнуть ошибка следующий: любой период трансляции, логический вывод, автоматическое программирование, счет по программе и необходимость показа самой ситуации. Исключения бывают при (1) обработке файлов, (2) выделении памяти, (3) неправильном использовании ресурсов Интеллсист, (4) создании форм в процессах Интеллсист (или документов), (5) конфликтах ОС и ВМ, (6) выходе за границы и др. При выходе на исключение выполняется предписанная ему процедура. Имеются встроенные стандартные исключения, которые даны в Приложении (останов по времени, старайся вывести, но не получится, показать ошибку, выдать сообщение, часы, ошибки ОС, нет памяти, «значение вышло за диапазон» и др.). Синтаксис описание исключения: новый термин двоеточие логическое выражение. Ограничение синтаксиса. Каждый раз задается логическое выражение, определяющее действия при возникновении исключительной ситуации. Для данного исключения определяется одно логическое выражение. Все исключения подразделяются на стандартные и пользовательские исключения. Семантика. С помощью исключений «подправляется» решение запроса в соответствии с логическим выражением, которое и выражает смысл исключения. Примеры. ~больш_ой массив~ = перейти на обработку этого исключения. 4.5.9. Определения правил. Раздел о проблемной области. Назначение. Правила являются сжатой формой передачи знания об аксиоматическом определении применяемых пользователем операциях, величинах, константах или их композиций. Синтаксис описание правила: новый термин двоеточие определение правила. определение правила: формальное логическое выражение символ правила логическое выражение. формальное логическое выражение: логическое выражение. Ограничение синтаксиса. Правило является контекстным сжатием знаний или средством порождения новых фактов или утверждений о фактах. Формальное логическое выражение может содержать новые термины. Они используются так, как будто бы этот термин вставлен в выражение правильно и по синтаксису логического выражения. Имя правила используется только для ссылки на правило (если в этом имеется необходимость при формировании пути логического вывода). Семантика. Правило реализует формальную подстановку по всему тексту знаний с заменой и учетом всех величин и лексем. Смысл правила состоит в порождении новых утверждений о фактах, если контекст формального логического выражения учтен в преобразуемом логическом выражении. Новый термин может совпадать с другими терминами знания или запроса, а также с терминами ранее определенных правил. 4.5.10. Определения подстановок. Раздел о проблемной области. Назначение. Подстановка реализует регулярную замену одних логических выражений другими. Подстановка реализует простое действие по логическому выводу. Синтаксис описание подстановок: новый термин двоеточие определение подстановки. определение подстановки: формальное логическое выражение символ подстановки логическое выражение. Ограничение синтаксиса. Если присваивание осуществляет замену термина логическим выражением, то подстановка осуществляет контекстную замену фраз логическим выражением. Имя подстановки используется только для ссылки на правило (если в этом имеется необходимость). Семантика. Применение подстановок реализуется после ввода описаний подстановок. Смысл подстановки состоит в порождении новых утверждений о фактах. Имя подстановки должно упоминаться для логических выражений, к которым надо применять подстановку. Новый термин может совпадать с другими терминами знания или запроса, а также с терминами ранее определенных подстановок. Примеры. раздел подстановок ~diff~: -- Дифференцирование: ~X~*~Y~ -> diff(X)*Y+X*diff(Y); ~X~+~Y~ -> diff(X)+diff(Y); -~Y~ -> -diff(Y); ~X~-~Y~ -> diff(X)-diff(Y); ~X~/~Y~ -> (diff(X)*Y-X*diff(Y))/(Y*Y); ~X~**~Y~ -> X**Y*(diff(Y)*ln X+Y/X*diff(X)); 4.5.11. Определения масштаба. Раздел о библиотеках. Назначение. Масштаб назначается для согласования «однородных» типов данных и такое приведение термандов, чтобы могли выполняться операции с квалифицированными масштабом данными. Синтаксис описание масштаба: простое имя типа равенство логическое выражение, простое имя типа. Ограничение синтаксиса. В основу масштабирования положен принцип преобразования квалифицированного выражения другим выражением с последующим за ним простым типом, близким (однородным) по своим значениям так, чтобы изменялся только масштаб данных и применялись операции с данными таких типов. Масштабирование используется также для контроля размерностей величин в формулах или выражениях. Все выражения запроса Интеллсист приводит к единой системе единиц в соответствии с масштабами, заданными пользователем. Если выражения необходимо приводить к различным единицам, то можно воспользоваться функциями преобразования (перевода) единиц к требуемым, тогда масштабирование не применяется. Семантика. Смыслы числовых величин, которые преобразуются масштабом, вообще не изменяются, изменяется лишь смысл конкретного данного для его согласования с операциями, которые применяются к преобразованным масштабом данным. В частности смысл преобразуемых величин может измениться в пределах точности их представления. Примеры. долл. = 20 руб. угол = ((2*pi) / 360) градус 4.5.12. Определения библиотек. Раздел о библиотеках. Назначение. Библиотека Интеллсист состоит из девяти разделов: библиотеки символов, языков, лексиконов и данных, БЗ, подпрограмм и версий или вариантов Интеллсист, а также произвольных текстов и картотек данной библиотеки. Накопление разделов данных, знаний или систем способствует сохранению отработанных (точных) знаний и атрибутов их использования. Синтаксис описание библиотеки : ~имя библиотеки~ символ равно список разделов библиотеки. раздел библиотеки: данные картотеки или карточек. Ограничение синтаксиса. В основу информации о библиотеке положена карточная система, с помощью которой реализуется поиск и вызов элементов библиотеки. Карточка состоит из рубрик: автор документа, пароль автора, дата введения в библиотеку, дата модификации, дата использования, размер документа в Кб, название раздела библиотеки, название документа, фирма-источник, лицензия (номера), версия документа, доступ к файлу, инвентарный номер, пользователь, пароль пользователя, аннотация документа. В записях знаний или запросов формализм описания библиотек не используется. Все работы над содержимым библиотеки (помещение в библиотеку, изъятие из библиотеки, информирование о содержании библиотеки и копирование элементов библиотеки) выполняются в системе через меню. Поэтому понятие «раздел библиотеки» в запросах не раскрывается. Семантика. Ссылка на библиотеку реализует поиск, вызов и генерацию элемента библиотеки в рабочую Интеллсист (через работы с меню). Смысл библиотеки определяется его содержимым. 4.5.13. Базы знаний. Раздел области знаний. Назначение. Заполнение базы знаниями осуществляется предварительно при настройке системы или в процессе работы системы по меню. Синтаксис раздел знаний: ~простое имя знаний~ двоеточие сложное знание конец знаний , символ точки. сложное знание: абзац ; сложное знание , абзац конец знаний , символ точки. Ограничение синтаксиса. При вводе знаний из запроса в БЗ можно задавать запросы-тесты для контроля над вводимым знанием. Здесь под абзацем понимается любой текст по СеГ. Раздел завершается записью «конец знаний.», точка после слов «конец знаний» обязательна. Семантика. Смысл знания определяется в соответствии с СеГ русского языка в контексте уже накопленного лексикона и БЗ, а также окружением Интеллсист. При вводе порции знания могут обнаружиться ошибки (их 13 классов), которые приводят к пересмотру вводимой порции, лексикона или БЗ. Могут возникнуть вопросы от Интеллсист, на которые следует ответить, в противном случае порция знания не будет воспринята системой. 4.5.14. Определения запросов. Раздел области запросов. Назначение. Каждая форма запроса вызывается по меню в виде окна, заполняемого пользователем от меню, с помощью клавиатуры или из файла. Полный текст запроса составляет единую мысль-задание, представленную абзацами из предложений-фраз, состоящих из терминов. Запрос представляет некоторое знание. Запросы могут содержать декларативные и командные части. Практические запросы представляют собой вопрос, задачу или проблему. При этом сама система классифицирует запросы по классам задач, которые решает Интеллсист. Исключение составляет класс запросов на запоминание логического вывода. Его необходимо инициализировать по меню работ. Имеется три формы запроса: запрос логическим выражением (на ЯПП), запрос по шаблону (заполнение окон имеющейся в Интеллсист формы из библиотеки) и запрос по анкете (список понятий и заполнение окна понятия значениями). Синтаксис описание запроса: ~простое имя запроса~ двоеточие определение запроса. определение простого запроса: описание выражением ; описание анкетой ; описание шаблоном. определение запроса: определение простого запроса конец , символ точки; определение простого запроса , определение запроса. описание выражением: логическое выражение , конец утверждения. описание анкетой: анкетная форма запроса. описание шаблоном: шаблонная форма запроса. анкетная форма запроса: анкета ( строка ). шаблонная форма запроса: шаблон ( строка ). Ограничение синтаксиса. Смешение форм запросов допустимо. Запрос каждой формы может задаваться и независимо как самостоятельные задания. Имя запроса используется только для идентификации результата работы Интеллсист. Запуск запроса анкетой или шаблоном осуществляется по меню. Строка в вызове анкеты или шаблона указывает на имя файла, из которого черпается материал анкеты или шаблона. Семантика. Запрос является постановкой конкретной задачи (вопроса, задания или проблемы). Он может содержать (а может не содержать) дополнительные (или зависимые) знания, которые не остаются в БЗ. Анализ запроса в процессе логического вывода использует вызванный лексикон и БЗ. Пример. -- Решение дифференциального уравнения (и сравнение с программированием) раздел понятий ~ y’~, ~ y~, ~ x ~: вещественные; ~результат~: массив [1..100] из вещественных; раздел запроса ~Решение уравнения~ : -- y’ := y**2 – 3*y + 5*x; -- методом Эйлера на отрезке 0..1 с шагом 0.01 при начальных значениях x := 0 ^ y := 1 ^ для всякого ~i~ : 1..100 ( y’ := y**2 – 3*y + 5*x ^ результат [i]:=y ^ y := y + 0.01*y’). конец 4.5.15. Определения меток. Раздел о проблемной области. Назначение. При записи алгоритмов допускается применение меток для логических выражений, которые помещаются перед самим выражением. Список меток, как новые термины, помещается в разделе меток так, чтобы их описание предшествовало применению. Синтаксис описание меток: список новых терминов. Ограничение синтаксиса. Каждая метка дается в описании как новый термин и перед некоторым логическим выражением как используемый термин, а также в самих логических выражениях для указания потока управления от выражения к выражению, если в этом имеется необходимость. Семантика. Смысл метки заключается в указании адреса некоторого выражения. Пример. раздел меток ~метк_а 1~, ~метк_а 2~; метка 1: перейти к метке 2 ^ метка 2: Р(Х). 4.5.16.Анкеты и шаблоны. Раздел о проблемной области Назначение. Анкеты предназначены для массового интервьюирования людей с последующей обработкой результатов. Шаблоны предназначены для выполнения рутинных работ по подготовке заданий с минимизацией набираемых текстов. Синтаксис описание анкетой: ~простое имя анкеты~ двоеточие определение анкетой конец анкеты , конец утверждения. строчка анкеты: термин , операция отношения , ответ. ответ: логическое выражение ; ?. определение анкеты: строчка анкеты , конец утверждения ; строчка анкеты , определение анкеты. описание шаблоном: последовательность элементов шаблона. элемент шаблона: последовательность символов ; ???. Ограничение синтаксиса. Анкета создается либо вручную, либо с помощью инструментария (второе предпочтительнее). Анкета должна быть частью запроса, она вставляется в место расположения курсора по команде пользователя от меню. Шаблон - это готовый "жесткий" текст задания с окнами для вставок, отмеченные знаками "???" или набор фрагментов готовых "жестких" текстов для вставок в задания. "Жесткий" текст не изменяется, а в окнах можно помещать тексты, согласованные по контексту с "жестким" текстом. Семантика. Смысл анкеты аналогичен смыслу экспертной системы. С ее помощью можно вводить в запрос либо исходные данные, либо логические выражения для сопоставления с термином, либо как пометку об искомой величине (ответ задается знаком "?"). Смысл шаблона - быть образцом задания или его фрагментами для ускорения выполнения однообразных заданий. Пример. раздел анкеты ~имя анкеты~: Х = 25; У=? С>0 конец анкеты. -- пример части шаблона: --Уравнение для i: T(у':=???;^ --решается методом Эйлера у[r+1] = у[r] + у' * h); 4.5.17. Неявные описания и вводные фразы. Здесь кратко рассмотрим два типа описаний: неявные и вводные. Первые описания являются вложенными в Интеллсист заведомо. Вторые создаются только пользователем для игнорирования части текста так, как это делается с текстовыми комментариями. Неявные описания известны из руководств или терминологического словаря. Неявные описания заданы системе при ее создании. К ним относятся описания всех значений или лексем, всех стандартных величин, операций, функций и процедур из лексикона. Их подробное описание дано в следующем ниже разделе. Предметная область характеризуется множествами новых допустимых значений для понятий в отличие от тех, которые называются стандартными. Вводные фразы не влияют на знания и запросы (даже эмоционально), они просто игнорируются. Вводные фразы формально определяются в разделе вводных терминов в соответствии с нижеприводимыми правилами. Назначение. Вводные слова и предложения известны в любом ЕЯ. Они обычно передают либо эмоциональную окраску пишущего текст, либо являются краткими замечаниями или отступлениями от основного текста. Причем многие вводные слова употребляются часто. Интеллсист определяет новый термин (вводную фразу), которому тем самым автоматически предписывается быть игнорируемому. При анализе текстов знаний и запросов вводные термины (или фразы) исключаются из рассмотрения, а их присутствие в тексте не оказывает влияния на смысл знания или запроса, в текстах которых они присутствуют. Синтаксис описание вводных терминов: список новых терминов. Ограничение синтаксиса. Вводная фраза имеет количественные ограничения, она может состоять из различных слов и знаков. Семантика. Вводные фразы имеют смысла пусто (void). Примеры. раздел вводных ~, например,~, ~(если даже нет)~; раздел вводных ~(как видно)~, ~[на Си ++]~. 4.6. Стандартное окружение Назначение. Основу стандартного окружения определяют фундаментальные знания, которые представлены в БЗ «Фундаментальные знания». На основе этих знаний можно решать общие исследовательские или прикладные задачи из области знаний, которая представлена в БЗ, они же используются при решении задач в любой области знаний. К фундаментальным знаниям относятся записи, которые приведены в Приложении. К ним относятся также встроенные знания, описанные в информатической логике. В записях включены знания, передаваемые учащимся в школе или на начальных курсах вузов («знания» ВМ, математические константы, некоторые правила информатической логики. Синтаксис определен написанием БЗ и ее кодами, ограничения синтаксиса совпадают с ограничениями, принятыми в стандартном окружении, которое может расширяться по мере накопления опыта работы с этой БЗ. Запись БЗ определяет ее смысл и примеры для иллюстрации, она дана в Приложении 9. 4.7. Связь с программированием ИП является преемником ПП. Весь или почти весь программный материал и потенциал программистов должен использоваться в ИП. Готовые программы целесообразно подключать в качестве средств моделирования предметов, явлений или процессов. Программистам целесообразно давать заказы на изготовление программ, которые могут обеспечить точность и скорость моделирования и избежать трудности формализации или работы с ФЯ. Могут быть указаны и другие причины применения программистского труда. Здесь рассматриваются два направления использования методов программирования. Первый связан с использованием готовых программ (кроме риюза), второй - с использованием рекомендаций программистов для получения эффективного кода. 4.7.1. Вызов готовых программ. Язык Вызов. Особое место в организации вызовов готовых подпрограмм занимает язык Вызов для описания строк вызова внешних подпрограмм. Ниже дано краткое описание этого языка. Значением подпрограммы может быть строка, которая представляет код обращения к готовой программе на некотором ФЯ. Код обращения здесь называется вызовом программы. Ниже рассматривается ФЯ, который необходим программистам, если они желают, чтобы их программы использовала Интеллсист. Кроме вызова программ может оказаться важным описание идентификатора модуля, в котором содержатся подпрограммы. Для описания модуля также необходимо использовать строку, которую укажет программист для корректного использования подпрограмм. Описание языка Вызов состоит из вводной части, синтаксиса, семантики и прагматики. Назначение. Вызов задается в форме строки, представляющий смысл подпрограммы (процедуры или функции). Создателем программы и вызова является программист, использующий ФЯ программирования. Программа должна выполняться в кодовом виде, готовом для применений и выполнения. Язык предназначен для применения в Интеллсист в качестве значения подпрограммы. Пользователь Интеллсист, знающий ЯПП, не обязан знать ФЯ Вызов и внутренний смысл текста вызова готовой подпрограммы. По руководству составителя программы можно познакомиться со структурой и содержанием строки, являющей значением процедуры или функции. Исходный текст подпрограммы выполняется на ФЯ программирования. Трансляция в код реализуется в заданном режиме. Подпрограмма в коде может быть реализована в виде (для языка паскаль): - подпрограммы библиотеки динамической компоновки (Имя.dll), - библиотечной подпрограммы статической компоновки (Имя.lib), - подпрограммы модуля объектного кода Intel (Имя.obj), - односегментной исполняемой программы ДОС (Имя.com), - исполняемой программы (Имя.exe), - подпрограммы ссылочного вызова пакетного файла (Имя.bat), - подпрограммы ссылочного вызова информационного файла (Имя.pif или Имя.lnk) - подпрограммы паскаль-модуля (Имя.pas, Имя.dcu, Имя.tpw). Все случаи вызова подпрограммы задаются строкой по общему (одинаковому) формату с различным наполнением. Это позволяет в дальнейшем расширять возможные форматы описания. Строку по ФЯ Вызов составляет программист. Пользователь Интеллсист должен следовать руководству на подпрограмму и использовать указания программиста при создании понятия подпрограммы. Ниже представлен формализм языка Вызов, ориентирующий программиста в правилах написания строк вызова подпрограмм в ЯПП. Программист обязан объяснить в руководстве по своей программе смысл строки вызова для пользователя Интеллсист с полной иллюстрацией строки, которую он переносит в БЗ или запрос при описании подпрограммы. Синтаксис строка вызова: двойная кавычка тип модуля двоеточие имя подпрограммы с путем , возможная череда параметров , свойства подпрограммы двойная кавычка строка описания модуля. строка описания модуля: двойная кавычка тип модуля двоеточие ссылка на модуль , свойства подпрограммы двойная кавычка. ссылка на модуль: имя модуля ; имя модуля in имя файла в апострофах. имя файла в апострофах: апостроф имя файла с путем апостроф. тип модуля: dll , lib , obj , unit , тип исполняемого модуля. тип исполняемого модуля: com , exe , bat , pif , lnk. имя подпрограммы с путем: имя модуля ; имя модуля, косая черта, идентификатор подпрограммы. идентификатор подпрограммы: идентификатор ; символ решетки целое. череда параметров: косая черта , символ процента , целое ; перечень параметров косая черта , символ процента целое. свойства подпрограммы: косая черта , символ решетки целое ; свойства подпрограммы косая черта , символ решетки целое. Ограничение семантики. Синтаксис по содержанию ограничивает возможные записи строк из обращений к подпрограммам. Семантика Имена подпрограммы, модуля или файла с путем означает, что перед именем либо помещается абсолютный (или полный) путь, либо относительный (в данном разделе) путь, либо указание пути отсутствует. Имя модуля совпадает с именем файла с путем или без. Идентификатор подпрограммы совпадает с именем подпрограммы, используемым при ссылке. Смысл строки определяется смыслом подпрограммы. Описание вызова формально есть череда параметров, разделенных символами косой черты. Первыми указываются возможные фактические параметры подпрограммы с указанием символа % из обращения к ней, вторыми - свойства подпрограммы после символа #. Из фактических параметров процедуры могут использоваться только некоторые, они должны быть по значению строками для формата exe. Некоторые параметры свойств можно опускать, тогда действует значение по умолчанию. Описание вызова зависит от типа модуля. Свойство подпрограммы задается кодами, которые приведены в таблице. Если некоторое свойство пропущено, то считается, что оно задано по умолчанию. Необходимо соблюдать четкую последовательность указываемых свойств: (#10 или #11), (#20 или #21), (#30; #31), (#40 или #41). Свойство подпрограммы /#16 /#32 /#10 /#11 /#20 /#21 /#30 Смысл свойства Свойство по умолчанию Подпрограмма выполнена для 16-ти разрядного процессора Подпрограмма выполнена для 32-х разрядного процессора Передача фактических параметров подпрограмме справа налево Передача фактических параметров подпрограмме слева направо Подпрограммное освобождение стека Программное освобождение стека Межсегментный вызов подпрограммы (только для 16- нет нет /#10 /#10 /#20 /#20 /#30 /#31 /#40 /#41 разрядных) Внутрисегментный вызов подпрограммы (только для 16разрядных) Без ожидания завершения исполнения подпрограммы С ожиданием завершения исполнения подпрограммы /#30 /#40 /#40 Далее, на примерах поясняются смысл каждого типа подпрограммы с указанием сорта подпрограммы, формата строки, ее расшифровка и возможно прагматические ограничения на применения. Заметим, что путь к подпрограмме указывается так, чтобы ее адресация была точной. Примеры. DLL: подпрограмма библиотеки динамической компоновки (Имя.dll). Формат строки: "dll:some.dll/func/#32/#10/#20" или "dll:some.dll/#34/#32/#10/#20". Расшифровка первого варианта: имя модуля some, имя подпрограммы func, разрядность 32, передача параметров справа налево, очистка стека в подпрограмме. Расшифровка второго варианта: имя модуля some, номер подпрограммы 34, разрядность 32, передача параметров справа налево, очистка стека в подпрограмме. LIB: библиотечной подпрограмма статической компоновки (Имя.lib). Формат строки: "lib:some.lib/func/#32/#10/#21". Расшифровка: имя модуля some, имя подпрограммы func, разрядность 32, передача параметров справа налево, очистка стека в программе. OBJ: подпрограмма модуля объектного кода Intel (Имя.obj). Формат строки: "obj:some.obj/func/#16/#11/#20/#31". Расшифровка: имя модуля some, имя подпрограммы func, разрядность 16, передача параметров слева направо, очистка стека в подпрограмме, вызов внутрисегментный. COM: односегментная, исполняемая программа исполняемого ДОС (Имя.com). Формат строки: "exe:some.com/#41". Расшифровка: имя программы some, ожидание окончания или завершения исполнения программы. EXE: исполняемая программа (Имя.exe). Формат строки: "exe:some.exe /#40". Формат строки: "exe: some.exe /%1 /%4 /#40". Расшифровка: Имя программы some, нет ожидания окончания исполнения программы. Во втором варианте указаны первый и четвертый параметры из обращения к процедуре, они должны быть строками. BAT: подпрограмма ссылочного вызова пакетного файла (Имя.bat). Формат строки: "exe:some.bat". Расшифровка: имя пакетного файла some, нет ожидания окончания исполнения программы. PIF и LNK: подпрограммы ссылочного вызова информационного файла (Имя.pif или Имя.lnk). Форматы строк: "exe:some.pif" или "exe:some.lnk/#40". Расшифровка: имена ссылочных файлов some, нет ожидания окончания исполнения программы. Замечание. Для типов исполняемых модулей идентификатор подпрограммы и разрядность не указываются, так как они не несут смысла. Подпрограмма не должна иметь параметров, она может быть описана только как процедура. UNIT: подпрограмма паскаль-модуля (Имя.pas, Имя.tpw, Имя.dcu). Формат строки: "unit: Some in ‘SomeUnit.pas’/func/#32/#11/#20". Расшифровка: имя модуля some, строка описания Some in ‘SomeUnit’, имя подпрограммы func, разрядность 32, передача параметров слева направо, очистка стека в подпрограмме. Замечание: Имя модуля в подпрограмме на языке Паскаль - это строка описания unit в разделе uses. 4.7.2. Спецификации представлений. Назначение. Спецификация представлений вводит параметры внутреннего представления данных (и знаний). Спецификатор типа задает параметры для представления данных из типа. Синтаксис. Спецификатор представления : спецификатор типа ; спецификатор адреса ; спецификатор записи ; спецификатор представления перечислимого. Ограничение синтаксиса. В качестве значений в агрегате должны использоваться различные упорядоченные целые числа в форме одномерного массива. Семантика. Для каждого литерала перечислимого типа ставится в соответствие внутренний код, используемый при формировании некоторого результата. 4.7.3. Переработка знания с ЕЯ Русский язык (как и другие ЕЯ) состоит из фраз, которые в Интеллсист переводятся на ФЯ для производства логического вывода. Поскольку каждая фраза на ЯПП составляется из терминов, которые подразделяются на две категории: термин операнд и термин - операция, нужно иметь в виду, что операнд выбирается пользователем (может быть за исключением некоторых стандартных терминов), а операции зафиксированы. Операции может ввести и пользователь. Для пояснения правил перевода на ФЯ рассмотрим некоторые примеры для операций. Такие примеры, во первых, содержат синтаксические конструкции языка, использующие широкие возможности ЕЯ, во-вторых, являются средством обучения пользователя грамотному ЯПП и, в третьих, служат показателем метода построения ЯПП по ЕЯ. Переработка знаний, представленных по правилам СеГ, уже рассмотрена. Что же осталось за пределами СеГ? Как позитивно использовать подобные проблемы в ЯПП? Ответам на эти вопросы посвящается настоящий раздел. Точнее. Рассмотрим те потери знания, которые следуют из ограничений СеГ, и некоторые рекомендации во избежание таких потерь. К потерям относятся: использование или устранение избыточности текстов, использование вводных слов и предложений, устранение трудностей учета ударений в словах, смысл косвенной речи и роль СеГ для разнообразных разработок. Итак, по порядку. 4.7.4. Избыточность и умолчание в языках. Избыточность в языке определяется использованием в текстах вводных или случайных слов или большого числа терминовсинонимов. Вводные слова передают обычно состояния говорящего или пишущего. Можно предположить, что без них передаваемый текстами смысл не изменяется. Вводные слова характеризуют автора текста, его эмоции или пояснения, которые в данной области знания не имеют значение. Случайные слова имеют схожесть с вводными словами. Использование синонимов не изменяет смысл текста, но лишь с пользой увеличивает состав терминологического словаря, что никоим образом не изменяет содержание знаний. Представляют особый интерес местоимения, которые являются синонимами некоторых терминов. Проблема местоимений может разрешиться просто в случае использования местоимения в качестве основного термина. Избыточность текстов может выражаться простыми повторами фраз или абзацев. Повторы не влияют на состав знаний. С точки зрения такой избыточности Интеллсист является хорошим фильтром. Иногда в таких ситуациях говорят о свойстве программы сжимать текст (в данном случае - знания). Это важная характеристика программы обработки знаний. Совершенно не имеет никакого значения источник возникновения повторов. Потребительская сущность избыточности в языках состоит в следующем. Знания, передаваемые текстами в книгах, имеют общий характер в смысле изложения общих или конкретных сведений о предмете совместно с поясняющими и сопутствующими сведениями. Для читателя таких знаний дополнительные сведения полезны и обеспечивают сохранение времени при знакомстве со знаниями из других источников. Кроме этого, писатель вместе с основными сведениями передает свое отношение к знанию (подчас эмоционально), а иногда дополнительные сведения передают в текстах состояние писателя. Некоторые сведения поясняют смысл сообщаемых фактов или утверждений о фактах. Интеллсист (как потребитель) содержит фундаментальные знания, которые могут быть предметом пояснений писателя. Поэтому некоторая избыточность в текстах воспримется системой как зависимые знания. Практическая оценка поясняющей избыточности показывает, что большинство текстов содержат от 5% до 20% полезных для Интеллсист сведений, а остальное - зависимые знания. Проблема использования для Интеллсист зависимого знания разрешается автоматически. Препятствием для быстрой сортировки избыточности является тот факт, что избыточная часть текстов строится на основе лексикона, который не учтен в лексиконе данного ЯПП. Поэтому при вводе текстов в Интеллсист автоматически возникает вопрос о том или ином термине, который не передает сведений об изучаемом предмете. Умолчание возникает при желании исключать повторы некоторых фрагментов фраз, так как их смысл уже передан текстуально ранее. Умолчание возникает и в случае требований краткости изложения мыслей, поскольку интуиция человека всегда может (до)описать подробности представляемого образа. Для Интеллсист это приводит к потере информации. Умолчание можно интерпретировать как предварительный ввод БЗ, которая не связана непосредственно с данной деятельностью пользователя, и применение лексикона и знаний из БЗ во всех запросах или вновь формируемых знаний. 4.7.5. Вводные слова, термины и фразы. Вводные слова и предложения часто используются в текстах знаний (а может быть и в запросах). Исключение вводных слов и предложений для Интеллсист возможно, если их явно указать системе с пометкой «вводное слово». Вводные слова, термины и фразы в этом случае необходимо считать терминами типа вводное слово, тогда Интеллсист будет аккуратно игнорировать их в текстах знаний или запросов. Конечно, указанный подход квалификации вводных слов и предложений едва ли является приемлемым, так как он требует определенных усилий для создания их описаний. Поэтому другой подход будет приветствоваться пользователем. Он состоит в применении операций предварительного редактирования текстов знаний и запросов с помощью подходящего редактора, которое должно исключить вводные слова и предложения. Этот подход кроме всего проще и не будет порождать побочные ошибки типа «термин не описан». Следует обратить внимание на одно важное обстоятельство. Если за основу БЗ берется учебник (или что-то еще из опубликованного), то можно гарантировать, что 8090% текста будет состоять из «вводных слов и предложений». Объяснения тому просты. Каждая публикация (кроме БЗ для Интеллсист) содержит дополнительные сведения или знания, которые имеются уже во встроенных или фундаментальных БЗ или являются «лирическими» отступлениями от основной темы. Здесь знаниевед должен подходить к рассмотрению публикации критически. Он будет либо редактировать исходный текст, исключая 80-90% текста, либо извлекать из публикации полезный для БЗ текст. Текст публикации должен предварительно автоматически обрабатываться в Интеллсист для составления черновых терминологических словарей и построения подсказки знаниеведу при редактировании. 4.7.6. Ударение в словах. Два слова не отличаются по написанию, но различаются ударными слогами. Если слова используются для образования уникального термина совместно с другими словами или знаками, то проблема учета ударения может и не возникнуть. Тем не менее эта ситуация порождает неопределенность. Например, слова «за’мок» и «замо’к» в текстах на взгляд неразличимы в тексте, в котором они используются одновременно. Здесь ударение показано одинарной кавычкой. Контекст позволяет разрешить проблему различимости слов, если ударение явно не проставлено. Для Интеллсист контекстом является лексикон и небольшая окрестность данного слова. Если такой контекст достаточен, то проблема ударения разрешается. Например, только одно из двух приведенных слов используется в знаниях или запросе. Другой пример малого контекста содержится во введении двух понятий: прекрасный замок и надежный замок. Здесь указаны два термина, в каждом из которых ударение косвенно используется. И тогда проблема ударения становится ненужной. Использование двух одинаковых слов одновременно ставит для Интеллсист неразрешимую проблему распознавания терминов, отличающихся ударными слогами. Ее можно разрешить путем использования двух различных терминов «за’мок» и «замо’к», используя знак «’» для обозначения ударения. Расстановка ударений устраняет трудности введения одинаковых слов с ударениями на различных слогах. Окончательно проблема может разрешиться только при использовании микрофона для ввода знаний, а расстановка одинарных кавычек несколько усложняет процесс записи знаний и запросов. Имеется другой подход разрешения проблемы. Если вместо привычного обозначения ударения ввести пробел в слова «за мок» и «замо к» и ввести эти слова как двухсловные термины, то проблема ударений успешно разрешается с одной оговоркой, что снижена читаемость текста и увеличена вероятность введения ошибок. Вообще же говоря, вместо пробела можно ввести некоторый символ, тогда проблема обозначения ударения (как сделано выше с помощью символа одинарной кавычки) также будет разрешена, но при этом запись слов не будет этично восприниматься. Для таких действий Интеллсист является готовой, ничего специального в систему вводить нет необходимости и целесообразности. Итак, проблема ударения так или иначе может разрешаться. Каждый пользователь может сам определить пути ее разрешения. Пожалуй, наилучшим методом ее решения является прием использования одинарной кавычки на месте знака ударения. Другие пути устранения проблемы едва ли станут наглядными. Да и предложенный способ имеет ряд неприятностей. Во-первых, слово-термин распадается на два слова, во вторых, читаемость текста человеком снижается. Важны ли эти контраргументы, пусть решает сам пользователь. Имеется два универсальных подхода: не использовать два одинаковых по написанию слова одновременно и образовывать слово из двух слов. Несколько спасительным обстоятельством является крайняя редкость использования ударения именно для различения двух и более слов. Значит с ударением можно справиться одним из двух способов либо слова употребляются в различных областях знания, либо применяется простой прием введения ударения в тексты знаний. Можно считать, что проблема ударения в словах полностью разрешается и почти естественным способом. 4.7.7. Смысл косвенной речи. Косвенная речь определяется в СиГ как запись текстов в кавычках. Такие тексты содержат или определяют некоторый смысл. Они могут передавать знания, которыми не следует пренебрегать. Тексты знания или запросов пользователя формально являются косвенной речью. Отсюда следуют выводы о том, что тексты косвенной речи уже учитываются, но они оформлены не по правилам СиГ, что имеющиеся тексты косвенной речи должны преобразовываться в тексты знаний. Если смысл косвенной речи важен для знаний или запроса, то она должна быть переведена в разряд (или раздел) знания (без кавычек). В противном случае косвенная речь должна быть проигнорирована в исходных текстах. Косвенная речь может выступать как термин (весь текст в кавычках), тогда необходимо определить такой термин по правила СеГ. Строки в ЯПП имеют свой собственный смысл, они являются, если можно так условно говорить, косвенной речью в СеГ. 4.7.8. Роль синтаксической грамматики ЕЯ. СиГ ЕЯ применяется главным образом в двух случаях. Первый случай применения - это автоматический анализ исходных текстов знаний для автоматического выбора терминов и построения начального терминологического словаря, который может служить шпаргалкой при составлении текстов знаний и запросов. Второй случай применения - это автоматическая генерация текстов с результатами разрешения запроса (создание отчета). Обратный перевод с ФЯ на ЕЯ связан с трудностями реализации СиГ этого ЕЯ. Действительно, если СеГ допускает игнорирование рода, числа и падежа слов, то печать результатов на основе вводимых (зафиксированных) терминов зачастую не будет соответствовать СиГ. Приведение в соответствие требует учета всех правил СиГ. Эта проблема наиболее остро возникает при построении Интеллсист перевода с одного ЕЯ на другой. Но об этом необходим специальный разговор. Для решения технических задач в широком смысле этого понятия вполне достаточно использование вводимых пользователем терминов для показа результатов решения его задач. Рассмотрим пример логической задачи «о лжеце», которая заключается в поиске лжеца при следующих условиях для трех собеседников A, B и C. Используются логические понятия: «говорит правду А», «говорит правду В», «говорит правду С». Для сокращения записей некоторых сведений о собеседниках вводятся синонимы: А для понятия «говорит правду А», В для понятия «говорит правду В» и С для понятия «говорит правду С». Для замены знаков операции также вводятся синонимы: «или» для операции \/, «не» для операции not и «и» для операции &. Имеются три города А, В и С. Жители города А во всех случаях говорят правду, жители города В всегда лгут, жители города С говорят правду. Жители этих городов ходят друг к другу в гости. Наблюдатель хочет выяснить, в каком городе он находится и в каком городе живет его собеседник? Примерно так выглядит запись задачи для человека. Более точно в задаче сформулированы утверждения, являющиеся условиями: если говорит правду А, то не говорит правду В. Если говорит правду В, то не говорит правду С. Если говорит правду С, то говорит правду А и не говорит правду В. раздел запроса ~найти лжеца~: -- включает следующие тексты раздел синонимов ~ А ~ = говорит правду А; ~ В ~ = говорит правду В; ~ С ~ = говорит правду С. -- условие задачи состоит в поиске одного (!) из трех собеседников: не А и В и С или А и не В и С или А и В и не С. -- кроме этого имеются соотношения для характеристики собеседников: если говорит правду А, то не говорит правду В; если говорит правду В, то не говорит правду С; если говорит правду С, то говорит правду А и не говорит правду В. -- на этом завершается запрос. конец. Решение логической задачи будет таким (единственный вариант): говорит правду А, не говорит правду В, говорит правду С. В приведенном примере СеГ и СиГ «сработали» на отлично, при выводе результата не требовалось применение СиГ, исходные термины использованы полностью и не потребовали согласований слов по роду, числу и падежу. Можно привести множество примеров, когда согласование слов необходимо для грамматически правильной формулировки результатов. Простой пример может показать это. В задаче использован логический термин «дождь идет». Решение может бать таким: дождь идет, но решение может быть и таким: не дождь идет. В этом случае текст результата должен корректироваться и принять вид: дождь не идет. Здесь вопрос корректности фразы на СиГ касается не согласования слов по роду, числу и падежу, а приведение последовательности слов в предложении в соответствии с СиГ. Подобного сорта проблем использования СиГ достаточно. Если число правил СиГ измеряется несколькими сотнями, то примерно такое же число нарушений может наблюдаться в текстах результатов. Проблемы являются разрешимыми, они будут разрешены в последующих версиях Интеллсист. Роль СиГ в представлении результатов велика, поскольку они могут служить основой для синтеза речи или передачи команд человеку, который может неправильно понять результат. Работа с подключением СиГ необходима для повышения интеллекта интерфейса Интеллсист-человек, для построения систем перевода с одного ЕЯ на другой. Глава 5. Распознающие грамматики Формальные грамматики появились в связи с изучением ЕЯ [Хомский61]. ФЯ существовали всегда там, где требовалась точность предписаний, например для ВМ. ФЯ стали явно применяться в программировании, после перехода от кодирования в цифрах к написанию программ текстами. Поскольку формальные грамматики по своему существу являлись порождающими, то применение их для распознавания принадлежности фразы (или слова) к ФЯ было затруднительным. Порождающая грамматика в таком случае рассматривалась как данные для построения распознающих автоматов некоторого типа. Проблема конструирования распознающего автомата по записи порождающей грамматики в общем случае неразрешима [Маркус70, Пратт79]. Здесь рассмотрим новые формы грамматик - распознающие и их применение для построения трансляторов, разрешения проблемы принадлежности фразы данному языку. Более того, распознающие грамматики пригодны для порождения текстов наравне с распознаванием. Распознающие грамматики имеют ряд преимуществ перед порождающими. После описания графического изображения распознающих грамматик (графа языка) рассматривается система команд МГР в иерархическом порядке роста сложности языков и делается сопоставление МГР с машиной Тьюринга. МГР применяется для контроля текстовой информации и для построения транслирующих систем или систем, управляемых текстами. 5.1. Граф языка и примеры Центральным понятием в распознающих грамматиках является понятие графа языка. Его появление связано с разрешением трудностей построения распознающих автоматов при конструировании транслирующих систем или систем, управляемых текстами. 5.1.1. Общие сведения. Предварительно рассмотрим общие понятия и обозначения, связанные с грамматиками ФЯ. Известные понятия рассматриваются кратко только для того, чтобы установить определенную договоренность с читателем. Фундаментальным понятием ФЯ является понятие символа. Символ - это графический знак конечного объема, четко выделяемый среди других знаков и имеющий некоторое значение. Будем рассматривать конечные наборы символов, поэтому и требуем конечного объема для графического представления знака. Знаки должны быть различимыми, в противном случае невозможно гарантировать точность передачи знания. Символ имеет значение, предписанное ФЯ и контекстом его применения. Среди символов выделяется пустой символ, который будет проявляться по мере необходимости и обозначаться здесь условно (поскольку он используется как ссылка на ничто) символом Ø. Символы собираются в алфавиты. Алфавит - это конечный набор (множество) различных символов, например, {a, b, c, d, e, f} - алфавит из шести латинских букв. Символы фигурных скобок и запятых не входят в алфавит, а являются метасимволами по отношению к рассматриваемым символам. Символы фигурных скобок и запятой могут входить в алфавиты в форме термина (символ левой фигурной скобки, символ правой фигурной скобки, символ запятой). В частности, алфавит, состоящий из пустого символа, называется пустым и обозначается скобками {} или {Ø}. Новые алфавиты образуются из имеющихся с помощью теоретико-множественных операций объединения, пересечения, дополнения и итерации. Заметим, что пустой символ Ø принадлежит каждому алфавиту, если не оговорено противное. Число символов в алфавите А обозначим как |А| или abs А. При рассмотрении информатических проблем будем иметь дело с терминальным алфавитом символов. Терминальный алфавит включает только те символы, которые имеются на клавишах устройств ввода информации в память ВМ и которые имеют значение, представленное кодом этого символа. Составные символы, например многобуквенные или многознаковые терминальные символы некоторых языков программирования, состоят из терминальных символов клавиатуры и, следовательно, представляются последовательностями терминальных символов (пример практически вынужденного кодирования). Из символов составляются слова (в самом общем смысле: слово - любая конечная или бесконечная последовательность символов). При формировании слов используется операция соединения (катенации или конкатенации) символов в последовательность. Операция соединения ^ определяется двумя аксиомами: Аксиома 1: для всякого слова С (Ø ^ C = C ^ Ø = C), - аксиома для определения пустого символа, который может подразумеваться в любом месте слова (вначале, в середине или в конце); Аксиома 2: для любых слов A, B и С ((A ^ B) ^ C = A ^ (B ^ C)), - аксиома ассоциативности операции ^, из которой следует, что исследование слова может производиться слева направо или справа налево. Будем исследовать слова естественным для многих языков способом - слева направо. Принято обозначать катенацию К символов «А» в виде А**К. Для любого слова определяется функция ДЛИНА следующими соотношениями: ДЛИНА(Ø) = 0, ДЛИНА(C ^ s) = ДЛИНА(C) + 1, s =/= Ø, ДЛИНА(s) = 1, где C - любое слово, s – символ, отличный от пустого символа. Функцию ДЛИНА будем также обозначать с помощью вертикальных черточек, тогда соотношения в аксиоме примут следующий вид (с новым обозначением функции ДЛИНА): |Ø| = 0, |C ^ s| = |C| + 1. К примеру, |А**К| = К. Иногда вместо функции ДЛИНА используется функция модуля abs. 5.1.2. Словари. Из слов составляются словари. Словарем называется множество различных слов. Количество слов в этом определении не оговорено. Любой алфавит является словарем. Новые словари (как множества слов) получаются в результате применения теоретико-множественных операций над исходными словарями. Такими операциями являются: объединение, пересечение и дополнение словарей. Кроме этого, операция катенации распространяется на словари. Пусть А и В - словари, словарь С = А ^ В состоит из слов, начинающихся словами из А и завершающихся словами из В. Например, для алфавита А, не содержащего пустого символа, словарь А^А состоит из всевозможных различных двухбуквенных слов. Каждому словарю, если не оговорено противное, принадлежит слово, состоящее из пустого символа. Пустой символ может принадлежать и словарю А^А, но однобуквенные слова не содержатся в этом словаре. Словари бывают конечными и бесконечными. Число слов в словаре С будем обозначать как |С| или abs С. Для терминального алфавита можно построить универсальный словарь (или универсальный язык), состоящий из всевозможных слов этого алфавита. Процедуру построения представим так. Пусть T - терминальный алфавит, не содержащий пустого символа, тогда, если словарь A(1) = Т - словарь из терминальных символов, то образуем словари A(i) = A(i-1)^T для i = 2, 3,..; словари B(1) = A(1) и B(i) = B(i-1) + A(i), для i = 2, 3,..., + обозначает операцию объединение словарей, представленных словарями A(i) и B(i). Универсальным словарем называется словарь, полученный как предел: У = lim B(i), при i, стремящимся к бесконечности. Если Т содержит пустой символ, то для построения У можно использовать только один алгоритм: A(1) = Т, A(i+1) = A(i)^T для i = 2,3,...; У = lim A(i), при i стремящимся к бесконечности. Будем ориентироваться на этот алгоритм, поскольку каждый алфавит содержит пустой символ, если не оговорено противное, как это было сделано в первом алгоритме. 5.1.3. Формальные языки. После предварительных построений и введения обозначений определим формально язык Яз следующим образом: Яз является подмножеством определенного выше универсального словаря У (Яз У или Яз <= У). Поскольку универсальный словарь имеет бесконечное (счетное) число слов, то число языков также будет бесконечным (но несчетным). Вообще говоря, всего языков континуум, возможно и большее число в зависимости от способа построения универсального словаря. Способ описания языка должен удовлетворять условию, которое обеспечило бы описание всех возможных языков. Универсальный словарь У определяется как множество всех конечных слов, составленных из символов данного алфавита. Универсальный словарь У как множество имеет счетную мощность. По теореме Кантора множество слов произвольной длины (включая бесконечные слова) имеет континуальную мощность или большую. Первое утверждение приходит в противоречие с теоремой Кантора. Доказательство ее предусматривает две процедуры. Первая строит регулярную перечислимую последовательность различных слов путем перебора, вторая - новую последовательность слов, отличных от слов перечислимой последовательности. Композиция двух процедур строит континуальную последовательность слов. Теорему Кантора можно расширить, рассмотрев третью процедуру построения последовательности слов, отличных от слов, получаемых по первым двум процедурам. Тогда можно построить множество слов с мощностью, большей чем континуум. При формировании У использована только одна процедура, состоящая из соединения символов в слова и сбора полученных слов в одно множество, и получили счетную последовательность слов. Для наших рассуждений достаточно иметь дело с перечислимыми У. Теорема Кантора говорит о существовании множеств более мощных, чем счетные. Ограничимся счетными множествами для У. Интересно рассматривать более мощные множества, чем универсальный словарь У. Тогда можно рассматривать другие проблемы формирования грамматик для соответствующего множества слов. Итак, язык Яз определяется как Яз <= У или Яз У. Любое подмножество универсального словаря является языком. В связи с языком Яз и словом С имеются две задачи: (1) Яз -> С – обозначает выбор или генерацию слова С на основе грамматики Яз; (2) С in Яз - определить принадлежность слова С языку Яз. В соответствии с двумя задачами имеется два подхода к формированию грамматик: первую задачу обслуживает порождающая грамматика, а вторую - вводимая ниже распознающая грамматика. Имеется также два подхода к любой грамматике: изучение известной грамматики и формирование новой грамматики. Порождающие грамматики известны. В нашем применении формализм используемых грамматик ориентирован на условные обозначения, которые отличны от обозначений в формализме Хомского или БэкусНаура. Порождающие грамматики представляются в соответствии с метаязыком Марков. Распознающим грамматикам посвящена настоящая глава. 5.1.4. Граф языка. Для изложения распознающих грамматик понадобиться понятие графа, которое считается известным, - это пара, состоящая из множества вершин (синоним - узел) и множества пар вершин - дуг (без повторений одинаковых вершин или пар). Будем рассматривать конечные графы, если число вершин конечно, и бесконечные в противном случае. Вершина представляется графически точкой и обозначается некоторым словом, к примеру Х с индексом (Х0, Х1, Х2, Х3,...). В соответствии с такими обозначениями дуга - это пара (Хi, Хj), которая графически обозначается стрелкой от вершины Хi к вершине Хj. Из всевозможных графов рассматриваются только графы гамаки. Они имеют одну входную вершину и одну выходную вершину. Будем рассматривать нагруженные графы. Это значит, что каждой вершине или дуге (при необходимости) сопоставляется одна или несколько функций. Для соединения понятий графа и языка будем использовать интерпретацию дуги операцией соединения (^) символов и слов. Рассматривая множество слов можно построить нагруженный по вершинам и дугам граф со следующей интерпретацией его элементов. Далее, можно говорить, что для исследования языков принят на вооружение аналитический подход, который состоит в анализе исходного множества слов для построения его общей характеристики или грамматики. При этом процедура построения определяется в четыре шага. Первый шаг - каждой вершине поставим в соответствие терминальный символ (функция соответствия: каждой вершине соответствует терминальный символ). Нескольким вершинам могут соответствовать одинаковые терминальные символы. Второй шаг - строим дуги между двумя вершинами, которым соответствуют терминальные символы, встречающиеся в некотором слове данного языка рядом (применена операция катенации). Дуги отображают операцию катенации символов в слове. Третий шаг - строим все подграфы для всех слов языка. Всего подграфов будет столько, сколько слов в языке. Наконец, четвертый шаг - объединяем все подграфы в один общий граф с одной входной вершиной и одной выходной вершиной. Такой граф называется графом языка. Объединение подграфов связано с уменьшением общего числа вершин и дуг путем обобщения, сравнения и слияния слов. Каждая вершина нагружена отображением на терминальный алфавит (или на метку подпрограммы, которая вырабатывает некоторые выходные символы - вторая функция соответствия), дуга будет нагружена целыми числами для указания количества допустимых циклов перемещения по дуге графа. Если дуга не нагружена, то количество допустимых циклов произвольно. Конечно же, это только схема для построения графа, который именуется графом языка. Детальное рассмотрение процедуры будет дано ниже. 5.1.5. Примеры ФЯ. Приводимые ниже академические примеры должны проиллюстрировать процедуру построения графа языка. Пример 1. Рассмотрим язык Я1, состоящий из слов вида а**К при К > 0. Ему принадлежат слова а, аа, ааа, аааа, ааааа,... Вместо символа «а» можно рассматривать некоторое слово. Пример 2. Рассмотрим язык Я2, состоящий из слов вида а**К^в**К при К > 0. Ему принадлежат слова ав, аавв, аааввв,... Отметим, что число букв а равно числу букв в. Следовательно, необходима синхронизация двух букв. Вместо символов «а» и «в» можно рассматривать слова. Пример 3. Рассмотрим следующий язык Я3, состоящий из более сложных слов вида а**К^в**К^с**К при К > 0. Ему принадлежат слова авс, ааввсс, ааавввссс,... Отметим, что число букв а равно числу букв в и числу букв с. Язык Я3 является контекстно-зависимым. Здесь необходима синхронизация трех букв. Пример 4. Рассмотрим следующий язык Я4, состоящий из более сложных слов а**К^в**К и слов а**К^в**(2*К) при К > 0. Ему принадлежат слова ав, аавв, аааввв и слова авв, аавввв, ааавввввв,... Данные выше 4 примера соответствуют четырем классам ГЯ. Чаще всего рассматривают реальные ФЯ второго класса (пример 2). Рассмотрим пример языка «число без знака», который используется во всех языках программирования. Следует подразделять графы языка на два вида: граф для обучения и граф для распознавания. Первый в литературе ныне используется часто для описания синтаксических диаграмм ФЯ. Они предназначены для обучения языку. В таких графах не уделяется внимание на последовательности выходящих из вершин дуг. Второй вид нами рассматривается для построения программ распознавания текстов. В таких графах уделяется внимание порядку выходящих из вершины дуг таким образом, чтобы маршрут в графе выбирался однозначно. Построение графов второго сорта всегда возможно для практически полезных языков. Если язык не допускает построения распознающего графа, то применяются средства «прощупывания вперед». 5.1.6. Распознающие грамматики. Грамматикой ЕЯ будем интересоваться по мере необходимости. ГЯ для ЕЯ весьма обширен, его построение нецелесообразно. Использование осмысливаемых текстов существенно сокращает объем ГЯ для ЕЯ. Порождающие грамматики для ФЯ традиционно в математической лингвистике описывается по [Хомский61] как четверка: <Т, Н, П, А>, где Т - конечный терминальный алфавит, Н - конечный нетерминальный алфавит, П конечный набор формул подстановок, А - выделенный нетерминальный символ (аксиома). Символы нетерминального алфавита обычно обозначаются словами или последовательностями слов, а слово состоит из терминальных символов, например А есть «программа». Формула подстановки есть пара (чаще всего непустых) слов в алфавите Т + Н. Первое слово не пусто. Количественные характеристики компонентов порождающей грамматики конечны, поэтому число таких грамматик - счетное. Следовательно, такие формы порождающих грамматик не могут описать все языки, удовлетворяющие соотношению Я <= У. При переходе к бесконечным алфавитам Т или (и) Н можно получить средство для описания порождающих грамматик, описывающих все языки из У (языки ван-Вейенгаардена [Красилов78в]). Порождающие грамматики приспособлены разрешать первую проблему машинной лингвистики, порождать тексты данного языка. Они не приспособлены для решения второй проблемы - проблемы распознавания принадлежности слова языку. Обычно предлагаются многообразные методы преобразования порождающих грамматик в распознающие автоматы [Ахо78, Ингерман69]. Подавляющее число методов преобразования критичны по отношению к ФЯ. Не все ФЯ, заданные порождающими грамматиками, могут быть преобразованы используемыми алгоритмами в распознающие автоматы. Практика работы над транслирующими системами подсказала новый подход к разрешению вопросов формирования распознающего автомата. Заманчивой оказалась мысль об использовании новых форм грамматик - распознающих грамматик, которые используют готовый распознающий автомат. Предпринята (как оказалось удачная) попытка построить такую новую форму грамматик [Красилов73б, 74в, 75, 78а]. Они оказались эффективными для построения транслирующих систем самого различного назначения, в то же время они также хорошо приспособлены для порождения текстов. Существуют алгоритмы распознавания и порождения, которые представлены ниже. Ниже главным образом рассматривается полная программа о распознающих грамматиках. Итак, построение распознающих грамматик будем осуществлять аналитическим методом. Метод понимается следующим образом (общая характеристика метода была приведена выше). Рассматривается язык Я слово за словом. Слова анализируются, обнаруживаются общие части, которые постепенно обобщаются. Далее. Каждому слову ставится в соответствие граф, в котором вершине, отмеченной кружочком, соответствует символ из анализируемого слова (может быть пустой символ), а дуге, отмеченной цепочкой тире, - операция катенации (соединения символов в слово). Например, слово ГРАФ представляется графом: Ø Г Р А Ф Ø о-------->о------>о------>о------>о------>о Х0 Х2 Х3 Х4 Х5 Х1 Вершины графа будем обозначать буквой Х с индексом, причем вершину Х0 будем считать входной, вершину Х1 - выходной, остальные вершины не нумеруются цифрами 0 или 1. Постепенно имена вершин опускаются, если они в дальнейшем не используются. Каждой вершине ставим в соответствие некоторый терминальный символ. Соединение слов, представленных графами, составляет главную операцию построения окончательного ГЯ аналитическим методом. При этом примем ряд ограничений. Вначале рассмотрим иллюстративный пример. Например, слова ГРАФ и ГРАФА можно представить таким ГЯ: Ø Г Р А Ф Ø Заметим, что в примере о------->о------>о------>о------>о------ пропущены имена вершин, o------>о вертикальные дуги отмечены о------- Ø стрелкой. Для наглядности А Ø допускается процедура умолчания имен вершин. Пример представлен графом-гамаком. Определим ГЯ формально так. Граф языка - это шестерка: ГЯсин = <X, Y, T, r, Х0, Х1>, где X - некоторое множество вершин, Y - некоторое множество дуг, <X, Y> - графгамак, T - конечный алфавит терминальных символов, r - отображение множества X на множество T, r: X-->T, Х0 - входная вершина, Х1 - выходная вершина. Граф языка определяет грамматику (которая именуется распознающей грамматикой). X и Y могут быть бесконечными множествами, следовательно, количество языков, представимых графами, будет бесконечным (по крайней мере, счетным). Все языки Я <= У могут быть представлены графами языка. ГЯ является синтаксическим графом языка (это помечено словом син), поскольку он задает только правила формирования последовательностей символов в словах. В графе не указан способ получения смысла слов. Семантический граф языка определяется формально как восьмерка: ГЯсем = <X, Y, T, M, r, p, Х0, Х1>, где в дополнение к уже данным обозначениям М - конечное подмножество натурального ряда, каждый элемент которого - это номер подпрограммы семантических преобразований (реализация семантики), р - отображение множества Х на множество М, р: Х-->М (каждой вершине соответствует вызов некоторой подпрограммы семантического преобразования). Публикация языка Паскаль [Вирт77б] сопровождается синтаксической диаграммой, внешне совпадающей с ГЯсин. Такие графы называются обучающими (ГЯобуч), они не ограничены дополнительными требованиями по сравнению с ГЯсин. Представление графа языка Фортран и Алгол 60 были обсуждены в [Красилов72, 73г]. К ГЯсин предъявляется следующее требование: пучок выходных для данной вершины дуг должен показывать на различные символы по r и не более чем на один подграф. Это требование всегда можно выполнить. Итак, в теории распознающих грамматик рассматриваются три сорта грамматик: синтаксические распознающие грамматики (для определения принадлежности слова языку в смысле синтаксиса), семантический граф языка (расширение синтаксического графа номерами подпрограмм семантического преобразования), обучающий граф языка (для запоминания последовательностей символов, принадлежащих языку). ГЯобуч имеет много вершин, которые ссылаются на несколько подграфов. Для распознавания эта ситуация сложна и может оказаться неразрешимой или вносить ошибки в реализациях трансляторов. Полный маршрут в ГЯ (от вершины Х0 до вершины Х1) по соотношению r определяет слово (текст) этого языка. Совокупность всех полных маршрутов определяет по r весь язык Я <= У. 5.1.7. Графическое представление примеров. Рассмотрим академические примеры ФЯ, которые уже упоминались выше. Язык Я1 состоит из множества слов А**К, для К = 1, 2, 3,... ГЯ Я1 имеет вид: Х0 Х2 Х3 Х4 Хк Х1 Я1 можно представить графически; Число вершин в таком графе бесконечно или зависит от длины слов в языке. Такие графы ФЯ необходимо сокращать с уменьшением числа вершин. При этом будем использовать графы с циклами: К раз Если опустить кружочки, то объем графа уменьшится: К раз Язык Я2 состоит из множества слов а**К ^ в**К для К = 1,2,3,.. Граф языка Я2 содержит условие синхронизации пары символов. Язык Я3 состоит из множества слов а**К^в**К^с**К, для К = 1,2,3,.., и содержит условие синхронизации трех символов. Граф этого языка представлен на рисунке ниже Этот граф языка указывает на необходимость синхронизации трех букв, что помечено точками. Язык, распознаваемый этим графом является контекстнозависимым. Граф составлен аналитическим методом, он наглядно представляет грамматику и может использоваться для обучения. Другой способ задания ГЯ связан с использованием стека для хранения символа m, выбор которого позволяет переходить к распознаванию третьей буквы в количестве шагов, равного количеству опознанных пар символов «а» и «в». Первый подграф аналогичен графу языка Я2 второй подграф распознает букву «с» столько раз, сколько было пар первых букв (язык Я3) Этот же граф можно записать в другом виде, когда явно используются два стека: Граф языка Я4 имеет вид, представленный на рисунке ниже. Его рассматривать несколько сложнее. Можно упростить процедуру рассмотрения, если воспользоваться стеком синхронизации Пример языка Я5 с именем «число без знака» приведен ниже. Важно обратить внимание на число синхронизуемых букв, слов или подграфов. Оно определяет, если можно так сказать, интеллект языка. Синхронизация реализуется с помощью одного или нескольких магазинов. ГЯ служит основой для построения программ грамматического разбора, которые выполняются на МГР для распознавания принадлежности фразы языку или для порождения фразы, принадлежащей языку. 5.2. Графический метаязык. Алгоритмы порождения и распознавания В результате аналитического анализа текстов языка формируются графы с большим или бесконечным числом узлов. необходимо обеспечить конечность числа узлов, что было продемонстрировано выше. Кроме этого, для обеспечения внешней наглядности необходимо принять ряд соглашений о способах вычерчивания графов. Сами соглашения представлены в форме правил замены одних фрагментов графа на другие, не меняющие смысл графа языка. 5.2.1. Графический метаязык. На примерах предыдущего раздела показана необходимость преобразования исходного графа с целью сокращения (элиминации) числа вершин (и дуг соответственно) и приведения графа к читаемому виду. Для преобразования графов введем несколько правил, совокупность которых определяет метаязык построения ГЯ. Так как метаязык относится к графическим объектам, то будем называть его графическим метаязыком. Рассмотрим правила сокращения графа языка путем сопоставления двух форм подграфов. Правило 1. Пучок выходных дуг будем изображать для наглядности гребенкой: Это правило вводит дополнительную вершину Х с r(Х) = nil, что не изменяет исходного языка ни по существу, ни по составу слов. Правило 2. Пучок входных дуг будем изображать гребенкой: Это правило также вводит дополнительную вершину без внесения ничего нового в сам язык. Правило 3. Замена катенации символов соответствующим словом. Граф из цепочки символов заменяется графом с одной вершиной – прямоугольником. Обратим внимание на тот факт, что на месте вершины в примере графа слово состоит из терминальных символов. Это правило ничего нового в язык не вносит. Нагруженность вершины (по r(Х)) можно указывать совмещением вершины и терминального символа (вспомогательное правило). Правило 4. Альтернативный выбор в пучке дуг заменяется одной вершиной прямоугольником с последовательностью альтернативных символов. Граф с альтернативным выбором заменяется прямоугольником, в котором должны быть перечислены все альтернативы. Правило несколько сокращает объем графа и делает его более наглядным для изучения и восприятия. Правило 5. Пусть имеется набор альтернативных символов таких, что их значения образуют непрерывный отрезок натурального ряда. Правило замены диапазона альтернативных символов прямоугольником с двумя отделениями для указания концов диапазона можно представить так: Правило 6. Замена подграфа одной вершиной сокращает общий графический объем ГЯ, если в нем имеются по крайней мере два одинаковых подграфа. Образец правила имеет вид овала с именем подграфа, которое фактически именует подъязык исходного языка. Подграф выступает в роли подпрограммы для всего ГЯ. Имя подграфа по своему существу является нетерминальным символом в ГЯ. Под этим именем изображается подграф, который формально определяется рекурсивно как любой ГЯ. Правило 7. Игнорирование символа связано с принятым в некоторых ФЯ игнорированием символа (например пробела). В языке Алгол 60 символы пробела игнорируются в текстах программ, они не влияют на выполнение алгоритма. Однако, разделителем слов является пробел. Этим пробелом игнорировать нельзя, он играет важную роль для алгоритма. Пробел существен также в кавычках, где его пропуски невозможны. Граф с игнорированием символа можно представить следующим образом (первый граф): Правило 8. Отмена игнорирования символа (см. выше, второй граф) связана с предыдущим правилом игнорирования символа. Там, где игнорируемый символ вновь приобретает значение, необходимо произвести отмену игнорирования. Роль 7 и 8 правил видна на примере полного графа без игнорирования символа пробела: Этот граф эквивалентен следующему графу: Правило 9. Обозначение прагматического ограничения на число используемых символов. Сошлемся на пример языка Фортран, в котором разрешается использовать в идентификаторах не более шести букв или цифр. Это прагматическое ограничение сложно представить в порождающей грамматике. Распознающие грамматики предоставляют возможность введения подобных ограничений. В ГЯ на дугу навешивается функция, а точнее - число, которые показывают на число допустимых прохождений дуги при распознавании или порождении текста подграфа, охваченного этой дугой. Пример с идентификатором языка Фортран можно представить так: Правило 10. Указание границ для позиций записи. Прежде всего построим описание одного класса языков, которые связаны с использованием форматного листа (бланка) для представления программ. Примерами могут служить бланки для записи программ на ассемблерном языке, на языке Фортран или на языке РПГ. Особенность таких записей состоит в том, что значение языкового символа в записи зависит от позиции текста. В языке Фортран 1 может значить в одной и той же строчке метку оператора, признак продолжения формулы, целое число или номер перфокарты. Языки подобного сорта называются форматными. Форматным языком называется ФЯ, у которого значение символа зависит от позиции текста, в котором помещен этот символ. Форматные языки постепенно исчезают, поэтому здесь только будут показаны средства для представления таких языков, не заботясь об иллюстрациях. Форматные языки не могут быть представлены порождающими грамматиками. Многие свойства форматных языков могут представляться распознающими грамматиками. Правило 10 вводит условное обозначение для указания в ГЯ позиций текста, в которых используются те или иные подграфы. Указания границ не изменяют существа языка, но изменяют значения (смысл) символов в некоторых подграфах. Форма вершины в графе для указания границ такова: где НГ - целое число, указывающее номер нижней границы фрагмента форматной записи, ВГ - целое число для верхней границы. Правило 11. Распределение переходов на подграфы. Граф графически емкого языка не изображается на одном листе. Поэтому необходимо иметь средства для «соединения листов», чтобы ГЯ имел общую структуру. Вначале приводится правило для указания ссылки перехода на другой лист. Ссылка имеет вид: Правило 12. Обозначение входа в подграф (в смысле листа бумаги или экрана) совпадает с именем вершины, поэтому оно используется в том случае, когда на него ссылаются другие вершины. Входы в подграф имеют вид: Правило 13. Сохранение имени вершины в магазине. Для раскрутки рекурсии используется магазин (стек). В нем сохраняются имена вершин, на которые будет переход из некоторого места в ГЯ. Сохранение имени вершины графически изображается так: Х ▬► m обозначает сохранение в стеке m имени вершины Х. Правило 14. Вызов перехода из магазина. При переходе на подграф обычно в магазине запоминается место возврата. Наступает момент в распознавании, когда необходима реализация перехода в основной граф по исчерпании элементов подграфа. Переход по магазину представляется так: где m - номер стека для выборки из него адреса возврата или имени вершины для возврата. Эта вершина является дополнительной, но не приносящей ничего нового в язык. Все перечисленные правила существенно сокращают число вершин и дуг в ГЯ. Это приводит к такому же сокращению размеров программы грамматического разбора, что в свою очередь сокращает объем используемой памяти для ее хранения. Одновременно решается задача обеспечения наглядности в представлении ГЯ для человека. Набор правил завершен, теперь переходим к разбору алгоритмов порождения и распознавания. 5.2.2. Алгоритмы порождения и распознавания. Чтобы убедиться в том, что граф языка в одинаковой мере пригоден для порождения и распознавания текстов, рассмотрим алгоритмы на графе, которые генерируют текст данного языка и определяют принадлежность заданного текста данному языку. Начнем с алгоритма порождения (АП), чтобы сопоставить его с алгоритмом реализации формул подстановок порождающей грамматики, затем рассмотрим алгоритм распознавания (АР) и отличия его от алгоритма порождения. Алгоритм порождения. Пусть задан ГЯ. Требуется получить слово этого языка. Алгоритм АП состоит из трех простых шагов. Но прежде рассмотрим общий процесс порождения. Пусть <C, Х> представляет состояние процесса порождения (или распознавания), С - текущее состояние слова после предыдущего выбора букв, Х некоторая вершина. Тогда порождение представимо переходами () из одного состояния в другое: <C, Хk> <C^s, Хi>, где s = r(Хi), (Хk,Хi) - дуга в графе языка, Хi - определяется произвольным выбором некоторой дуги. Совокупность переходов определяет автомат порождения, который циклически выполняет следующие шаги. Шаг 1: Рассмотрим входную вершину Х0 и дуги (Х0,Хi). По отображению r имеем Ø = r(Х0). Пустой символ не записывается в результат. Произвольно выберем дугу, например с вершиной Хi, и переходим к Шагу 2. Шаг 2: Рассмотрим данную вершину Хi и произвольно выделим одну дугу из набора (Хi, Хk), в результат работы алгоритма запишем символ s = r(Хk) в результат так, что текущее слово С перейдет в слово С ^ s. Переходим к Шагу 3. Шаг 3: Если вершина Хk = Х1, то процесс порождения завершается успешно, в противном случае переходим к шагу 2 с новой вершиной Хk (вместо вершины Хi). Основная особенность АП заключается в использовании на шагах 1 и 2 процедуры произвольного выбора дуги. АП является недетерминированным алгоритмом. Конечно, в практической реализации имеются трудности зацикливания по одному и тому же пути. Реальный алгоритм должен учитывать такие ситуации и предпринимать эффективные меры по исключению зацикливаний. Мерой может быть заказ числа возможных повторений циклов. АП можно применить к порождению тестов для контроля трансляторов, а также к определению корректности грамматического разбора (об этом можно прочитать в томе 7). Алгоритм распознавания. Второй алгоритм также состоит из трех шагов. В принятых выше обозначениях распознавание представимо переходами из одного состояния в другое: <s^C, Хk> <C, Хi>, где r(Хi) = s, (Хk,Хi) - дуга в графе языка, Хi выбирается из условия совпадения символа s из текста и символа r(Хi). Распознавание прошло удачно, если исходное слово С привело в результате цепочки переходов (==>) к слову Ø с вершиной Х1: <C, Х0> ==> < Ø, Х1>. АР можно представить так. Шаг 1: Рассмотрим входную вершину Х0, дуги (Х0,Хi) и первый символ s заданного распознаваемого слова-текста С. Вначале по отображению r имеется символ Ø = r(Х0), который входит в слово С. Из вершин xi выбираем ту, для которой r(Хi) = s. Если равенства невозможно получить, то объявляется синтаксическая ошибка, в противном случае переходим к Шагу 2. Шаг 2: Рассмотрим данную вершину Хi, дуги (Хi, Хk) и следующий символ s заданного текста С. Сравниваем s = r(Хk). Если они равны для некоторой вершины Хр, то переходим к Шагу 2 с вершиной Хр вместо Хi, иначе переходим к Шагу 3. Если перебор всех Хк реализован и равенство s = r(Хk) не достигнуто, то объявляется синтаксическая ошибка. Шаг 3: Осуществляется разбор случаев. Хk = Х1, достигнуто состояние (C ^ Ø, Хk), следовательно, распознавание завершено успешно, АР завершил работу; Хk =/= Х1 и достигнуто состояние (C ^ Ø, Хk), объявляется синтаксическая ошибка «текста недостаточно»; Хk = Х1 и не достигнуто состояние (C ^ Ø, Хk) ), объявляется синтаксическая ошибка «лишний текст»; Хk =/= Х1 и не достигнуто состояние (C ^ Ø, Хk), следует перейти к Шагу 2. Итак, полный маршрут в ГЯ от Х0 до Х1 соответствует слову (тексту вообще), которое принадлежит языку. Совокупность полных маршрутов определяет весь язык. 5.2.3. Применения алгоритмов. АР находит применение в трансляторах формальных и формализованных языков. Схематически применение АР можно представить так. Пара <АР,ГЯ> является алгоритмическим представлением грамматического анализатора текстов данного языка, соответствующего ГЯ. Реализация АР называется машиной грамматического разбора. Реализация ГЯ, вводимой распознающей грамматики в память ВМ, называется программой грамматического разбора (ПГР). Пара <МГР,ПГР> является реализацией пары <АР,ГЯ>, что представляет собой грамматический анализатор текстов данного языка. Можно построить интерпретатор МГР (ИМГР) и коды ПГР (КПГР), тогда пара <ИМГР,КПГР> является транслятором данного языка. Если ГЯ является синтаксическим, то транслятор будет выполнять функции синтаксического анализатора. Если ГЯ является семантическим, то транслятор выполняет свои собственные функции перевода входного слова или текста в выходной текст. АР находит применение в программах управления, когда необходимо распознать входное слово или входной текст и выработать команду управления. Это важное применение во встроенных ВМ. МГР классифицируется на 4 класса. Классификация Хомского имела 3 класса грамматик и в качестве четвертого класса рассматривались все остальные грамматики, которые не укладывались в первые три класса. Классификация МГР связана с числом синхронизуемых символов (слов или подграфов языка) и с установлением соотношений анализируемых символов и состояний памяти МГР. Возможны случаи: синхронизация отсутствует (МГР1), имеется синхронизация пар символов (МГР2), имеется хотя бы одна синхронизация двух и большего числа символов (МГР3) и имеется «синхронизация» символов и состояний (имен вершин) графа языка (МГР4). Классификация становится более понятной при рассмотрении системы команд МГР каждого из четырех номеров, построенной на основе АР. Структура транслятора ФЯ на базе МГР дана ниже в форме блок-схемы. Здесь «Парсер» - программа последовательного выбора символов из входного текста. На этой схеме тонкие стрелки изображают поток данных, а утолщенные - поток управления. МГР, которая имеет регистры (регистр текущего адреса, регистр номера лексемы, регистр типа лексемы, регистр адреса процедуры, регистр кода процедуры семантического преобразования, регистр адреса и, регистр адреса или в ГЯ и другие регистры), а также стек адресов возврата (см. систему команд). Для определения свойств четырех типов МГР рассмотрим системы команд. 5.3. Система команд МГР типа 1 ГЯ - это объемный рисунок, легко воспринимаемый человеком для понимания языка. Для работы АР (да и АП) необходимо выполнить операцию ввода ГЯ в память МГР. При этом нужно иметь в виду, что память МГР (как и память ВМ) является линейной - последовательность ячеек, адресованных номерами из отрезка натурального ряда. При рассмотрении ГЯ можно определить ту информацию, которую необходимо ввести, чтобы отобразить все атрибуты ГЯ. Из определения ГЯ видны все атрибуты: 1. имя данной вершины, 2. сорт вершины (код операции), 3. терминальный символ (имя вершины), 4. имя вершины, на которую ссылается данная вершина, 5. число выходных дуг, 6. метка семантической подпрограммы p из множества М (имя вершины). При этом необходимо каким-либо образом отметить начальную вершину Х0 и конечную вершину Х1 в ГЯ. Этой информации достаточно для отображения распознающей грамматики в памяти МГР. Заметим, что графический метаязык вводит новые сорта вершин, которые также должны быть отражены при вводе ГЯ. Некоторые правила графического метаязыка требуют добавления двух атрибутов: номер магазина и имя вершины для возврата из подграфа. Единица кода ГЯ, содержащая указанные атрибуты называется командой МГР, а последовательность команд - программой грамматического разбора. Процессор МГР выполняет все примитивы, определяемые АР и графическим метаязыком. Они будут ясны из объяснения алгоритмов выполнения команд ПГР. Ячейки памяти ИМГР перенумерованы от 0 до некоторого конечного N+1, N равно числу вершин ГЯ. В каждой ячейке помещается информация об одной вершине - одна команда ПГР. Примем соглашение о том, что в ячейке с номером 0 содержится информация о вершине Х1, а в ячейке с номером 1 - о вершине Х0. Как сказано информация о вершине определяет команду ПГР, так как вершина - это указатель продолжения пути выбора полного маршрута в ГЯ. Совокупность разновидностей команд (кодов операций) определяет систему команд МГР. Форма и состав команды определяется кодом команды. Традиционно язык системы команд определяется либо кодами (в некоторой системе счисления), либо он является ассемблерным языком, либо он является языком высокого уровня. Первый метод представления не эффективен (малопознаваем), поэтому его рассматривать не будем. Второй метод выберем в качестве образца для описания системы команд МГР. Третий метод избыточен, так как всего необходимы две команд и их модификации для представления системы команд МГР (мало разнообразие операций). Третий метод применен в инструментарии программного комплекса «Галактика» Красиловым Н.А., реализация ГЯ представляется средствами ФРАК. С помощью ассемблера можно породить кодовое представление ПГР, но при этом естественно уменьшается наглядность программы. Рассмотрим систему команд МГР1 на языке ассемблера. В системе определяется две главные команды (квадратные скобки используются для указания возможности опускания их содержимого) и алгоритмы их выполнения: [имя вершины 1 :] ЕСЛИ символ, ТО имя вершины 2 [(число дуг)]; Имя вершины 1 (термин) можно опускать, как указывалось ранее в примерах, если на это имя нет ссылок в ПГР. Число дуг опускается, если оно равно единице. Каждая команда завершается символом точки с запятой. Если текст команды рассматривать в целом, то она примет вид продукции языка знаний ЭС. Можно считать, что <МГР,ПГР> является своеобразной ЭС: МГР - оболочка ЭС, ПГР - знание о языке, представленное продукциями. Разнообразие продукций образует наборы команд МГР. Первая команда называется командой условного перехода. Она выполняется так. Текущий символ анализируемого текста сравнивается с символом из команды. Если в наличии совпадение, то следующей командой является та, которая помещена по адресу «имя вершины 2», при этом запоминается «число дуг» и выбирается очередной символ из анализируемого текста. Если обнаружено несовпадение, то по числу дуг от предыдущей команды определяется «все ли команды для анализа рассмотрены». Если все команды рассмотрены (при выполнении их не получено совпадение), то объявляется синтаксическая ошибка. В противном случае рассматривается очередная команда для сравнения символов из команды и выбранного символа из текста. В другой системе команд число дуг может опускаться, если вслед за группой команд поставить специальную команду печати ошибок. Сказанное является повторением АР. Вторая команда имеет следующий формат: [имя вершины 1 :] НА имя вершины 2 [(число дуг)]; Эта запись именуется командой безусловного перехода, в ней отсутствует «символ» (или точнее сказать - в наличии пустой символ). Здесь также следует принимать во внимание замечания к первой команде. Выполнение команды состоит из безусловного перехода к рассмотрению группы команд из «числа дуг», размещенной после метки «имя вершины 2». При этом никаких ошибок в анализируемом тексте не обнаруживается. Ячейка с адресом 1 используется для команды безусловного перехода на начало ПГР. Эти две команды полностью определяют систему команд МГР1. Однако для удобства программирования ФЯ введена команда останова. Путь выполнения ПГР в данный момент должен обязательно привести к вершине Х1. В ячейке с адресом 0 обычно помещается команда останова и выхода из ПГР. Чтобы программист не думал над путями выполнения ПГР, введена команда следующего вида: [имя вершины :] СТОП; Система команд МГР1 позволяет программировать ГЯ, представленный конечным числом вершин. Однако бесконечные слова могут обрабатываться с помощью конечного ГЯ, так как в ГЯ могут быть циклы, образованные безусловными переходами «вверх». Мощность МГР1 приблизительно равна мощности линейных грамматик по Хомскому, если под мощностью понимать число языков, которые представляются ГЯ и средствами МГР1. «Приблизительность» равенства точно не исследовалась. Такая квалификация получена на основе рассмотрения примеров и некоторых интуитивных соображений относительно свойств линейных грамматик и МГР1. К примеру, порождающая грамматика <{a, b}, {L}, {Lab, LaLb}, L> не может быть запрограммирована на МГР1, она программируется на МГР2. 5.4. Система команд МГР типа 2 и Расширение системы команд МГР Если язык содержит слова типа приведенного в примере 2, то возникает проблема одинарной синхронизации двух символов. Порождающая грамматика приведена в конце предыдущего раздела. Пример языка а**К^в**К подсказывает пути расширения системы команд МГР1 введением понятия подграфа по аналогии с понятием подпрограммы. Система команд МГР2 составляется из команд МГР1 добавлением двух новых команд. Кроме этого расширения системы команд МГР1 рассмотрим дополнительные команды, соответствующие графическому метаязыку и не расширяющие системы команд МГР1 и МГР2. Известно, что подпрограммы реализуются с помощью стека, в котором запоминается адрес возврата из подпрограммы. ПГР составляется по таким же принципам. В ГЯ выделяются подграфы (подъязыки), которые программируются автономно и к которым осуществляется обращение по мере надобности. Две новые команды имеют формат следующего вида: [имя вершины 1 :] ЕСЛИ символ, ТО имя вершины 2 (число дуг), имя вершины 3; Первая команда выполняется аналогично команде условного перехода для МГР1, но при удачном сравнении и переходе по метке «имя вершины 2» в стеке (магазине) запоминается метка для возврата «имя вершины 3». Остальные части алгоритма выполнения команды аналогичны. Метка из вершины стека используется второй командой. [имя вершины :] ВОЗВРАТ; ВОЗВРАТ означает переход на одну команду по метке, которая выбирается из верхушки стека, или магазина. Содержимое магазина продвигается для размещения в верхушке магазина метки, помещенной туда ранее (принцип «последний пришел первый обслужись»). Если в первой команде опустить ее часть «, имя вершины 3», то получается известная команда ИГР1. Первая новая команда превращается в команду безусловного перехода, если опустить слово «символ» и воспользоваться обозначениями второй команды МГР1. Можно легко увидеть различие команд безусловного перехода для МГР1 и МГР2: [имя вершины 1 :] НА имя вершины 2 (число дуг), имя вершины 3; Итак, констатируем: МГР1 <= МГР2, всего введено 2+2 = 4 команды. Мощность МГР2 приблизительно (вопрос равносильности рассмотрен только на примерах, не найдена порождающая контекстно-свободная грамматика, которая не программируется на МГР2) равна мощности контекстно-свободных грамматик по Хомскому Теперь рассмотрим расширение системы команд МГР1 и МГР2, связанное с графическим метаязыком ГЯ. Расширение не привносит ничего нового в возможности процесса распознавания и увеличения мощности МГР. Правила графического метаязыка с номерами 1, 2 и 12 формальны, они только создают графическое удобство, не внося ничего нового в систему команд МГР. Правила с номерами 6, 13 и 14 уже учтены при формировании команд МГР2 и, следовательно, МГР3 и МГР4. Остальные правила метаязыка рассматриваются ниже. Правила 1, 2 и 12 не нуждаются в пояснениях, они являются введением условного обозначения. Правило 3 реализуется командой условного перехода после совпадения каждого символа из анализируемого текста и каждого символа из анализируемого текста в приводимой ниже команде совместного сравнения: ЕСЛИ строка, ТО имя вершины 1 ( число дуг ), имя вершины Д; Здесь имя вершины-метки для наглядности опущено. Эта команда является сокращением следующей последовательности команд (что показывает на неизменность систем команд МГР): ЕСЛИ строка[1], ТО имя вершины 2; имя вершины 2: ЕСЛИ строка[2], ТО имя вершины 3; ............................................................................................................. имя вершины К: ЕСЛИ строка[К], ТО имя вершины 1 ( число дуг ), имя вершины Д; где строка[Н] - символ с номером позиции Н в строке команды, Н = 1, 2,.., К. Правило 4 реализуется командой условного перехода после совпадения одного символа из анализируемого текста и очередного символа из списка символов в следующей команде альтернативного сравнения и перехода при совпадении: ЕСЛИАЛЬТ строка, ТО имя вершины 1 ( число дуг ), имя вершины 2; Эта команда представляет сокращенную запись последовательности команд МГР с аналогичными атрибутами: ЕСЛИ строка[1], ТО имя вершины 1 ( число дуг ), имя вершины 2; ЕСЛИ строка[2], ТО имя вершины 1 ( число дуг ), имя вершины 2; .......................................................................................................... ЕСЛИ строка[К], ТО имя вершины 1 ( число дуг ), имя вершины 2; Правило 5 реализуется командой условного перехода после совпадения одного из символов диапазона, указанного в квадратных скобках и символа из анализируемого текста. Такая команда сравнения также представляет сокращенную запись последовательности команд с аналогичными атрибутами, как для команды ЕСЛИАЛЬТ. Общий вид команды приведен ниже: ЕСЛИДИАП символ .. символ, ТО имя вершины 1 ( число дуг ), имя вершины 2; Правило 7 реализуется командой МГР1 или МГР2 безусловного перехода с одновременным запоминанием указанного в команде символа в особом регистре или в специальном стеке: ИГНОРИРОВАНИЕ символ, имя вершины 1 ( число дуг ), имя вершины 2; Правило 8 реализуется командой отмены игнорирования символа и безусловного перехода к следующей команде. Команда отмены имеет вид: ОТМЕНА символ; Правило 9 реализуется командой указания числа допустимых циклов (функция, нагруженная на дугу) следующего вида: НА имя вершины, { число циклов }; Правило 10 реализуется командой указания пар чисел - номеров позиций форматного текста (форматного языка), в пределах которых реализуются данный подграф (нагруженные на дуги функции). Команда имеет следующий вид: ГРАНИЦЫ число 1 .. число 2; Правило 11 реализуется командой указания числа допустимых переходов при достижении соответствующего номера позиции форматного текста (нагруженные на дуги функции). Команда имеет следующий вид: НА [ номер позиции 1, имя вершины 1, номер позиции 2, имя вершины 2, ..................................................... номер позиции К, имя вершины К ]; Все рассмотренные команды реализации правил графического метаязыка, представляющие расширение системы команд МГР1 и МГР2, переносятся в системы команд МГР3 и МГР4. Для переноса их достаточно сделать необходимые добавления в командах, касающиеся включения номеров магазинов, в которых следует сохранять метки для возврата из подпрограммы в основную ПГР. 5.5. Система команд МГР типа 3 Для программирования синхронизации двух и более текстов (или символов) необходимо ввести соответствующее число магазинов. Выше был рассмотрен пример контекстно-зависимого языка а**К^в**К^с*к. Для распознавания двух зависимостей «а» и «в» необходимы два магазина. Система команд МГР2 расширяется еще на две команды введением в команду указания номера магазина. Система команд с таким расширением образует систему команд МГР3. Таким образом символически МГР3 = МГР2 + две команды. Одна команда условного перехода после совпадения очередного символа анализируемого текста и символа команды осуществляет запоминание метки перехода в магазине с заданным номером, другая команда осуществляет возврат по содержимому верхушки магазина с заданным номером. [имя вершины 1 :] ЕСЛИ символ, ТО имя вершины 2 (число дуг), имя вершины 3 (номер магазина); Для этой команды имеется аналогичная команда безусловного перехода, если необходимо реализовать сравнение с пустым символом, она почти отличается от команда условного перехода отсутствием символа, с которым осуществляется сравнение. Команда имеет вид: [имя вершины 1 :] НА имя вершины 2 (число дуг), имя вершины 3 (номер магазина); она эквивалентна команде: [имя вершины 1 :] ЕСЛИ Ø, ТО имя вершины 2 (число дуг), имя вершины 3 (номер магазина); Вторая команда МГР3 реализует возврат из подпрограммы (подграфа) на метку, хранящуюся в магазине с известным номером: [имя вершины :] ВОЗВРАТ (номер магазина); Мощность МГР3 приблизительно равна мощности контекстно-зависимых порождающих языков Хомского. Не было найдено ни одного такого языка, который бы не был программирован на МГР3. Практика программирования ФЯ указывает метод реализации числа магазинов, более одного. Действительно, выделение памяти для многих магазинов (или стеков) требует резервирования памяти по каждому магазину, что является не очень экономным методом. Можно использовать один магазин, в каждой ячейке которого кроме метки возврата сохраняется еще и номер магазина. В этом случае память резервируется только для одного магазина, но несколько усложняется алгоритм поиска и выбора метки возврата, находящейся в верхушке магазина с известным номером. Ниже представлена таблица обзора применения МГР для сравнения реализации практически полезных ФЯ, представленных порождающими и распознающими грамматиками. Поскольку аппарат МГР оказался эффективным в практических работах по реализации трансляторов, были проанализированы различные и конкретные трансляторы. Результаты анализа представлены в таблице. Число правил порождающих грамматик не подразумевает объединение правил-альтернатив (применение операции | по Бэкус-Науру или «;» по метаязыку Марков), все они считаются различными. Пункт 1 2 3 4 5 6 7 8 9 10 11 Язык порождения КС-грамматика Алгол 60 Алгол 60* Фортран Анализ ФРАК Диалог Ляпас-М Модель Логика-0 Ада Число правил Число команд распознавания Литература с описанием языка 83 360 360 325 340 300 210 500 45 540 380 450 800 530 100 400 360 230 1800 [Красилов75] [Лавров64] [Красилов67] [Языки72] [Красилов73в] [Красилов78б] [Красилов86а] [Закревский] [рукопись] [рукопись] [Джехани88] Комментарии к таблице содержит краткую характеристику известных и мало известных языков программирования: КС-грамматика - это порождающая грамматика для описания КС-грамматик (см. метаязык Марков), он необходим был для построения конструктора или транслятора программ грамматического разбора (конструктор ПГР). Число команд распознавания вдвое меньше числа правил КС-грамматики, что обусловлено использованием команд альтернативного сравнения. Алгол 60* - язык Алгол 60, для которого ключевые (зарезервированные) слова (или терминальные символы языка) являются и терминальными символами устройства ввода текстов программ на этом языке. Например, для ключевого символа begin на специальном клавишном устройстве существовала клавиша с таким терминальным символом. Анализ - язык для записи алгоритмов аналитических выкладок на машине. В языке введено понятие определения типа данных (по образцу языка Алгол 68), что привело к увеличению размеров ПГР за счет распознавания новых типов данных по сравнению с размерами порождающей грамматики. ФРАК - формульный автокод (см. разделы 1.2 и 1.3), машинно-ориентированный язык высокого уровня, построенный по принципам языка высокого уровня, но содержащий только машинные операции, представленные текстуально в формулах. Таких языков составлялось для четырех типов встроенных ВМ и шести их модификаций. Диалог - простейший язык меню на ЭВМ М-222. Простейшее одно из первых меню на этой машине реализовал Горельков А.Л. Транслятор переводил запросы пользователя и осуществлял вызов запрашиваемой работы. Ляпас - язык Закревского А.Д. предназначен для описания электронных схем при автоматизации моделирования и проектирования радиоаппаратуры. Этот язык описан неформально, а соответствующая программа МГР явилась первой формализацией распознающей грамматикой для языка Ляпас-М. Модель - язык описания микропроцессоров для автоматического построения интерпретаторов и микропрограмм. На основе языка была реализована система моделирования электронных схем, транслятор - ассемблер микропроцессора и документатор рабочих программ управления. Логика-0 - язык описания произвольных исчислений высказываний для доказательства теорем этого исчисления на машине. На этом языке описывалась исследуемая аксиоматика и доказываемые теоремы. Результатом работы системы было подтверждение правильности формулировки теоремы или условие, при котором исходное утверждение являлось бы теоремой. Ада - алгоритмический язык для программирования встроенных ВМ специального назначения [Красилов83а, 86б, 87а, 88б, 89в]. Число команд программы грамматического разбора увеличено за счет программирования семантического распознавания назначения идентификатора. Рассмотрим примеры другого сорта. Именно, ниже будут показаны четыре академических примера для характеристики сложности программ грамматического разбора (сами программы не приводятся). Примеры программ разрабатывались студентами. Основной и важной характеристикой программы (в ней содержится интеллектуальность языка) является количество используемых магазинов. Пример 1. В трехбуквенном алфавите {a, b, c} разрешено строить слова, содержащие одинаковое число каждой буквы в любом порядке, размер слова языка определяется как C = 3*k. Программа для МГР3 имеет 30 команд, 9 магазинов. Для nбуквенного алфавита число команд равно А*n, а число магазинов равно n*n. Пример 2. Линейный КС-язык состоит из слов XY n-буквенного алфавита, где Y обращение X (запись Х выполнена посимвольно в обратном порядке относительно порядка символов в Y). Программа грамматического разбора МГР3 состоит из 8*n + 8 команд и использует n + 3 магазина. Пример 3. В двухбуквенном алфавите распознавание слова ХХ (двойное повторение слова Х) программируется 28 командами МГР3 и 7 магазинами. Порождающая грамматика состоит из 17 формул подстановки НС-грамматики. Пример 4. Язык состоит из слов однобуквенного алфавита длиною n*n. Программа МГР3 состоит из 17 команд, использующих 3 магазина. Порождающая грамматика состоит из 11 формул подстановок НС-грамматики. Самый общий вывод, к которому можно прийти после анализа примеров, состоит в том, что число команд ПГР приблизительно равно числу формул подстановок порождающей грамматики (одинаковая информативность). Другой вывод: конструирование ГЯ значительно проще конструирования порождающих грамматик, а построение ПГР осуществляется автоматизировано по ГЯ. 5.6. Система команд МГР типа 4 Можно установить, что возможностей МГР3 еще недостаточно для реализации любого ГЯ. Поэтому рассматривается следующий тип МГР с добавлением еще двух команд к МГР3 так, что МГР4 = МГР3 + две команды. Первая команда заносит в магазин с известным номером метку (своеобразный символ), она имеет следующий вид, напоминающий вид команд МГР2 и МГР3: [имя вершины 1 :] МАГАЗИН имя вершины 2 (число команд), имя вершины 3 (номер магазина); Вторая команда МГР4 связана со сравнением содержимого верхушки магазина с меткой в команде и переходом на группу команд при совпадении меток из команды и из магазина. Формат команды таков: [имя вершины 1 :] СРАВНЕНИЕ содержимое магазина (номер магазина), имя вершины 2 (число дуг); Имя вершины2 - метка перехода при совпадении «содержимого магазина» команды и содержимого магазина с заданным номером. Конечно, для хранения меток можно выбрать специальный магазин, предназначенный только для меток, чтобы избежать коллизий символов и меток при возникновении грамматических ошибок, или воспользоваться имеющимся магазином. Команда сравнения может быть расширена введением атрибутов запоминания меток возврата. Вместо заключения. Этим завершается построение системы команд МГР. Состав системы команд насчитывает всего 8 команд без учета расширения, не вносящего ничего нового в процессы грамматического разбора текстов. Мощность МГР больше мощности системы языков с порождающими грамматиками Хомского. Для установления мощности МГР осуществим сравнение МГР и МТ. Тип языка можно определять типом используемой МГР. Система команд МГР любого типа отражает синтаксический вариант ГЯ. Для программирования семантического ГЯ в формат команд необходимо добавить еще одно поле, в котором надо помещать имя подпрограммы формирования выходного текста. Для ГЯсем принят следующий формат команд: [имя вершины 1 :] ЕСЛИ символ, ТО имя вершины 2 (число дуг), имя вершины 3 (номер магазина), имя семантики; где «имя семантики» указывает на подпрограмму формирования выходного текста. Команды МГР всех типов содержит такое поле, если формирование выходного текста реализуется, в противном случае используются команды без поля семантики. На основе ПГР такого типа строятся трансляторы языков, которые заданы или описаны распознающими грамматиками представленных выше типов. Описание любой распознающей грамматики реализуется как ПГР синтаксического или семантического типов. Даже на первый взгляд видно, что распознающие грамматики намного эффективнее любой порождающей грамматики для реализации задачи определения истинности высказываниям: конкретный текст принадлежит данному языку. Распознающие грамматики могут использоваться для порождения текстов языка. Для технической реализации задачи порождения необходимо построить весьма простую машину генерации текстов с весьма малым числом дополнительных команд. Они необходимы для наложения ограничений на циклы в ГЯ и осуществления контроля над завершением работы машины. Конечно, следует иметь в виду, что машина не осуществляет никакого синтаксического контроля. По-видимому, для машины генерации текстов реализуется лишь прагматический контроль количественных характеристик текстов. 5.7. Эквивалентность МГР и машины Тьюринга Здесь рассматривается доказательство теоремы об эквивалентности МГР и МТ. Метод доказательства теоремы привлекателен своей необычностью и находит все большее применение. Таких теорем еще немного, стиль доказательства характерен для доказательств теорем в информатике. Сущность метода доказательства состоит в моделировании свойств одной машины на другой (одна или обе машины могут быть математическими). Это делается для переноса свойств одной машины на другую после установления эквивалентности их. В нашем случае свойства МТ необходимо перенести на МГР, тогда возможности МГР будут практически совпадать с возможностями МТ. Их эквивалентность устанавливается путем моделирования. Метод применялся и применяется для установления эквивалентности различных модификаций МТ. В этих предположениях будем доказывать теорему: «МГР функционально эквивалентна МТ». Понятие функциональной эквивалентности означает, что любая программа МГР может быть представлена программой МТ с тем же результатом, любая программа МТ может быть представлена программой МГР с тем же результатом. И еще одна формулировка теоремы: множество ЯМГР - языков распознаваемых МГР равносильно множеству ЯМТ - языков, перерабатываемых распознающей функцией МТ (ЯМГР = ЯМТ). Доказательство. Из теории множеств известно, что ЯМГР = ЯМТ эквивалентно ЯМТ >= ЯМГР & ЯМГР >= ЯМТ. Первое соотношение ЯМТ >= ЯМГР верно в силу того, что МГР является реализацией алгоритма распознавания АР. Работа МГР может быть программирована на МТ. Остается установить правильность второго соотношения ЯМГР >= ЯМТ, которое означает, что любая программа для МТ может быть представлена программой МГР. Выбираем следующую тактику. Представим в форме подпрограммы МГР процесс выполнения каждой команды МТ. Их всего три. В теории МТ установлено, что рассматриваемая ниже МТ эквивалентна другим классам МТ. Для трех команд поставим в соответствие подпрограммы МГР. Из этих подпрограмм можно составить полную программу МГР, выполняющую в точности те же функции что и любая программа МТ. Для установления истинности второго соотношения построим модель МТ на средствах МГР. Имеется семь разделов моделирования. (1) Знаковое моделирование предусматривает сопоставление терминальных алфавитов МГР и МТ. Они идентичны полностью. Обе машины перерабатывают слова в одном и том же терминальном алфавите. Правда, МТ может содержать в терминальном алфавите еще три символа: начало слова, конец слова и символ останова. Их моделирование не усложняют проблему сопоставления, поэтому будем ими пренебрегать для простоты. (2) Языковое моделирование предусматривает сопоставление системы команд обеих машин. Это главный раздел моделирования, он будет рассмотрен далее. (3) Концептуальное моделирование предусматривает сопоставление основных понятий двух машин. Обе машины характеризует основная их работа (переработка входных слов в выходные), любая работа машин программируема (ПГР и программа МТ), программы состоят из команд обработки символа и перехода к следующей команде, результаты обработки - разрешение проблемы принадлежности слова языку. МТ вполне приспособлена для решения этой задачи. Можно построить программу МТ, которая в качестве результата выдает пустое слово, если анализируемое или исходное слово принадлежит языку, в противном случае МТ выдает ненулевое слов. Рассмотрим только эту сторону работы машин. Потенциально можно рассмотреть проблему формирования результирующего текста (трансляция для МГР и вычисления для МТ). Конечное множество имен состояний МТ будем моделировать конечным множеством имен вершин, используемых в ГЯ. (4) Информатическое моделирование предусматривает сопоставление знаний, получаемых при переработке исходного слова в результат. Обе машины эквивалентны в смысле разрешения главной проблемы, они получают одинаковые результаты. Далее. (5) Теоретическое моделирование предусматривает сопоставление исчислений, на которых построены МГР и МТ. Это реализуется косвенно по другим разделам моделирования. В основе доказательства лежит именно теоретическое моделирование. (6) Алгоритмическое моделирование предусматривает сопоставление процессов составления программ для работы машин. Эти процессы идентичны. Выполнение команды МТ моделируется выполнением подпрограммы МГР, состоящей из команд. (7) Структурное моделирование предусматривает сопоставление физического состава обеих машин. Бесконечную в оба конца ленту МТ будем моделировать двумя магазинами (фактически можно моделировать одним магазином). Логическое устройство МТ моделируется алгоритмами МГР. Движение ленты МТ моделируется выборкой из магазина, например, при движении ленты влево, и посылкой в другой магазин. Эти разделы полностью гарантируют правильность доказательства теоремы. Доказательство теоремы проведено совместно со студентом МФТИ Лукашевым В.В. Таким образом процесс доказательства сводится при указанных условиях к программированию команд МТ подпрограммами МГР. В качестве следствия теоремы можно сказать о том, что множества языков, обрабатываемых на МТ и МГР равномощны. Различие машин имеется только в количествах выполняемых операций над одним и тем же алгоритмом. Здесь сказывается потеря производительности МГР по сравнению с МТ как при всяком моделировании. Прежде всего примем некоторую модель МТ. Заметим, что теоретически имеются самые разнообразные модели МТ. Имеется также фундаментальное утверждение о функциональной эквивалентности всех модификаций МТ. В связи с этим будет использован простейший (классический) вариант МТ, что упростит понимание основной теоремы об эквивалентности МГР и МТ. Заметим также еще раз, что установление эквивалентности МГР и МТ дает возможность переноса всех свойств МТ на МГР. Эта возможность является прагматической целью изучения эквивалентности. Так как относительно свойств МТ накоплено много теорем, то перенос сущности утверждений относительно МТ на МГР снимает трудности поиска доказательств аналогичных утверждений для МГР. МТ имеет бесконечную в оба конца ленту с ячейками для хранения терминальных символов алфавита Т = {А1,А2,...,Аn}, читающую или пишущую головку, логическое устройство (ЛУ) программного управления и двигатель D ленты, перемещающий ленту за один такт выполнения команды влево (L) на одну ячейку, вправо (R) на одну ячейку или не перемещающий ленту (N). ЛУ может находиться в одном из состояний Q = {q0,q1,q2,...,qm}. D - представляется символами из множества {L,R,N}. Для МТ имеются специальные символы # - заполняющие левый конец ленты, $ заполняющие правый конец ленты и «!» - обозначающий в программе остановку МТ. Введение этих символов условно. Между символами # и $ помещается слово S (s1,s2,s3,..,sn) из терминальных символов Т для обработки по программе. Результат обработки сохраняется на ленте. Если результатом является пустое слово, то проблема принадлежности слова языку разрешается положительно, в противном случае в исследуемом слове имеется языковая ошибка. Далее. Символы # и $ не обрабатываются, а символ (!) моделируется командой МГР останова. Команда управления МТ реализует один элемент отображения следующего вида: Т * Q --> D * T * Q. За один такт работы МТ выполняется преобразование вида: (Аi, qj) --> (d, Аk, ql), где d равно L, R, N (или !). Как было сказано, будем рассматривать несколько упрощенный вариант системы команд МТ, которая состоит из трех сортов команд (обычно программа МТ задается таблицей из m строчек и n столбцов): 1. (Аi, qj) --> (N, Аk, ql), 2. (Аi, qj) --> (L, ql), 3. (Аi, qj) --> (R, ql). МТ предназначена для производства вычислений или для реализации вычислительных функций, в то время как МГР реализует распознавание истинности соотношения S in Я. Будем рассматривать программы работы МТ, которые реализуют функции: = Ø, если S in Я МТ(S) =/= Ø, если not(S in Я) Будем считать, что ячейка ленты МТ, которую обозревает читающая головка, моделируется верхушкой первого магазина МГР. Также будем считать, что читающая головка установлена на начало слова S. Подпрограммы-модели команд МТ соответствуют любой из трех команд, поэтому начальная установка головки несущественна. Переходим к построению подпрограмм моделирования каждой команды МТ. Начало каждой подпрограммы включает последовательность команд МГР для распознавания символа, который помещен под читающей головкой. Затем подпрограмма реализует действия, предусмотренные командой МТ. Трем командам МТ соответствуют три подпрограммы МГР. Начало подпрограмм состоит из последовательности команд МГР типа 4: qik : СРАВНЕНИЕ qkl, Aj (1); гле qik, qkl - некоторые состояния МТ из алфавита состояний Q, (1) - номер магазина, моделирующего левую часть бесконечной ленты, i, k, l = 1, 2,.., m. Всего таких команд в последовательности m*n. Для каждой из трех команд запишем подпрограммы МГР. Команда первого типа. После определения искомого символа Aj выполняется замена символа Aj на символ Ak и переход в состояние ql (передача управления на идентичное имя вершины) с числом команд К: qkl : НА qk (К), Ак (1); На этом моделирование команды МТ первого типа завершается. Число таких команд МГР равно числу состояний ЛУ. Команда второго типа. Пусть определение искомого символа реализовано. Тогда моделирующая подпрограмма для этой команды МТ чуть сложнее, так как она связана с моделированием перемещения ленты МТ влево. Для этого надо произвести распознавание символа во втором магазине (в левой части бесконечной ленты) с выборкой символа и записью выбранного символа в верхушку первого магазина. Но прежде необходимо выбранный при начальном распознавании символ поместить в магазин номер 1 (вернуть в прежнее состояние содержимое ленты). Команда МГР из последовательности имеет вид: qkl : НА qр (К), Аj (1); После выполнения одной из команд последовательности необходимо распознать символ верхушки второго магазина. Это делается аналогично поиску при начальном распознавании символа: qр : СРАВНЕНИЕ qх, Aх (2); Теперь надо записать символ Aх в верхушку первого магазина. Для этого используются команды следующего вида: qх : НА ql (К), Ах (1); Такими группами команд моделируется перемещение ленты влево и второй команды МТ. Команда третьего типа. Пусть определение искомого символа реализовано. Тогда моделирующая подпрограмма для этой команды МТ будет простой, поскольку моделирование перемещения ленты вправо реализуется одной командой МГР. Достаточно восстановить верхушку второго магазина символом, который распознан при начальном распознавании. Представляющую последовательность команда МГР имеет вид: qkl : НА ql (К), Аj (2); Программа МТ переведена в ПГР покомандно с помощью подпрограмм моделирования каждой команды МТ. Таким образом, каждая программа МТ может быть переведена в программу МГР, что доказывает ЯМГР >= ЯМТ и всю теорему эквивалентности МГР и МТ. Следовательно, если любая программа МТ может быть выполнена на МГР, то свойства МГР аналогичны свойствам МТ. Глава 6. Использование МГР и математические машины Проблема физической реализации ВМ любого типа усложнена технологией создания элементной базы, переходом на новые физические основы реализации электронных схем, компоновкой набора элементов в электронные схемы, построением архитектуры ВМ, обеспечение внутренних и внешних параметров производства и эксплуатации ВМ с другими средствами СВТ. Создание предварительных функционирующих моделей и отработка на них как архитектуры, так и начального программного обеспечения является очевидным и дешевым делом. В связи с большим опытом работы в этой области появилось понятие ММ, которому и посвящена глава. ММ важны и сами по себе, поскольку ММ может выступать не только как средство моделирования, но и как окончательный программный продукт. Обсуждение понятия ММ и его применения является важным разделом информатики. С понятием ММ программисты сталкивались еще при появлении первых ВМ. Оно развивалось и находило новые области применения. Описать все области применения понятия ММ не представляется возможным. В главе использованы показательные примеры применения ММ в некоторых областях. По ним можно составить достаточно полное представление о возможностях ММ. 6.1. Концепция математических машин 6.1.1. Введение. За последние 40 лет выработано классическое представление о всех типах и видах ВМ, построенных по крайней мере на базе электроники. Их конструкция имеет стандартный вид (схема фон Неймана): память - процессор устройства обмена. Память хранит данные и программы для преобразования этих данных, а процессор выполняет пакет операций, вызываемых для выполнения из программы, устройства обмена вводят или выводят данные и программы. В самом общем виде процессор выполняет три сорта операций: вычислительные операции преобразования данных, операции управления последовательностью команд и операции обмена по каналам связи. Производство ВМ в форме физической реализации является сложным делом, несмотря на широкое использование больших интегральных схем. Едва ли целесообразно иногда осуществлять физическую реализацию некоторой ВМ. Практика создания ВМ привела к тому, что осуществлена унификация процессоров, памяти и устройств обмена. Стандартная архитектура не всегда удовлетворяет запросам пользователей. Это относится к обработкам данных, которые формализуются нестандартным образом. В таких случаях имеется испытанный путь для реализации ВМ в форме математической модели. Это обеспечивает многие преимущества перед физической реализацией ВМ. Математическую модель ВМ именуются математическими машинами. ММ реализуется программно на инструментальной ВМ. К примеру, определенным сортом ММ является совокупность ВМ и ОС, расширяющая систему команд ВМ. Впервые практическое осмысление ММ было достигнуто в разработках ОС увеличение логических возможностей ВМ, Интеллсист - интерпретатор математических операций логического вывода решения логического уравнения, МГР [Красилов78а] и Р-машины [Вельбицкий80] - интерпретатор операций выполнения программ, работа которых управляется текстом, Утопист [Тыугу84] - машина решения задач по известному шаблону, ММ являются интерпретаторы ФЯ. Любая ОС является ММ расширения системы команд ВМ. Концепция ММ появилась в 30-х годах, когда были изобретены и изучены машины Тьюринга и Поста [Нильсон85], а также нормальные алгоритмы Маркова [Марков84]. Эти понятия необходимы были для установления ряда фундаментальных утверждений о вычислимости, разрешимости некоторых массовых проблем и вычислительной сложности алгоритмов. Свои теоретические функции ММ в то время выполнила. Результаты исследований еще не полностью использованы до настоящего времени. Ими будут пользоваться еще не одно столетие. 6.1.2. Общие характеристики ММ. С появлением ВМ и развитием информатики концепция ММ приобрела новые теоретические черты и практическое значение. Практика применения ВМ для построения и реализации ММ стала повсеместной. Наибольшего расцвета практика реализации ММ достигла при массовом внедрении ППП. Полная формализация ППП достигнута в языке программирования Ада [Язык88]. ППП - это модель процессора, имеющего внутреннюю память для выполнения операций-процедур. Почти каждая программа является ММ при включении в нее процедур или функций. Новыми качествами ММ стали: - гибкость и адаптируемость разработки и применения ММ; программу ММ изменить в развитии легче, чем техническое воплощение ВМ; - возможность построения физической реализаций ММ после апробации их на ВМ; отработка, например, системы команд проектируемой ВМ позволяет автоматизировать процессы физической реализации; - автоматизированная или автоматическая разработка интерпретаторов ВМ и ММ; этап создания ММ связан с построением интерпретаторов ВМ, с помощью которых оценивается пригодность и реализуемость архитектуры ВМ; - формирование языков программирования для ММ; вслед за реализацией ММ можно сформулировать средства программирования на ММ, которые предоставляются пользователям; - применение к семейству ММ операций композиции для построения новых ММ; ММ можно проектировать операционным методом; - построение интерпретаторов операций композиции ММ; к процессам создания новых ММ можно применить тот же подход, что и применяемый при создании исходных ММ (принцип рекурсивного проектирования); - реализация ОС для ММ, которая именуется косвенной ОС; отработка системы команд и основ программного обеспечения также могут создаваться на универсальных ВМ с последующим переносом результатов на физическую реализацию ММ; - реализация в составе ОС виртуальных ММ; этот известный путь также может быть предметом для построения ММ. 6.1.3. Формальное описание ММ. Формальное описание ММ содержит тройку множеств (здесь примем локальные обозначения): ММ = <семейство множеств данных (СМД); семейство операций над данными (СОД); семейство формальных языков (СФЯ)> или с использованием сокращений: ММ = <СМД; СОД; СФЯ>, где СМД - набор типов данных, определяющий предметную область ММ (значения операндов и результатов операций) и представляющий память ММ; СОД - набор операций, определяющий проблемную область ММ и представляющий процессор ММ; СФЯ - набор ФЯ для записи входных данных (ВХД), программ и данных ММ (ЯММ) и выходных данных (ВЫД). ММ являются логический процессор (МЛВ) для реализации логического вывода, языковый процессор (ЯП) для трансляции текстов ФЯ и др. применения. Общее определение ММ позволяет классифицировать их по различным признакам. Чаще всего нас не интересуют наборы СМД и СОД. Поэтому транслятор, написанный на языке Я1, языка Я2 на язык Я3 будем обозначать так: Тр = <; ; Я1, Я2, Я3>. Например, ППП на языке Ада примет вид: ППП = <Ада-данные; Ада-операции; язык Ада>. ММ трансляции. Рассмотрим несколько примеров формирования ММ для системного программирования. Пусть ТЯi - текст языка Яi, тогда применение транслятора (Тр) можно записать так (две первые позиции формального определения ММ будем опускать, соответствующие нуль-семейства будем обозначать - Н): <Н; Н; Я1, Я2, Я3>(ТЯ2) = ТЯ3 или <Я1, Я2, Я3>(ТЯ2) = ТЯ3. Для построения новых ММ определим для троек-трансляторов операцию Г применение одного транслятора к программе, вообще говоря, другого транслятора. Операция Г задается соотношением: <Я1, Я2, Я3>(<Я2, Я4, Я5>) = <Я3, Я4, Я5>, или <Я1, Я2, Я3> Г <Я2, Я4, Я5> = <Я3, Я4, Я5>. Операция Г - не коммутативна, не ассоциативна, имеет левый обратный элемент и левый нейтральный элемент (неравенство обозначается знаками =/=): <Я1, Я3, Я2> Г <Я3, Я4, Я5>=/= <Я3, Я4, Я5> Г <Я1, Я3, Я2>, (<Я1, Я2, Я3> Г <Я2, Я4, Я5>) Г <Я3, Я6, Я7> =/= <Я1, Я2, Я3> Г (<Я2, Я4, Я5> Г <Я3, Я6, Я7>). <Я2, Я4, Я5> = <Я1, Я3, Я2> Г <Я3, Я4, Я5>, <Я1, Я1, Я1> Г <Я1, Я2, Я3> = <Я1, Я2, Я3>. Левый нейтральный элемент используется для записи программ оптимизации. Нейтральный элемент можно получить в результате применения ММ: <Я3, Я2, Я1> Г <Я2, Я1, Я1> = <Я1, Я1, Я1>. 6.1.4. Примеры проектирования ММ. Теперь рассмотрим два реальных примера проектирования трансляторов на ВМ БЭСМ-6 [Красилов67]. На БЭСМ-6 имеются трансляторы языка Фортран [Красилов72] в коды БЭСМ-6: <БЭСМ6, Фортран, БЭСМ6>. Требуется построить аналогичный транслятор для встроенной ВМ (ВВМ) языка Фортран в коды ВВМ на основе транслятора: <Фортран, Фортран, ВВМ> и осуществить перенос системы на ВВМ. Решение этой задачи системного программирования определяется равенствами: <БЭСМ6, Фортран, БЭСМ6> Г <Фортран, Фортран, ВВМ> = <БЭСМ6, Фортран, ВВМ>, <БЭСМ6, Фортран, ВВМ> Г <Фортран, Фортран, ВВМ> = <ВВМ, Фортран, ВВМ>. Рабочие (функциональные) программы ВВМ вида <Фортран, ИД, РЕЗ> перерабатывают исходные данные ИД в результаты РЕЗ и будут создаваться системой программирования, работающей по равенствам: <ВВМ, Фортран, ВВМ> Г <Фортран, ИД, РЕЗ> = <ВВМ, ИД, РЕЗ>. Второй пример ориентирован на использование ассемблера ВВМ (АК) для решения той же самой конечной задачи - проектирование системы программирования. Вторая задача кажется несколько сложнее, но об этом можно судить по следующим равенствам для первого этапа: <БЭСМ6, Фортран, БЭСМ6> Г <Фортран, Фортран, АК> = <БЭСМ6, Фортран, АК>, <БЭСМ6, Фортран, АК> Г <Фортран, Фортран, АК> = <АК, Фортран, АК>. Второй этап связан с переносом и адаптации системы, с учетом условия, что имеется ассемблер <ВВМ, АК, ВВМ>, выражается равенством: <ВВМ, АК, ВВМ> Г <АК, Фортран, АК> = <ВВМ, Фортран, АК>. Рабочие (функциональные) программы получаются в результате трансляции в соответствии с равенствами: <ВВМ, Фортран, АК> Г <Фортран, ИД, РЕЗ> = <АК, ИД, РЕЗ>, <ВВМ, АК, ВВМ>Г <АК, ИД, РЕЗ> = <ВВМ, ИД, РЕЗ>. Данные выше два примера наглядно показывают некоторые системные операции проектирования программного обеспечения ВВМ с использованием языков высокого уровня для формирования программ ВВМ и для разработки систем программирования ВВМ. Другие применения ММ можно рассмотреть схематически: <СМД; СОД; Н> - ППП или логический процессор; <СМД; Н; СФЯ> - база данных или знаний, которые обслуживаются системами управления; <СМД; Н; Н>- представление предметной области ММ; <Н; СОД; Н>- абстрактная программа на основе алгебры программ; <Н; Н; СФЯ> - трансляторы входного языка на некоторый выходной язык. И еще пример. Совокупность семантических подпрограмм обычно также образует ММ семантики, так как она имеет процессор операций семантического преобразования и память для хранения промежуточных и результирующих сведений. 6.1.5. Операции конструирование ММ. По примеру теории алгоритмов можно рассмотреть операции построения ММ. Ниже указаны смысл таких операций. Композиция ММ. Последняя проблема этого раздела - построение операций композиции ММ. Они необходимы для конструирования больших ММ из набора имеющихся простых ММ. Операция композиции всегда была полезной для ускорения процессов проектирования новых ММ и ВМ. Будем следовать образцам сочетания нормальных алгорифмов [Марков84]. Относительно нормальных алгоритмов доказано чрезвычайно много полезных для практики утверждений, которые могут быть довольно просто перенесены на любые конструкции из ММ. Ниже перечислены основные операции конструирования ММ. 1. Распространение ММ состоит в построении такой ММ, которая выражается тройкой: <Н; Н; Я1, Я22, Я3> из тройки <Н;Н ; Я1, Я21, Я3> при условии, что Я21 <= Я22 (Я21 включено в Я22). 2. Композиция ММ совпадает с операцией Г, которая подробно уже рассмотрена выше. 3. Объединение ММ состоит в построении текста: (<СМД1; СОД1; СФЯ1>, <СМД2; СОД2; СФЯ2>), который образует специальную композицию двух ММ для одновременного применения к некоторому тексту и для одновременного получения двух результатов. 4. Разветвление ММ строится на основе распознающего свойства машины ММ1 текста Т и альтернативного выбора одной из ММ2 и ММ3 по следующей формуле: <СМД2; СОД2; СФЯ2> при <СМД1; СОД1; СФЯ1>(Т) <> Ø, <СМД1; СОД1; СФЯ1> = <СМД3; СОД3; СФЯ3> при <СМД1; СОД1; СФЯ1>(Т) = Ø. 5. ММ повторения строится по аналогии с оператором условного цикла языков программирования с использованием распознающей свойства машины ММ текста Т. Внешне ММ повторения записывается аналогично ММ разветвления. 6. Универсальная ММ предназначена для переработки записи ММ и исходного текста в результат работы этой машины над исходным текстом: <СМД; СОД; СФЯ>(<СМД1; СОД1; СФЯ1>, Т) = <СМД1; СОД1; СФЯ1>(Т). Далее можно рассмотреть построение ММ декомпозиции, которая осуществляет расчленение текстов на составные части, или ММ параллельных вычислений, которая является самой сложной по конструкции. Сложность параллельной ММ связана с синхронизацией и обменами данными между частями ММ. Операция сочетания может быть связана с манипулированием тремя компонентами СМД, СОД и СФЯ. Манипулирование связывается с применением теоретико-множественных операций над такими компонентами. В заключение раздела можно высказать тезис о том, что любая ММ может быть построена из имеющихся простых ММ. Такой тезис трудно доказать и также трудно опровергнуть. Он подтверждается большой практикой создания систем программирования. В частности, тезис подтверждается разработкой серии МГР, которая представляет частный случай ММ, предназначенных для распознавания свойств текстов (и для реализации систем программирования). 6.2. Математическая машина диалога В основе безбумажной технологии [Глушков82] решения самых разнообразных задач на ВМ используются многие средства: телевизионные дисплеи, алфавитноцифровая клавиатура, микрофонно-телефонные устройства, сенсорные датчики и устройства. Общение человека с ВМ на основе подобных устройств осуществляется с помощью ЕЯ или ФЯ различного типа. Особенностью языков общения является тот факт, что по своей структуре языки напоминают диалог. Диалоговые языки подразделяются на два основных класса: языки репликового диалога и языки меню, который в другой форме реализует диалог. Языки репликового диалога состоят из текстов человека и сообщений ВМ, тесно взаимосвязанных между собой. Тексты человека набираются с помощью клавиш, кнопок, световым пером или передаются голосом. Они вводятся в память ВМ, обрабатываются некоторой ММ, инициируют работу подпрограмм, а результаты их работы передаются человеку через различные устройства индикации. Человек воспринимает результаты (сообщения) ВМ и передает для ВМ новые тексты. Этот (циклический) процесс происходит до получения окончательного результата решения задачи. Смысл задачи и смысл результата ее решения в данном рассмотрении остаются за пределами обсуждения проблем диалога. Диалог по своей сути связан с использованием относительно нового стиля программирования или информатической деятельности, отличного от стиля создания программ. Здесь главным моментом является недетерминированность процессов. Программирование таких процессов имеет отличия от программирования задач. Диалог с помощью меню строится по принципу «выбери и укажи работу, и ВМ ее выполнит». Совокупность работ также определяет недетерминированную программу. Языки меню рассматривались в гл.3 на примере общения Интеллсист с пользователем. Отличия двух языков диалогового общения очевидны. Они проявятся точнее при рассмотрении в этом разделе языка реплик. Каким языком следует пользоваться определяет сам пользователь, область применения ВМ и совокупность решаемых задач. Главное отличие двух форм общения состоит в том, что язык меню не требует знания некоторого ФЯ. Язык меню требует знания работ или подработ, которые обозначены пиктограммами. При этом хороший язык меню сопровождается справочной системой, которая обеспечит оперативное познание свойств кнопок, пиктограмм, работ и подработ. Оба метода общения так или иначе реализуются с помощью ММ диалога или, конкретно, МГР (или и МГР) для восприятия текстов человека и выработки сообщений для человека. В процессе диалога в текстах человека автоматически могут обнаруживаться ошибки. На время их исправления диалог приостанавливается до получения исправленного текста. Программирование диалога – процесс типа запрос-ответ в системе человек-ВМ, в котором постепенно из ответов ВМ находится решения одной задачи или класса задач. Следует различать внутреннее программирование диалога - построение системной программы реализации диалога - и внешнее программирование диалога - построение взаимодействия пользователя с ВМ для решения задач. Внутреннее программирование требует автоматизации на основе некоторого языка, внешнее программирование направлено на автоматизацию деятельности человека. ММ диалога (ММД) имеет архитектуру, которая соответствует ее системе команд. Формат команд имеет следующий вид: [метка :] имя операции, операнд1, операнд2 / имя семантической подпрограммы; Имя семантической подпрограммы может опускаться также, как и имя метки. Среди команд можно помещать комментарий (как во всех языках программирования). Система команд ММД состоит из четырех групп команд: обмен текстами, подготовка текста-сообщения ММД, условный переход и организация потока управления в ММД-программе. Совсем кратко поясним каждую группу. Среди величин, используемых в программе могут использоваться целые, текстовые и регистровые величины. Имеется три команды обмена: ввод текста с указанием терминала, с которого реализуется ввод, вывод сообщения также с указанием терминала и обмен текстами в памяти ММД. Группа команд подготовки сообщения включает традиционные команды формирования текстов (арифметические операции, операции отношения для чисел и текстов, преобразования чисел и текстов и др.). Команды условного и безусловного переходов организуют циклическое выполнение других операций в зависимости от условий. Причем в качестве условия может быть результат вычисления логического значения S in Я, реализуемого в МГР. Команды организации программы предназначены для указания обращения к подпрограммам, возврата, цикла и останова работы ММД-программы. Имеется ряд преимуществ как системы команд, так и процедуры применения ММД. Все они сводятся к автоматизации программирования диалога, к быстрому обнаружению и исправлению ошибок в программах диалога и простоты сопровождения ММД-программ. Однако они имеют все те недостатки, которые имеет процедурное программирование. Применение Интеллсист для задач диалога базируется на использовании БЗ «Интерфейс». В заключении заметим, что в результате работ с реализацией ММД появился язык Пьеса [Красилов86а]. Тексты на этом языке действительно напоминают сценарий, который является скорее техническим нежели художественным. Все диалоги в системе человек-ВМ состоят из реплик с вызовом некоторых действий. Техническая ориентация определена тем обстоятельством, что реплики могут циклически повторяться, если того требует решаемая задача. Они также могут включать цепочки операторов для выполнения преобразований над данными или сообщениями. Последовательность реплик образует акт. Описание сценария начинается с перечисления действующих лиц. Кроме этого в сценарии могут задаваться языки, на которых реализуется какая-то часть диалога. Наконец, в сценарии могут объявляться обработчики исключительных ситуаций. ММД и ее система команд, а также язык Пьеса предполагают определенный стиль недетерминированного программирования, существенно отличный от стиля процедурного программирования. В информатике весьма слабо исследована недетерминированность и ее применение. Имеются лишь некоторые теоремы, устанавливающие соотношение между двумя методами: детерминированностью и недетерминированностью в программировании. Здесь осталось проблем больше, чем готовых решений. 6.3. Математическая машина экрана (заметка) Техника программирования экрана в Интеллсист связана с БЗ «Интерфейс», которая представляет систему команд ММД. Здесь кратко рассмотрим применение концепции ММ для решения этой задачи. Дисплей сегодня является одним из главных средств безбумажной технологии в системе человек-ВМ. Организация и планирование окон на экране приобрели особое место в программировании диалога. Программирование окон экрана важно для моделирования многоэкранного или полиэкранного (вместо многодисплейного) общения с ВМ. Для решения задач программирования экрана можно использовать ММ экрана (ММЭ). Задача включает операции с курсором, формирования окон и подокон, вставкой и выдачей сообщений в окне (отображение сообщений). Команды ММЭ связаны с характеристиками различных геометрических фигур (прямоугольник, овал, ромб и др.), координатами курсора или элемента фигур, обрамлением и цветом фигур, рисунком пиктограмм, указанием перемещений изображаемых элементов экрана и режимами обмена сообщениями, связанными с временными интервалами. Разнообразие информации поставляет определенную сложность системы команд ММЭ, она не приводится здесь в своем первоначальном виде. Достаточно рассмотреть операции TURBO VISION [Керниган85, Фаронов92], чтобы убедиться в технической сложности системы команд ММЭ. Работа ММЭ тесно связана с работой ММД. На первых дисплеях обе машины проектировались и реализовывались автономно. Для ПЭВМ имеются языки Паскаль и Дельфи, которые оснащены средствами эффективного моделирования ММД и ММЭ как автономно, так и в комплексе. Относительно ММЭ ограничимся только высказанными замечаниями. 6.4. Машина грамматического разбора для лексического анализа Практика построения транслирующих систем подсказывает рациональную организацию просмотра и преобразования входных текстов. Весь процесс трансляции разбивается на фазы: лексический анализ, синтаксический анализ, семантические преобразования и генерация выходного кода. Исторически транслирующие системы ориентировались на самые разнообразные организационные структуры [Дейкало84, Ингерман69, Касьянов86, Красилов56а, 706, 73г]. Наиболее эффективной считается указанная выше структура. Для реализации каждой из фаз применяется МГР. Они могут быть различными, поскольку грамматики, используемые на каждой фазе, разнятся сложностью или объемом. Например, транслирующая система в Интеллсист перерабатывает тексты на ЯПП в формальное представление знаний, выполняя фазы лексического анализа, синтаксического анализа, семантического преобразования, логического и алгебраического выводов и генерации выходного кода СП. Логический вывод является методом программирования интеллекта. Итак, Интеллсист реализована по классическим схеме и структуре. Здесь рассмотрим пути реализации фазы лексического анализа. Для программирования лексического анализа достаточно использовать систему команд МГР2. Система команд включает команды: сравнения с символом, перехода на подпрограмму, выхода из подпрограммы (подграфа), безусловного перехода по метке, индикации ошибки, сравнения с кодом (аналог команды сравнения символов), проверки принадлежности символа диапазону символов, классификации символа на букву и цифру, вызова подпрограмм семантического преобразования лексем и останова. Первоначальный вариант транслятора ЯПП реализовывался для лексического анализа с помощью МГР1 с кодовым (цифровым) представлением команд (ПГР состоит из 100 команд) . Система команд использованной МГР1 несколько отличается от описанной в гл.5. Отличия не вносят в толкование МГР ничего нового. Кажущиеся новые команда просто интерпретируются командами МГР2 и расширения (в графическом метаязыке). ПГР оказалась неудобной для изменений и сопровождения. Лексический анализ выделяет все лексемы, включая слова, знаки, строки, числа, комментарии и номера строчек и абзацев. В результате строятся словари из слов, чисел, строк, комментариев, а исходный текст заменяется номерами лексем и номером того словаря, в который помещается лексема. Сборка лексем и замена их кодами реализует первый уровень сжатия знаний и облегчает дальнейший анализ текста. В лексическом анализе обнаруживаются, локализуются и индицируются все ошибки, вызванные нарушением синтаксиса лексем. Процедуры определения ошибок обязательны для программ подобного сорта. ПГР здесь не приводится и не рассматривается. Она имеет достаточно тривиальную структуру и построение. 6.5. Машина грамматического разбора для синтаксического и семантического анализа Синтаксический анализ сжатого после лексического анализа текста связан прежде всего с проверкой грамматической правильности текста, выполнением алгоритмов семантики и формированием лексикона и БЗ. Для программирования синтаксического анализа необходимо использовать систему команд МГР2 (ПГР состоит из 420 команд). Система команд включает команды: классификации символа константы, классификации символа переменной, условного и безусловного перехода по метке, сравнение с кодом (аналог команды сравнения символов), вызова подпрограмм семантического преобразования каждой языковой конструкции (их около 200 подпрограмм), перехода на подпрограмму, выхода из подпрограммы, перехода по номеру сорта константы, индикации ошибки и останова. Здесь также имеются отличия реализованной МГР2 и ее стандартом, представленным в гл.5. Отличия ничего нового не вносят в толкование МГР. Все «нововведения» связаны с заменой часто повторяющихся комбинаций команд одной командой. Если лексемы строятся по простому ГЯ (распознавание символов и простые циклы в графе), то грамматические конструкции строятся по достаточно сложным ГЯ. Более того, при синтаксическом анализе с помощью команд МГР программируются некоторые семантические правила. Синтаксический анализ обязательно сопровождается сложными подпрограммами преобразования всех синтаксических конструкций, прагматическим контролем и формированием элементов БЗ. Он составляет главную часть транслятора ЯПП в лексикон и БЗ. Результатом синтаксического анализа являются терминологический словарь (лексикон), дополнительные словари и элементы БЗ. Здесь реализуется главная часть процесса формализации знаний и контроль за правильностью использования грамматики ЯПП (контекстные условия использования лексем). Значительная сложность этой части транслятора заключена в идентификации терминов, их описаний и использовании. Термины состоят из последовательностей слов, чисел, знаков и строк. Причем некоторые термины могут быть частью других терминов. Например, термин «АА ББ +» является частью термина «АА ББ + ВВ» (сам пользователь может составить или представить пример, близкий к реальным условиям использования ЯПП). Необходимо быть точным в подборе терминов, иначе будут возникать подчас неуловимые ошибки. Элементом БЗ является веточка двоичного дерева, с помощью которого представляются все утверждения. В Интеллсист разнообразие веточек оценивается числом более 150. Если учесть разнообразие каждой веточки, то можно представить сложность формирования элементов БЗ. Семантический анализ кроме идентификации терминов и построения элементов БЗ реализует функции вычисления типа результата каждой операции, интерпретацию операций, операнды которых известны и оптимизацию списка веточек в БЗ. Функция вычисления типа результата усложняется числом типов величин (их 37) и числом операций (их более 110). В связи с этими данными наибольшая таблица соответствия типов операндов двухместной операции и типа результата имеет размер 37*37 = 1369, а число таких таблиц равно около 30. Подпрограммы интерпретации операций по числу совпадает с числом операций (их более 80). Каждая подпрограмма реализует распознавание возможности интерпретации и выполняет (смешанные по [Ершов77]) вычисления результата применения операции. Оптимизация веточек включает операцию сравнения веточек. Если веточки совпадают, то она не помещается в БЗ, что экономит память Интеллсист и сокращает время логического вывода и решает задачу независимости знаний. Совокупность приведенных количественных данных говорит о технической сложности реализации анализа текстов. Синтаксический и семантический анализы реализуют контроль за правильностью анализируемого текста. Здесь использованы алгоритмы идентификации, локализации и попытки исправления ошибок (их около 200) для возможного продолжения процесса трансляции. Вторая и дальнейшие ошибки вероятнее всего будут порожденными, на них не следует обращать серьезного внимания. 6.6. Машины логического и алгебраического выводов Архитектура МЛВ и МАВ точнее всего определяется описанием ИЛ. Именно аксиоматика ИЛ определяет все алгоритмы МЛВ и МАВ, которые имеют довольно сложную наращиваемую конструкцию. Пользователь может задавать операции и правила, которые и доопределяют МЛВ и МАВ. Исходными данными для МЛВ и МАВ являются вся совокупность таблиц и словарей, БЗ (как совокупность веточек) и аксиомы ИЛ. Кратко рассмотрим архитектуру ММ, именуемую МЛВ. МЛВ включает память (25 секторов или массивов), содержимое которой может сохраняться и восстанавливаться по командам пользователя, и процессор применения правил логического или алгебраического выводов. Процессоры МЛВ и МАВ выполняют следующие операции, определяемые их примитивами: 1. читать символ из преобразованного исходного текста, 2. строить веточки деревьев, 3. строить наборы совместных фактов, 4. строить наборы альтернативных фактов, 5. исключать избыточные веточки, 6. формировать деревья, 7. составлять некоторые словари, 8. определять тип операнда, 9. вычислять тип результата, 10. сравнивать веточки, 11. упорядочивать веточки в наборе совместных фактов, 12. сохранять и передавать веточки в память, 13. управлять стеком величин, 14. управлять стеком операций, 15. упорядочивать веточки в БЗ, 16. интерпретировать операции, 17. применять правила логического вывода, 18. оптимизировать число веточек в наборе совместных фактов, 19. оптимизировать число веточек в наборах альтернативных фактов, 20. строить альтернативы предрешений, 21. обнаруживать локальные и глобальные противоречия знаний, 22. определять и идентифицировать ошибки, 23. распределять память МЛВ, 24. вести статистический подсчет некоторых параметров и величин МЛВ. Выбор последовательности операций осуществляется по составу исходного текста (МЛВ - это ММ, управляемая входным текстом). Здесь только кратко указаны имена операций. Каждая операция - это алгоритм преобразования представлений знания и формирования БЗ. МЛВ и МАВ включают память правил вывода (их более 800) и процессор применения правил. Примитивы МАВ те же, что и у МЛВ. В Интеллсист зафиксирован порядок работы машин, который в общих чертах имеет вид: МЛВ – МАВ – МЛВ. 6.7. Машина генерации кода синтезируемой программы Если БЗ не полна или неизвестны исходные данные для поиска значений искомых величин, то по команде пользователя начинает работу ММ генерации кода программы решения задания (ММГ, для Интеллсист она именуется сокращенно как ГП – генератор программ). ММГ также как и все ММ имеет память - это совокупная память Интеллсист и процессор для реализации операций формирования СП. Кратко рассмотрим обобщенные операции ММГ в следующем порядке. Анализ БЗ для определения свойств программы. При этом осуществляется определение понятий и операций, входящих в программу (входят только те операции и величины, которые используются в запросах), анализ программных циклов и зависимости выражений от величин, построение «схемы» программы, упорядочивание формул, если есть необходимость «исправления» последовательностей операций, составляется таблица запроса исходных данных, устраняется избыточность в БЗ (оптимизация), величины классифицируются на неизвестные, заданные, известные по фактам и запросные. Важно определять внутренние противоречия, связанные с бесконечными рекурсиями. Анализ направлен практически на определение программируемых и результирующих выражений. Первые составляют команды СП, вторые – фрагменты итоговой печати. Использование терминологического словаря. Основная работа программиста – составление словаря идентификаторов – выполняется в ГП по таким правилам. По лексикону составляются описания величин на объектном языке. При этом каждый термин заменяется на идентификатор следующего вида ZномертерминаZ, по виду которого пользователем определяется (при необходимости) сам термин. Далее, в ГП составляются таблицы памяти, формируются списки величин для резервирования и освобождения памяти с определением мест таких операций, формируются вспомогательные рабочие величины с идентификаторами zномерпсевдотерминаz. Построение операторов. Записи каждого программируемого выражения соответствует некоторый оператор языка программирования. При этом порождаются рабочие ячейки, выбираются формулы, которые выносятся за пределы цикла, формулы упорядочиваются внутри набора совместных фактов, определяется избыточность, используются стандартные модули. Для каждой альтернативы совместных фактов строится подпрограмма, которая в динамике выполнения программы может обнаружить повторно или новые противоречивые альтернативы, или совместные факты. В процессе построения операторов программируется операторы выделения памяти; присваивания начальных значений. Если перерабатывается запись алгоритма, то некоторые операторы уже известны (переход на метку, оператор процедуры), тогда их построение является формальным. Структуру программы, которая может представлять интерес только для программиста, можно обнаружить из распечатки исходного текста СП, который является выходным для ГП. В качестве иллюстративного примера рассмотрим задание для Интеллсист. раздел понятий: ~X или длина~: вещественный; -- 1 величина в терминологическом словаре ~C~: вещественный; -- 2 величина в терминологическом словаре раздел запроса ~Решение квадратного уравнения~: -- 3 величина в терминологическом словаре найти X или длина такой, что X или длина *X или длина =2*X или длина +C. C > 0. Программа: диалог: введите значение C = program Z3Z; {uses - интерфейс запроса значений} begin {asm} Z4Z := 1; Z5Z := sqrt(1 + Z2Z); Z1Z := Z4Z + Z5Z; {первый вариант} output(«X = ») output(Z1Z); {второй вариант} Z1Z := Z4Z - Z5Z; output(«X = ») output(Z1Z); end. Пример иллюстрирует программируемые части (описания и операторы) и фрагменты итоговой печати в виде операторов output. Иллюстрация отличается от реальных текстов СП, получаемых после работы ГП (или ММГ). Второй пример связан с решением дифференциального уравнения. Пример представлен на английском языке. Section of concepts ~ value of coordinate ~, ~ size of a product ~, ~ size of a product '~: real; ~ step of integration ~: real=0.01; ~ result ~: array[1..100]of real; Section of inquiries ~ The decision of the differential equation ~: value of coordinate:=1;^ size of a product:=1;^ for ~i~: word(i<100;^ size of a product' := size of a product **2-3 * size of a product * value of coordinate +5 * value of coordinate;^ value of coordinate := value of coordinate + step of integration;^ size of a product := size of a product + step of integration * size of a product';^ result[i+1]:= size of a product). end. Конец записи задания. Синтезированная программа. unit MyPrograma; interface function Z0AZ: Boolean; implementation uses Z126SZ, Z178SZ, Z127SZ, Z128SZ, { Standard modules } MyProgramp, MyPrograme, MyProgramc, MyProgramv, MyProgramt; function Z0AZ: Boolean; { The main module addresses to it } label Z133SZ; var Z241Z: Word; begin Z0AZ:=False; Z235Z:=1; Z236Z:=1; Z0WZ:=True; for Z241Z:=0 to 65535 do begin if not (Z241Z < 100) then begin Z0WZ:=False; Break; end; Z237Z:=Z51SZ(Z236Z, 2)-3*Z236Z*Z235Z+5*Z235Z; Z235Z:=Z235Z+Z238Z; Z236Z:=Z236Z+Z238Z*Z237Z; Z239Z[Z241Z+1]:=Z236Z; { The array is described in the module MyProgramv } end; if not Z0WZ then goto Z133SZ; Z0AZ:=True; Z133SZ: end; end. Для встроенной ВМ оператор write(F) использует имя в записи «Х =» значение для определения канала обмена, а значение для передачи его по каналу. Коллизии возникают при проникновении в программу операций, которые не могут интерпретироваться как работа с каналами. Например, Х > 27 не связывается с каналом, но остается в программе. А пример Х принадлежит М может интерпретироваться подпрограммами. Поэтому для встроенных программ подбирается минимально необходимый состав подпрограмм, которые включаются в общую программу для передачи на встроенную ВМ. Два варианта программ создается по желанию пользователя на стационарной ВМ. Первый вариант программы называется отладочным, он предназначен для пробного пуска программы с целью выявления возможных динамических или фундаментальные ошибок в представлении объектов знаний и запроса или в записях самих знаний и запроса. Статическая отладка логики знаний осуществляется в процессе ввода текстов и их трансляции и логического вывода, а использование знаний с конкретными фактами могут привести к ошибкам, порождаемых конкретными значениями понятий. Второй вариант программы называется счетным, он предназначен для реализации вариантов представления исходных данных или встраивания программы в систему управления физическими объектами. Встраиваемая программа в особенности должна подвергаться исследованиям на отладочном варианте программы для моделирования каналов и частот обмена данными программы и элементов физических объектов. В отладочном варианте программы могут использоваться подпрограммы моделирования каналов обмена информацией и физических объектов или их частей, существенно зависящих от поступающей по каналам информации. Создание документа на программу осуществляется по запросу пользователя через меню. Готовая СП выдается в файлы, защищенные от несанкционированного доступа. Для СП используются языки Паскаль и ассемблера, СП сопровождается некоторой справочной информацией, текстами с характеристиками или подсказками о свойствах программы или величин, с таблицей запрашиваемых исходных данных, набор исходных данных может вызываться в двух режимах: разовый и файловый, документ на СП сопровождается также статистикой по программам, данным, памяти, времени выполнения и др. Оптимизация в рабочей программе. Оптимизацией для рабочей программы используются в первую очередь алгоритмы МЛВ. Кроме этого минимизируется число рабочих ячеек, используется форма управления с промежуточной проверкой для уменьшения времени на вычисление условий ветвления, исключаются ложные факты и альтернативы фактов, перестраиваются последовательности операторов и др. Оптимальность СП является не менее важным обстоятельством работы Интеллсист. Использование языка ассемблера также во многом обеспечивает разрешение проблемы оптимальности. Конечно, проблема оптимальности начинает решаться еще на этапах выбора терминов и их описаний. Это главное место разрешения проблемы оптимальности изготовляемой программы. Запись знаний (взаимосвязей понятий) слабо вмешивается в эту проблему, кроме как через МЛВ. Но оптимальное представление операций с выбранными данными способствует оптимизации выходной программы. Поэтому основные части выходной программы должны максимально использовать язык ассемблера. Резервирование и освобождение памяти в рабочей программе. Два модуля подключаются в зависимости от режимов исполнения программы - это резервирование динамических величин и освобождение памяти. Для объектных типов создаются процедуры конструирования и деконструирования сложных полей-объектов. Среди процедур стандартных модулей предусматривается поиск и контроль ошибок в динамике, а также работа по исключительным ситуациям. Технология работы СП. Вызов СП инициализирует вспомогательную работу Интеллсист для выполнения следующих функций: 1. . вход в меню и создание режимов и параметров работы, 2. . трансляция текстовых программ в кодовые или использование кодовой программы, 3. . запуск программы с исходными данными, 4. . ввод данных (таблицы, массивы, файлы) в диалоге с пользователем или из файла, 5. . запрос вариантов запуска (в заданном режиме), 6. . прерывания по месту и времени при переходе к следующему варианту или при обнаружении ошибок, 7. . работа интерфейса с каналами и учет режимов запуска (рандеву задач), 8. . отладка программ в режимах, коррекция БЗ и запросов 9. . исправление обнаруживаемых ошибок, 10. . выполнение технологии выдачи результатов, 11. . вывод результатов на печать или сохранение их в форме альтернатив совместных истинных фактов, 12. . ложные факты выводятся с пометкой «Противоречие» с указанием причины противоречий, 13. . для встраиваемых программ результаты передаются по каналам вместе с сигналами о противоречиях (коды ошибок), 14. . обнаружение ошибок по противоречиям, что может привести к пересмотру задания в рамках Интеллсист. Здесь затронут (правда кратко) весь спектр вопросов автоматического проектирования СП. Этим завершается рассмотрение примеров применения ММ в рамках ИП. Глава 7. Транслятор текстов ЯПП на ФЯ Транслятор текстов ЯПП на ЯЛ производит первичную (лексический анализ) и вторичную обработку текстов (синтаксический, семантический и прагматический анализы). Об этом будет сказано подробнее в т.7. Здесь же дается предварительный анализ Интеллсист в части трансляции текстов, которая касается только средств, введенных в настоящем томе. В главе делается обзор задач и способов их решения о применении конкретной системы трансляции. Материал ждет своей доработки. Для пользователя материал главы не представляет рабочего интереса и он может быть опущен им при чтении. Общее знакомство с ним может оказаться полезным для уточнения свойств Интеллсист и возможностей ее применения. 7.1. Общее понятие о режимах работы Интеллсист Режимы работы Интеллсист задаются при настройке. Ясно, что часто используемые режимы заложены в начальную конфигурацию Интеллсист по умолчанию. Поскольку у пользователей могут возникать много своих требование к Интеллсист (да и к инструментарию), каждая система должна иметь набор режимов, удовлетворяющих возможно большему числу требований и создающих требуемый контекст всем работам. В соответствии с принятой градацией в классификации сведений, относящихся к знаниям, вся совокупность требований пользователя можно классифицировать по семи позициям. Режимы определяются в зависимости от запросов на условия функционирования Интеллсист. К ним относятся такие общие режимы: (1) выбор таблиц символов, (2) языки различного типа и сорта применения, (3) исходные общие понятия о БЗ или запросах, (4) способы создания коллекций исходных фактов, (5) БЗ, готовые запросы, (6) готовые программы и подпрограммы и (7) подходящие и имеющиеся версии и варианты Интеллсист с их режимами работы. Ниже приводятся некоторые первичные сведения о возможностях, заложенных в инструментарий Интеллсист в связи с режимами работы. Выбор таблиц символов и кодировок осуществляется аналогично широко известным системам. Общий принцип о сохранении «привычек» пользователя здесь и по возможности везде реализуется. Выбор языков ЕЯ или ЯПП связан с развитием этих языков в связи с пополнением словарей или появлению новых терминов. Выбор ФЯ представления используемых языков или самих ФЯ и результатов работы Интеллсист связан прежде всего с решаемыми задачами. Они могут быть рекомендованы руководствами или конкретными соображениями относительно форм отчетности. Каждый ЯПП зависит от лексикона - главных элементов этого языка. Поэтому построение лексикона уже является средством выбора ЯПП. Каждый ФЯ зависит от решаемых задач: построение схем программ, пути логического вывода или информационное конструирование систем, а также написания или генерации отчетов о работе СП. Выбор лексикона представляет и самостоятельную проблему, определяемую главным образом областью знаний, в которой применяется Интеллсист. Лексикон зависит от конкретных текстов, представляющих знания. Можно говорить о том, что лексикон формируется произвольно по воле пользователя в особенности тогда, когда оформляется новая область знаний с новыми классами задач. В простейшем случае используется готовая БЗ со встроенным в знания лексиконом. Режим работ Интеллсист или СП определяется назначением исходных данных в запросе или через таблицы и файлы. Автоматическая обработки задач может проектироваться только в том случае, когда составлен запас исходных данных или когда осуществлено разделение труда между пользователем, формирующем задачи, и оператором, набирающим массивы и таблицы исходного материала для обработки. Режимы работ определяются косвенно и выбором БЗ, которая может быть покупной или накопленной в библиотеке. Поскольку технология ИП предусматривает использование программ и подпрограмм, составленных самостоятельно или с помощью программиста, то режимы работ могут зависеть от используемых программ. Они могут диктовать условия на решение задач или создание СП. Выбранная Интеллсист заведомо диктует условия на выбор режимов обработки запросов или сценариев для организации режимов и параметров работы. Если сценарий работ инструментария или Интеллсист разработан, то в нем естественным образом зафиксированы условия и режимы работ. Кроме общих задаваемых режимов имеются динамически назначаемые режимы некоторых работ. Например, пользователь может назначить режимы трансляции текстов знаний или запросов. К режимам трансляции относятся назначения порядка анализа текстов: по строчкам, до курсора, по абзацам и весь текст запроса. Режим анализа текстов позволяет точнее локализовать обнаруживаемые ошибки. От сложности ошибки зависит выбор конкретного режима. Не существует отдельных режимов при использовании анкет или шаблонов. Понятие режима является широким и развивающимся. Эксплуатация Интеллсист может подсказать о введении новых режимов или устранении редко используемых или не удовлетворяющих пользователя. 7.2. Реализация режимов и параметров работ Проектирование инструментария было в частности связано с назначением или выбором режимов и параметров работы Интеллсист. Общее назначение режимов и параметров можно описать следующим перечнем выгод для пользователя: - ускорение работы инструментария, Интеллсист или пользователя, - внедрение оптимизации по времени или месту в любой части работ и подработ, - облегчение процессов выполнения работы со знаниями или запросами, - удовлетворительное или хорошее оформление исходных данных или результатов работы Интеллсист. Возможно, что проблемы оптимизации не так важны: достаточный размер памяти, аналитическое решение ценится значительно выше числового, синтез программ может занимать часы работы ВМ, так как программист потратит на эту же работу дни и месяцы ручного или автоматизированного труда. Выбор и реализация режимов обычно преследует цели создания удобств работы пользователя и направлены на необходимость или избыточность сохранения программ и данных, резервирование памяти, расположение материалов различного назначения, задания размеров или форм объектов, типа интерфейса и управления быстродействием. Проектирование программной системы начинается с описания исходных данных, результатов и самого алгоритма. ИИС предусматривает все шаги проектирования программ так, чтобы обеспечить надежность и точность создания и применения готовых программ. Все заказанные или задаваемые режимы запоминаются и используются по мере необходимости для выполнения соответствующих режимам работ. Здесь нет ничего нового по сравнению с опытом программирования различных ситуаций использования или работы почти любой программы. Интеллсист по существу и в первую очередь есть программа, подчиняющаяся принятым в программировании законам. 7.3. Схемы транслятора ЯПП на язык Лейбниц Каждый ЯПП предназначен для ввода знаний конкретных предметной и проблемной областей знаний в базу. Работа Интеллсист связана с обработкой хорошо структурированных сообщений, построенных по меню ввода текстов описаний и запросов. Поэтому первым шагом ввода знаний должен быть шаг, связанный с полуавтоматической формализацией текстов ЯПП. Средством представления формализаций текстов является ФЯ Лейбниц. Здесь рассматриваются вопросы реализации прямой трансляции, а наращивание системы претрансляторами пока остается без анализа и рассмотрения. Задача создания претрансляторов является задачей программирования. Целесообразны схемы и с посттрансляторами. В нашем случае, выходной информацией являются формулы, представленные на языке Лейбниц. Если перевод формирует формулы, то будем иметь дело с прямой ретрансляцией. Именно такой схемы и будем придерживаться, а применение прямого ретранслятора потребует еще одного просмотра входного текста посттранслятором. Объединение ретранслятора с посттранслятором экономит ресурсы системы. Язык Лейбниц в таком случае будет полностью виртуальным - представлением внутренней кодировки данных и знаний о текстах. Виртуальность языка Лейбниц означает, что его изучать должен только системный программист, создающий инструментарий и программы Интеллсист. Трансляторы строятся по следующей схеме. Их ядро - это МГР, которая работает под управлением программы грамматического разбора (ПГР). Она является результатом ручного кодирования языка Лейбниц или результатом трансляции текстов, представляющих распознающие грамматики. Схема получения ПГР такова: 1. Строится граф языка, представляющий распознающую грамматику. При этом используется графический метаязык [Красилов78а]. 2. Осуществляется ручная кодировка графа языка в форме ассемблера МГР. Система команд МГР включает 12 команд (см. гл.5), поэтому соответствующий ассемблерный язык прост. 3. Ассемблер переводит запись графа языка в коды МГР, которые представляются командами, не согласованными с кодами ВМ. 4. Осуществляется отладка ПГР и передача ее для ИМГР. Результат отладки готовый грамматический анализатор или транслятор, если в ПГР включены семантические подпрограммы. Эта схема может реализовываться самим пользователем Интеллсист, для этого имеются все средства. Кроме ПГР составляются подпрограммы семантического преобразования (ПСП), которые в конечном счете формируют выходной текст трансляции (в нашем случае это конструкции ЯЛ). Совокупность МГР и ПСП составляет транслирующую систему перевода исходных текстов ЯПП в тексты (внутреннего) представления знаний. Опять, подобная процедура относится к средствам инструментария, поэтому транслятор ЯПП можно реализовать с помощью Интеллсист. Все особенности ЯПП были рассмотрены в общих чертах выше. Для построения транслятора, а точнее ПГР и библиотеки семантических подпрограмм, необходим граф ЯПП. Граф языка составить просто по языку Лейбниц с учетом синонимов для обозначения термандов и термаций. Имеется одна особенность для представления операций. В информатике известны три способа представления операций: инфиксное (а + в); префиксное + а, в; постфиксное а, в +. Префиксные и постфиксные используются только для обозначения одноместных операций. Другие варианты представлений используются в языках программирования. Более того, ЯПП не предусматривает описание и использование постфиксных операций. Конкретные алгоритмы перевода текстов в деревья известны. Их рассмотрение здесь считается излишним. Заметим лишь, что алгоритмы перевода содержат операции формирования, сравнения, расшифровки и преобразования. Причем в алгоритмах используются магазинные (или стековые) и древовидные структуры данных. МЛВ и МАВ Интеллсист осуществляют последовательное (или параллельное) преобразование деревьев или поддеревьев. Преобразование дерева связано с расщеплением данного дерева на некоторое количество поддеревьев, слиянием данных деревьев. В связи с этим внутреннее представление формул должно разрешать именно эти проблемы преобразования. И последнее важное для практики замечание. Как быть в том случае, когда необходимо реализовать Интеллсист на другом языке, по структуре совпадающим с русским языком? Для этого необходимо создать БЗ, заполненную синонимами терминов «русский-другой язык». Второй автоматический метод перехода на другой язык состоит в задании словаря терминов и их переводов в форме массива, с которым можно работать автономно. Тогда в программах Интеллсист достаточно использовать ссылки на массив переводов и выборку и поэлементное использование отдельных строк. Начиная со второй версии инструментария такой способ реализован. 7.4. Состав БЗ для сохранения и трансляция текстов Кодовая БЗ сохраняется в двух видах. Первый вид (он является главным для обмена знаниями) включает все необходимое для передачи БЗ из вне, второй вид (он является второстепенным для промежуточного сохранения, учитывая интегральность знания) включает только необходимые коды. Механизм хранения, сохранения или восстановления БЗ имеет соответствующих два режима: основной и рабочий. Состав БЗ способствует пониманию ее сущности, она состоит из следующих частей: 1. Параметры: размеры текущие, максимальные, размеры каждого файла и тип данных в файлах. 2. Список файлов - имена и пути (для настройки). 3. Буфер обмена с меню - стандартный или текущий. 4. Коллекция словаря из слов вместе с древовидным представлением. 5. Коллекция терминов и их характеристики вместе с древовидным представлением. 6. Массив деревьев. 7. Массивы значений и их типов. 8. Массивы строк, значений метапонятий. 9. Массив комментариев. 10. Массив определений терминов. 11. Массив кортежей деревьев. 12. Массив правил и масштабных преобразователей пользователя. 13. База данных пользователя. 14. Массив паспортов для типов данных пользователя. 15. Стандартные словари из слов и терминов. 16. Само внутреннее представление БЗ говорит о структуре памяти Интеллсист и распределения элементов знаний. Вот некоторые соображения общего свойства. Любая программная система обычно связана с табличным представлением данных при условии, что имеется набор однотипных элементарных данных. При построении алгоритмов для Интеллсист используются табличные представления словарей и значений атрибутов. Главными таблицами являются те, которые перечислены выше в виде массивов. Количество таблиц определяется содержанием алгоритмов и методом распределения памяти ВМ под исходные, промежуточные и конечные данные. Среди некоторых атрибутов появляются ссылки из одной таблица на значение в другой таблице. Вторым шагом формирования спецификации программных систем является установление отображений таблиц или произведений таблиц. Отображения предназначены для определения атрибутов-ссылок. Для указанных таблиц имеют смысл однозначные или взаимнооднозначные отображения. Эти факты должны отражаться при кодировании информации о понятиях. Некоторые отображения не имеют такого регулярного использования. К примеру, имя метапонятия должно ссылаться на группу значений, являющихся терминами понятий. Конечно, в процессе построения алгоритмов программных систем может возникнуть необходимость формирования массивов другой природы. К примеру, хранение слов в словаре может использовать алгоритмы графового представления словаря, каждое слово должно ссылаться на текст, предназначенный для пояснения понятия. Следовательно, каждое слово или термин должен иметь ссылку на этот текст, а сами тексты образуют массив-таблицу. Каждый ЯПП предназначен для ввода знаний конкретных предметной и проблемной областей в БЗ. Работа с текстами ЯПП весьма затруднительна из-за слабой форматности записей. Работа ВМ связана с обработкой хорошо структурированных сообщений. Поэтому первым шагом ввода знаний должен быть шаг, связанный с формализацией текстов ЯПП. Средством представления формализаций текстов является ФЯ Лейбниц. Имеется несколько потенциальных схем для технической реализации перевода (трансляции) текстов ЯПП на ФЯ [Красилов75]. Прямая трансляция перерабатывает исходный текст в запись его на ФЯ. Вторая схема предусматривает претранслятор с некоторого подмножества ЯПП (например, связанного с много этажностью представления формул) на ЯПП. Третья схема может еще предусматривать распознаватели самых различных классов. Например, распознаватель многоэтажных текстов-таблиц, распознаватель текстов после чтения сканером, распознаватель речевых сигналов и т.п. Будем рассматривать вопросы реализации прямой трансляции, а наращивание системы претрансляторами пока оставим без рассмотрения. Но, например, транслятор ЯПП --> SQL предназначен для генерации формул. Такие системы тоже целесообразно рассматривать. Целесообразны схемы с посттрансляторами. В нашем случае, выходной информацией трансляции ЯПП --> ФЯ должны быть деревья, представляющие формулы языка Лейбниц. В случае, когда транслятор формирует логические формулы, то будем иметь дело с обратной трансляцией. Будем придерживаться схемы трансляции, при которой результатом трансляции будут деревья, они обеспечивают эффективную работу МЛВ по запросам пользователей. Применение прямого транслятора потребует еще одного просмотра текста посттранслятором для оформления результатов логического вывода или счета. Объединение транслятора с пост транслятором экономит ресурсы системы. Язык Лейбниц в таком случае будет виртуальным - внешним представлением внутренней кодировки данных о текстах. Определенная сложность имеется и в представлении деревьев [Ахо78]. Вопервых, вспомним, что каждый абзац - это законченная мысль, формальное представление которой определяется формулой, а для внутреннего представления деревом. Исходный текст всего знания состоит из сотен абзацев, а, следовательно, число деревьев велико. Поэтому прямое представление всех деревьев в памяти МЛВ недопустимо из-за емкости записей и из-за сложности манипулирования такими объектами. Эта же проблема ставится и перед представлением одного дерева. В таком случае необходимо решать проблему оптимального представления дерева. Во-вторых, всю совокупность деревьев, представляющую емкость знания, также необходимо представить в памяти МЛВ оптимально. Будем ориентироваться на общий случай представления оптимальной совокупности оптимальных деревьев. При тиражировании деревьев тогда будут тиражироваться только ссылки на деревья. Это утверждение верно и для поддеревьев, и для листьев дерева, представленных операндами. Логическая операция отрицания для бинарной логики соединяется с бинарной операцией или с операндом. Четыре типа вершин представляют в конечном счете два сорта вершин: узлы и листья, операции и операнды. (Слово вершина здесь будем опускать). Операция имеет ссылки (по дереву) на операции или операнды. Для унарной операции имеется одна ссылка, для бинарной операции - две ссылки, для функции или многоместной операции - столько ссылок, сколько параметров имеется у функции или операндов операции. Ссылка - это указание относительного адреса соответствующего поддерева в массиве деревьев. Указанное представление обладает одним недостатком. Поскольку каждая вершина не содержит обратной ссылки, то построение строчной записи формулы (при обратной трансляции) потребует многократного просмотра списка деревьев и поддеревьев или стека раскрутки дерева для «выпрямления» их с строку. Строчная запись также необходима для печати результатов преобразования деревьев. Так как печать преобразованных в формулу деревьев производится редко, этот недостаток можно сохранить. Каждое дерево строится после анализа термандов и термаций. Термации имеют приоритеты, с помощью которых и стека раскрутки формируется дерево. С учетом конкретного приоритета термаций и сопоставления его с приоритетом имеющейся в стеке термации принимается решение о построении части дерева или о заполнении стека. Стек операндов заполняется безусловно при каждом анализе терманда в грамматическом разборе. Новые терманды (раньше их именовали рабочими ячейками, хранящими промежуточные результаты вычислений), получающиеся при формировании дерева, также пополняют стек операндов. По исчерпании стеков завершается работа алгоритма построения дерева. МЛВ Интеллсист осуществляет последовательное (или параллельное) преобразование деревьев или поддеревьев. Особый случай может составлять преобразование пропозициональных или высказывательных формул. Преобразование дерева связано с расщеплением данного дерева на некоторое количество поддеревьев, слиянием данных деревьев или с расщеплением данного дерева. В связи с этим внутреннее представление формул должно подчиняться именно этим проблемам преобразования. Из программистской литературы [Джехани88, Бауэр76] известны различные формы представления данных в виде деревьев. Их содержательная функция внутреннее представление формул в бесскобочном виде с учетом приоритета каждой операции. Использование древовидного представления формул значительно эффективнее строчного (или тем более многоэтажного) представления, которое является основным представлением в алгоритмических языках. Работа с формулами (программирование операций над формулами) во время аналитических выкладок с ними складывается из некоторого набора операций. Совокупность операций, реализованная автономно от программ, составляет процессор. В данном случае будем его именовать процессором деревьев, подразумевая при этом, что процессор будет использоваться для преобразования формул при производстве аналитических выкладок в МЛВ. Состав операций процессора деревьев формируется при рассмотрении Интеллсист, поскольку именно в них реализуются наиболее разнообразные операции с формулами. В системах аналитических выкладок по правилам преобразования используется меньший состав операций. Аналитические выкладки не используют алгоритмы унификации, которые являются главными в МЛВ. Процессор деревьев является составной частью МЛВ. Эти обстоятельства и побудили подробное рассмотрение операций над деревьями. Кроме этого, рассмотрение древесных представлений важно в познавательных целях: деревья - это несколько необычная форма данных, она отличается от наиболее распространенных форм представления данных или знаний. Процессор деревьев имеет блоки, реализующие отдельные операции. Здесь рассмотрены только начала создания транслирующих систем, которые так или иначе касаются рассматриваемых алгоритмов. Примерами важных, экономически выгодных и используемых в Интеллсист трансляторов могут быть трансляторы 1. Лексический анализатор: исходный текст перерабатывается в текст-результат на языке лексических элементов - символы (ключевые или зарезервированные слова), ссылки на переменные и константы. 2. Составление словарей: внешнее представление слов, знаков и терминов перерабатывается в деревья слов и терминов. 3. Грамматический анализатор: последовательность лексических элементов перерабатывается в текст-результат на ФЯ SQL для передачи СУБДу. Грамматический анализатор используется для контроля орфографии и грамматики текстов. 4. Генератор вопросов пользователю для уточнения текста запроса. 5. Генератор текстов ошибок для подведения итогов грамматического разбора. 6. Диспетчер мыслишек для постепенного формирования целой мысли. Представление знаний и трансляция текстов связаны так, что одно без другого рассматривать сложно и бесполезно. 7.5. Генератор вопросов Понятие вопроса здесь обобщено в том смысле, что вопрос не всегда требует обязательного ответа. Вопрос может быть проигнорирован. Некоторые вопросы выступают как предупреждения, другие - как напоминание и т.п. Генератор вопросов является программой, в которой предусмотрены стандартные или шаблонные формулировки. Интеллсист задает вопросы при разворачивании меню работ. Ответом на такие вопросы является нажатие на выбранные пользователем реальные или виртуальные кнопки. Например, пользователь определеяет ответ: сохранять или не сохранять файл. Интеллсист задает вопросы каждый раз при обнаружении ошибок. Ответом на такие вопросы является работа пользователя, связанная с исправлением ошибок. Интеллсист задает вопросы по предположениям об ошибках. Интеллсист задает вопросы относительно неопределенных операций. При этом формируется в Интеллсист стандартный вопрос: «Будете ли уточнять операции?». Если ответ пользователя есть «да», то высвечиваются оставшиеся в записях операции, которые не раскрыты в фактах, а также возможно комбинации операций. Операции или комбинации операций в вопросах следует определить аксиоматически или описательно. Затем задаются вопросы относительно неопределенных величин. При этом формируются вопросы: «Будете ли уточнять величины?». Если ответ есть «да», то высвечиваются оставшиеся в записях величины, которые не раскрыты в фактах, а также возможно комбинации величин и операций. Величины или комбинации величин и операций в вопросах следует определить аксиоматически или явно в описаниях. Если ответ пользователя «нет», то Интеллсист формирует либо получающийся результат, либо СП, если генератор программ вновь не задаст вопросы относительно величин и операций. После уточнения операций через дополнительный запрос МЛВ продолжает работу и возможно повторяет свои вопросы или завершает работу при построении всех альтернатив совместных фактов или СП. Имеются другого сорта вопросы, они рождаются в связи с «непониманием» Интеллсист потока операций в выражениях. Вопросы генератора программ о невозможности определить последовательность выполнения операций должны быть определены программно. Вопросы генератора программ относительно величин формирует шаблон для ввода исходных данных, которые сохраняются до запроса следующих новых данных или остаются предыдущие за исключением может быть некоторых, обновляемых для следующего варианта запуска сгенерированной программы. Программа не запускается, если не осуществлен первый запуск. После запуска программы повторяется вопросы относительно исходных данных. При получении от пользователя ответа «нет» Интеллсист прекращает работу с данным запросом. Конечно, совокупность новых фактов не печатается повторно, но запоминается на случай запроса печати результатов. Новые совокупности фактов печатаются после их получения при запуске СП. Пользователь может запросить печать (показ) некоторых вариантов решения задачи либо по номеру варианта, либо по величине или некоторому тексту, который может входить в ответ. Если вариант не обладает свойствами иметь запрашиваемый номер или заданный фрагмент текста, то он не печатается. Эта ситуация общения с Интеллсист можно назвать как вопрос для выбора альтернативы. Кроме уточнения операций и величин Интеллсист может запросить начальные данные для величин, если построена СП. Запрос исходных данных реализуется перед запуском СП. Запрос выполняется самим пользователем. 7.6. Алгоритмы и их запись Интеллсист предусматривает работы, связанные с получением программ или синтезом программ. Здесь ограничимся только отдельными замечаниями. Более подробно проблема синтеза программ обсуждается в реководства программисту по комплексу Интеллсист. Программист может воспользоваться средствами ИП для построения программ. Для этого используются обращения к процедурам, помеченные логические выражения, стандартные процедуры и операция соединения текстов для указания потока управления. Операцией является знак .^ или ;^, соединяющий части алгоритма или программы. Чаще всего программист будет использовать готовые программы, вызов которых реализуется средствами языка Вызов. К стандартным процедурам относится процедура с именем «перейти к», после которого помещается метка некоторого логического выражения. Каждая метка помещается в списке меток в разделе меток в начале записи запроса. Каждая метка помещается еще однажды перед некоторым логическим выражением. Наконец, почти каждая метка используется в качестве параметры процедуры или в стандартной процедуре перехода по метке. Циклы порождаются автоматически при использовании кванторов всеобщности или существования. Ветвления порождаются также автоматически по результатам расстановки логических выражений. В ИИС предусмотрены работы по созданию СП в виде программ, подпрограмм или пакетов программ. Подробно об этом рассказывается в Руководстве программистам по синтезатору программ. 7.7. Диспетчер мыслишек Каждая неопределенность разрешается либо локально, либо глобально по тексту. Сейчас можно только умозрительно понять некоторые основные или вспомогательные алгоритмы восстановления смысла текста. Одно частное рассуждение относительно установления определенности текста приводится ниже. Под мыслишками условно понимается неполное знание. Оно может пополниться или уточниться в контексте или извне. Извне означает, что пользователь добавит некоторые фразы, через которые неопределенность исчезнет. Будем рассматривать случаи определения или доопределения по контексту, то есть последовательность «соседних» терминов должна определить смысл неопределенного или определенного не полностью термина. Здесь рассматривается начальная схема диспетчера (или анализатора) мыслишек. Со временем начальная схема должна развиться так, чтобы максимально моделировать деятельность человека по пониманию текстов с помощью контекста (учет всего текста записи знаний или запросов, поиск в библиотеке или в Интернет). Часть текста (предложение или фраза) называется мыслишкой. Из них состоит вся мысль, если смысл текста можно установить по контексту этой части. Полный текст или его часть (мыслишка) состоят из лексических элементов - чисел, строк, символов, терминов (представляющих понятия), комментариев, прагм и ограничителей. Их синтаксис определяется в ЯЛ. Выделение лексических элементов важно (это видно по грамматикам ЕЯ). Только полная лексема передает мысль или ее часть мыслишку. Система реализует два параллельных просмотра исходного текста. Мыслишка должна быть правильной. При обнаружении ошибок в мыслишках (как в лексических элементах) трансляция данной мыслишки считается не состоявшейся. Если мыслишки в совокупности не определяют мысли, то система делает попытку уточнения некоторых мыслишек, которых недостает для формирования смысла. Для уточнения смысла система формирует вопросы для пользователя и по ответу доформировывает мысль. Сущность анализа мыслишек состоит в том, что исходный текст анализируется до появления какой-либо ошибки. Ошибка запоминается, а вместо ошибочной конструкции подставляется «правильная». Анализ текста продолжается до следующей ошибки. Процесс подстановок псевдотекстов продолжается рекурсивно. Одновременно анализируется контекст, с помощью которого уточняются мыслишки, а «псевдотекст» заменяется на истинный. Если такая процедура не приводит в конечном счете к положительному результату, то ошибка «легализуется» и указывается пользователю. Конечно, пользователю сообщаются все места с псевдотекстами и причины их подстановок. Пользователь сам принимает окончательное решение о правильности анализа текста. Он может отменить подобные сообщения, доверяя Интеллсист и ее анализу текста (это важно при решении задач в реальном времени). Показанная сущность анализа мыслишек остается только идеей, которая вполне заслуживает внимания и требует детальной проработки и реализации. Каждый символ или каждый лексический элемент инициируют несколько мыслишек. Все они поддерживаются диспетчером мыслишек. Каждый языковый элемент ведет или отменяет мыслишки. В итоге работы (по смысловому концу мыслишек) диспетчер формирует в результате следующие ситуации: - каждый лексический элемент может порождать начало новой мыслишки, которая может и не закончиться; осталась одна законченная мыслишка - это благоприятный вариант грамматического анализа; не осталось ни одной законченной мыслишки - это порождает ошибку, которую можно назвать смысловой; осталось две и более мыслишек (неоднозначность толкования запроса), что приводит к ошибкам в запросе, которые интерпретируются отсутствием договоренности пользователя с Интеллсист (можно продолжить рассмотрение текста, но с отрицательным конечным результатом). Структура вопроса по возможности должна требовать от пользователя ответа типа да-нет или передачи транслятору имен некоторых переменных и их значений. Если этого не удается сделать, то ответ пользователя должен отражать отдельную мыслишку или совокупность мыслишек. Анализ дополнительных данных или мыслишек должен производиться аналогично анализу основного текста. Окраска частей фраз, представленного программой грамматического разбора, должна сохраняться до выявления полной мысли. Литература [Абрамов89] Абрамов С.А., Зима Е.В. Начала информатики М., Наука, 1989. - 256 с. [Агафонов82] Агафонов В.Н. Типы и абстракции данных в языках программирования. //В кн.: Данные в языках программирования. - М., Мир, 1982 [Агафонов87] Агафонов В.Н. Спецификация программ: понятийные средства и их организация. Новосибирск, Наука, 1987 [Айзерман90] Айзерман М.А., Алескеров Ф.Т. Выбор вариантов. Основы теории. - М., Наука, 1990, - 237 с. [Айламазян89] Айламазян А.К., Стась Е.В. Информатика и теория развития. - М., Наука, 1989. - 174 с. [Алгоритмы82] Алгоритмы, математическое обеспечение и архитектура многопроцессорных вычислительных систем. М., Наука, 1982. - 336 с. [Алгоритмы90] Алгоритмы и программы решения задач на графах и сетях. - М., Наука, 1990, - 515 с. [Александров78] Александров В.В., Лапин А.Н. К проблеме построения диалоговых систем хранения знаний. //В кн.: Автоматизация исследований и проектирования. - М., 1978 [Александров75] Александров Е.А. Основы теории эвристических решений. - М., Советское радио, 1975, - 254 с. [Алексеев68] Алексеев П.М. Частотный словарь английского подъязыка электроники. //В сб.: Статистика речи. - Л., 1968 [Алексеева84] Алексеева З.Я., Стефанюк В.А. Экспертные системы - состояние и перспективы. //Изв. АН СССР, Техническая кибернетика, 1984, N 5 [Алексеева97] Алексеева Т.Н., Алексеев А.В., Гаврилин А.В., Товбис М.Б., Удалов В.А., Яковлева Т.А. О региональном стандарте по информатике (предложение по разработке и внедрению). - М., Информатика и образование, 1997, N 5, с.810 [Алиев90] Алиев Р.А., Абдикеев Н.М., Шахназаров М.М. Производственные системы с искусственным интеллектом. - М., Радио и связь, 1990, - 264 с. [Алиев91] Алиев А.С., Восков Л.С., Ильин В.Н., Матвеев В.И., Садеков А.С., Сыпчук П.П., Чиннова И.И. Интеллектуальные САПР технологических процессов в радиоэлектронике. - М., Радио и связь, 1991, 262 с. [Альтшуллер73] Альтшуллер Г.С. Алгоритм изобретения. - М., Московский рабочий, 1973. - 296 с. [Альтшуллер79] Альтшуллер Г.С. Творчество как точная наука. Теория решения изобретательских задач. - М., Сов.радио, 1979, - 176с. [Амамия93] Амамия М., Танака Ю. Архитектура ЭВМ и искусственный интеллект. - М., Мир, 1993, - 400 с. [Амосов79] Амосов Н.М. Алгоритмы разума. - Киев, Наукова думка, 1979, -220 с. [Анализ84] Анализ и оптимальный синтез на ЭВМ систем управления. - М., Наука, 1984 [Анисимов83] Анисимов Б.В., Курганов В.Д., Злобин В.К. Распознавание и цифровая обработка изображений. - М., Высшая школа, 1983, - 295 с. [Анохин73] Анохин П.К. Философский смысл проблемы естественного и искусственного интеллекта. - М., Вопросы философии, 1973, N 6 [Антонюк86] Антонюк Б.Д. Экспертные системы в программе стратегической инициативы США. // В кн.: Персональные компьютеры и локальные сети. - Тбилиси, 1986, - с. 9-10. [Апресян74] Апресян Ю.Л. Лексическая семантика. - М., Наука, 1974 [Арбиб68] Арбиб М. Мозг, машина и математика. - М., Наука, 1968, - 224с. [Аристотель] Аристотель. Сочинение. Т.1, - М., Мысль, 1976 [Арсак90] Арсак Ж. Программирование игр и головоломок.- М., Наука,1990, - 224 с. [Атлантис] Документация по СУБД Атлантис. [Ахо78] Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. - М., Мир, 1978. Т.1. Синтаксический анализ. - 614с. Т.2. Компиляция. - 488 с. [Ахо79] Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. - М., Мир, 1979, - 536 с. [Баженов64] Бежанов Л.Б. О некоторых философских аспектах проблемы моделирования мышления кибернетическими устройствами. //В кн.: Кибернетика, мышление, жизнь. - М., 1964 [Базилевич89] Л.А.Базилевич. Автоматизация организационного проектирования. - Л., Машиностроение ЛО, 1989. - 176 с. [Бакланов78] Бакланов В.М., Попов Э.В. "Понимание" фраз ограниченного русского языка. - М., Изв. АН СССР, Техническая кибернетика, 1978, N 4. [Бар88] Бар Р. Язык Ада в проектировании систем. - М., Мир, 1988 [Барздинь82] Барздинь Я.М. Некоторые правила индуктивного вывода и их применения. //В сб. Семиотика и информатика, вып. 19, - М., ВИНИТИ, 1982 [Баронец86] Баронец В.Д. Проектирование лингвистических устройств на основе нечеткой логики. //Автоматика и телемеханика, 1986, N 12 [Баррон74] Баррон Д. Рекурсивные методы в программировании. - М., Мир, 1974, - 80 с. [Батурин] Батурин Ю.М. Проблемы компьютерного права. - М., Юридическая литература, 1991, - 272 с. [Бауэр76] Бауэр Ф.Л., Гооз Г. Информатика. Вводный курс. - М., Мир, 1976 [Бауэр78] Бауэр Ф.Л., Гнац Р., Хилл У. Информатика. Задачи и решения.- М., Мир, 1978, - 355 с. [Бектаев69] Бектаев К.Б., Зубов А.В., Ковалевич Е.Ф., Машкина Л.Е., Нехай .А. К исследованию законов распределения лингвистических единиц. //В сб.: Статистика текстов. .Лингвостатистические исследования. - Минск, 1969 [Бектаев71] Бектаев К.Б., Лукьяненко К.Ф. О законах распределения единиц письменной речи. //В сб.: Статистика речи и автоматический анализ текста. - Л., 1971, 1973, 1974 [Бектаев74] Бектаев К.Б., Пиотровский Р.Г., Шабес В.Я. Тезаурусное распознавание смысла документа в АСУ и АИСП. //В сб.: Лингвистическое обеспечение автоматизированных систем управления и информационно-поисковых систем. - Тюмень, 1974 [Белецкая91] Белецкая Л.В., Липницкий С.Ф., Машковская И.П., Млынчик И.И. Словарь по информатике. - Минск, Университетское, 1991, - 160 с. [Белнап81] Белнап Н., Стил Т. Логика вопросов и ответов.- М., Прогресс,1981.- 287 с. [Белоногов79] Белоногов Г.Г., Новоселов А.П. Автоматизация процессов накопления, поиска и обобщения информации. М., Наука, 1979 [Белый10] Белый А. Мысль и язык (философия языка А.А.Полтебни). //В сб.: Логос. - М., 1910 [Беляев86] Беляев И.П. Структурная модель представления знаний. // В кн.: Психологическое обеспечение АСОУ. - Одесса, 1986. - с. 60-65. [Бенерджи71] Бенерджи Р. Теория решения задач. Подход к созданию искусственного интеллекта. - М., Мир, 1971, - 224 с. [Берг76] Берг А.И.,Бирюков Б.В.,Геллер Е.С.,Поваров Г.И. Управление, информация, интеллект. - М., 1976 [Берж62] Берж К. Теория графов и ее применения. - М., ИЛ, 1962, - 320с. [Берзтисс74] Берзтисс А.Т. Структуры данных. - М., Статистика, 1974, - 408 с. [Бешенков97] Бешенков С.А., Давыдов А.Л., Матвеева Н.В. Гуманитарная информатика в начальном обучении. - М., Информатика и образование, 1997, N 4, с.62-64 [Бидер76] Бидер И.Г., Большаков И.А. Формализация морфологического компонента модели "смысл-текст". 1. Постановка проблемы и основные понятия. - М., Изв. АН СССР, Техническая кибернетика, 1976, N 6 [Библиотека81] Библиотека алгоритмов 151б - 200б. Справочное пособие. Вып.4. - М., Радио и связь, 1981 [Бирюков65] Бирюков Б.В. О взглядах Г.Фреге на роль знаков и исчисления в познании. //В сб.: Логическая структура научного знания. - М., 1965 [Блох87] Блох А.Ш. Граф-схемы и алгоритмы. - Минск, Высшая школа, 1987, 144 с. [Богодист74] Богодист В.И. Измерение смысловой информации лингвистической единицы французского языка. - Л., 1974 [Бойченко85] Бойченко Е.В., Кальфа В., Овчинников В.В. Локальные вычислительные сети. - М., Радио и связь, 1985. - 304 с. [Бонгард67] Бонгард М.М. Проблема узнавания. - М., Наука, 1967, - 320 с. [Бондаренко97] Бондаренко Н.В., Северова Т.С., Соколовский М.В., Толстых Г.Д. О концепции обучения информатике в школе. - М., Информатика и образование, 1997, N 1, с.19-22 [Бордовский91] Бордовский Г.А., Извозчиков В.А., Исаев Ю.В., Морозов В.В. Информатика в понятиях и терминах. Книга для учащихся старших классов средней школы. - М., Просвещение, 1991, - 208с. [Борисов89] Борисов А.Н., Алексеев А.В., Меркурьев Г.В., Слядзь Н.Н., Глушков В.И. Обработка нечеткой информации в системах принятия решений. - М., Радио и связь, 1989. -304с. [Бохуа82] Бохуа Н.К., Геловани В.А., Ковригин О.В., Смольянов Н.Д. Экспертная система диагностики различных форм артериальной гипертензии. - М., Изв. АН СССР, Техническая кибернетика, 1982, N 6 [Боэм85] Боэм Б.У. Инженерное проектирование программного обеспечения. - М., Радио и связь, 1985, - 511 с. [Брандон70] Брандон Д.Х. Организация работы на вычислительном центре. - М., Статистика, 1970, - 296 с. [Братко90] Братко И. Программирование на языке Пролог для искусственного интеллекта. - М., Мир, 1990, - 560 с. [Братчиков75] Братчиков И.Л. Синтаксис языков программирования. - М., Наука, 1975 [Браун77] Браун П. Микропроцессоры и мобильность программного обеспечения. - М., Мир, 1977, - 255 с. [Бриллюэн66] Бриллюэн Л. Научная неопределенность и информация. - М., Мир, - 271 с. [Бритон79] Бритон Д.Б. Новая компьютерная архитектура, основанная на потоке данных. - М., Электроника, 1979, N 9 [Бродская81] Бродская И.М., Камынин С.С. Система машинного видения для анализа сцен. //В кн.: Проблемы машинного видения в робототехнике. ИПМ АН СССР, - М., 1981 [Броуди90] Броуди Л. Начальный курс программирования на языке Форт. - М., Финансы и статистика, 1990, - 352 с. [Брукс79] Брукс Ф.П. мл. Как проектируются и создаются программные комплексы. Мифический человеко-месяц. Очерки по системному программированию. - М., Наука, 1979, - 152 с. [Брусницов79] Брусницов Н.П. Микрокомпьютеры. - М., Наука, 1979 [Брябрин81] Брябрин В.М. Ф-язык - формализм для представления знаний в интеллектуальной системе. //В сб.: Прикладная информатика. Вып. 1, Финансы и статистика, - М., 1981 [Брябрин88] Брябрин В.М. Программное обеспечение персональных ЭВМ. - М., Наука, 1988, - 271 с. [Булос94] Дж.Булос, Р.Джеффри. Вычислимость и логика. - М., Мир, 1994, - 397 с. [Бусленко78] Бусленко Н.П. Моделирование сложных систем. - М.,Наука,1978, 399 с. [Вагин86] Вагин В.Н. Параллельная дедукция на семантических сетях. //Изв. АН СССР, Техническая кибернетика, 1986, N 5 [Вагин87] Вагин В.Н., Захаров В.Н., Розенблюм Л.Я. К логическому выводу на сетях Петри. //Изв.АН СССР, Техническая кибернетика, 1987, N 5 [Ван Дейк78] Ван Дейк Т. Вопросы прагматики текста. //В кн.: Новое в лингвистике. Вып. VIII. Лингвистика текста. - М., 1978 [Василеску90] Василеску Ю. Прикладное программирование на языке Ада. - М., Мир, 1990, - 350 с. [Вегнер83] Вегнер П. Программирование на языке Ада. - М.,Мир,1983,- 240с. [Вейль89] Вейль Герман. Математическое мышление. - М., Наука,1989,- 400с. [Велихов86] Велихов Е.П. Информатика - актуальное направление развития советской науки. //Кибернетика. Становление информатики. - М., Наука, 1986, с.10-21 [Вельбицкий80] Вельбицкий И.В., Ходаковский В.Н., Шолмов Л.И. Технологический комплекс производства программ на машинах ЕС ЭВМ и БЭСМ-6. - М., Статистика, 1980, - 263 с. [Ветров68] Ветров А.А. Семиотика ее основные проблемы. - М., 1968 [Винер66] Винер Н. Творец и робот. Обсуждение некоторых проблем, в которых кибернетика сталкивается с религией. М., Прогресс, 1966 [Винер68] Винер Н. Кибернетика или управление и связь в живом и машине. - М., Советское радио, 1968, - 340 с. [Виноград76] Виноград Т. Программа, понимающая естественный язык. -М., Мир, 1976 [Виноградов86] Виноградов В.И. Информационно-вычислительные системы: Распределенные модульные системы автоматизации. - М., Энергоатомиздат, 1986. - 336 с. [Вирт77а] Вирт Н. Систематическое программирование: Введение. - М., Мир, 1977 [Вирт77б] Вирт Н. Язык программирования Паскаль (Пересмотренное сообщение). //В сб.: Алгоритмы и организация решения экономических задач. вып. 9, - М., Статистика, 1977 [Вирт85] Вирт Н. Алгоритмы + структуры данных = программы. - М., Мир, 1985, - 408 с. [Власов88] Власов В.К., Королев Л.Н., Сотников А.Н. Элементы информатики. - М., Наука, 1988. - 320 с. [Воз84] Воз Л. Решение некоторых открытых проблем с помощью программы для автоматического доказательства теорем. //Кибернетический сборник. Вып.21, - М., Мир, 1984, с.235-263 [Воронов90] Воронов Ю.П. Компьютеризация: Шаг в будущее. - Новосибирск: Наука, 1990. - 336 с. [Восилюс80] Восилюс С.К., Мачераускас В.Ю. Фреймовое представление знаний в системах управления качеством. //В кн.: Представление знаний в системах искусственного интеллекта. - М., 1980 [Вудс76] Вудс В.А. Сетевые грамматики для анализа естественного языка. Кибернетический сборник, вып. 13, - М., Мир, 1976 [Вулф87] Вулф А. Модули на базе однокристального Лисп-процессора для ЭВМ военного назначения. //Электроника, 1987, т.60, N 5, с.27-31 [Высоцкий70] Высоцкий Г.Я., Рудный Б.Н., Трунин-Донской В.Н., Цемель Г.И. Опыт речевого управления вычислительной машиной. Изв. АН СССР, Техническая кибернетика, 1970, N 2 [Выч67] Вычислительные машины и мышление. - М., Мир, 1967, - 552 с. [Выч78] Вычислительная техника и обработка данных. Терминологический толковый словарь фирмы IBM. - М., Статистика, 1978, - 232 с. [Гаврилова00] Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем (Учебник). Санкт-Петербург, Москва – Харьков – Минск, 2000, - 384 с. [Гавурин63] Гавурин М.К. О ценности информации. Вестник ЛГУ. Сер. математики, механики и астрономии. N 19, вып. 4, 1963 [Гаек84] Гаек П., Гавранек Т. Автоматическое образование гипотез. Математические основы общей теории. - М., Наука, 1984. - 278 с. [Гантер81] Гантер Р. Методы проектирования программного обеспечения. - М., Мир, 1981 [Гетманова95] Гетманова А.Д. Логика. Для педагогических учебных заведений. -М., Новая школа, 1995, - 416 с. [Ги86] Ги К. Введение в локальные вычислительные сети. - М., Радио и связь, 1986. - 176 с. [Гилой81] Гилой В. Интерактивная машинная графика: структуры данных, алгоритмы, языки. - М., Мир, 1981, - 384 с. [Гильберт79] Гильберт Д., Бернайс П. Основания математики. Логические исчисления и формализация арифметики. - М., Наука, 1979, - 558с. [Гильберт82] Гильберт Д., Бернайс П. Основания математики. Теория доказательств. - М., Наука, 1982, - 653 с. [Гинзбург70] Гинзбург С. Математическая теория контекстно-свободных языков. - М., Мир, 1970, - 327 с. [Гласс82] Гласс Р. Руководство по надежному программированию. - М., Финансы и статистика, 1982 [Гласс83] Гласс Р., Нуазо Р. Сопровождение программного обеспечения. - М., Мир, 1983, - 156 с. [Глушков71] Глушков В.М., Гринченко Г.А. АНАЛИТИК. - К., Кибернетика,1971, N 3 [Глушков79] Глушков В.М. Фундаментальные исследования и технология программирования. //В кн.: Технология программирования. - К., ИК АН УССР, 1979 [Глушков82] Глушков В.М. Основы безбумажной информатики. - М., Наука, 1982, - 552 с. [Глушков90] Глушков В.М. Кибернетика, вычислительная техника, информатика. Избранные труды в трех томах. Т.1. Математические вопросы кибернетики. - 264 с. Т.2. ЭВМ - техническая база кибернетики. - 268 с. Т.3. - Киев, Наукова думка, 1990 [Голендер81] Голендер В.Е. Индуктивная логика и методы обнаружения закономерностей. //В кн.: Машинные методы обнаружения закономерностей. - Рига, 1981 [Головкин80] Головкин Б.А. Параллельные вычислительные системы. - М., Наука, 1980. - 520 с. [Горстко88] Горстко А.Б. Кочковая С.В. Азбука программирования. (Информатика для всех). - М., Знание, 1988, - 144 с. [ГОСТ89] ГОСТ 28195-89. Оценка качества программных средств. Общие положения. Государственный комитет СССР по стандартам. - М., Издательство стандартов, 1989, - 38 с. [Грей89] Грей П. Логика, алгебра и базы данных.- М., Машиностроение,1989,- 368 с. [Гренандер83] Гренандер У. Лекции по теории образов. - М., Мир. Т.1.Синтез образов. 1979, - 384 с. Т.2. Анализ образов. 1981, - 446 с. Т.3. Регулярные структуры. 1983, - 345 с. [Грис75] Грис Д. Конструирование компиляторов для цифровых вычислительных машин. - М., Мир, 1975, - 416 с. [Грис84] Грис Д. Наука программирования. - М., Мир, 1984, - 416 с. [Гришин82] Гришин Е.А., Билялитдинов А.Х. Структура языка представления знаний KRL. //Техника средств связи. Сер. АСИ, N 1, 1982 [Громов85] Громов Г.Р. Национальные информационные ресурсы: Проблемы промышленной эксплуатации. - М., Наука, 1985, - 237 с. [Громов87] Громов Г.Р. Игровая компонента персональных ЭВМ: стимулятор творчества, педагогический прием, жанр киноискусства. - М., Микропроцессорные средства и системы, 1987, N 3 [Гросс71] Гросс М., Лантен А. Теория формальных грамматик. - М., Мир, 1971 [Гудман81] Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. - М., Мир, 1981, - 368 с. [Гудстейн70] Гудстейн Р.Л. Рекурсивный математический анализ. - М., Наука, 1970, - 472 с. [Гутер75] Гутер Р.Ц., Полунов Ю.Л. От абака до компьютера. - М., Знание, 1975, - 208 с. [Дал69] Дал У., Мюрхауг Б., Нюгорд К. СИМУЛА 67 - универсальный язык программирования. - М., Мир, 1969 [Дал75] Дал У., Дейкстра Э., Хоор К. Структурное программирование. - М., Мир, 1975, - 248 с. [Дейкало84] Дейкало Г.Ф., Новиков Б.А., Рухлин А.П., Терехов А.Н. Новые средства программирования на ЕС ЭВМ. Транслятор с языка Алгол 68 и диалоговая система JEС. - М., Финансы и статистика, 1984, - 208 с. [Дейкстра78] Дейкстра Э. Дисциплина программирования. - М., Мир, 1978, - 277 с. [Дейт80] Дейт К. Введение в системы базы данных. - М., Наука, 1980 [Дейт88] Дейт К. Руководство по реляционной СУБД DB2. - М.: Финансы и статистика, 1988. - 320 с. [Дембаускас87] Дембаускас А.П. Финансовая информатика. - М., Финансы и статистика, 1987, 207 с. [Деметрович89] Деметрович Я., Кнут Е., Радо П. Автоматизированные методы спецификации. - М., Мир, 1989. - 115 с. [Денинг84] Денинг В., Эссиг Г., Маас С. Диалоговые системы "человек-ЭВМ". Адаптация к требованиям пользователя. М., Мир, 1984 [Джадд75] Джадд Д.Р. Работа с файлами. - М., Мир, 1975 [Джехани88] Джехани Н. Язык Ада. - М., Мир, 1988, - 552 с. [Джордж63] Джордж Ф. Мозг как вычислительная машина. - М., ИИЛ,1963, - 546 с. [Добровольский89] ДобровольскийВ.Ю. Текстовый процессор microsoft WORD (для IBM совместимых персональных компьютеров). Версия 4.0, руководство по эксплуатации. - М., 1989, 122 с. [Доорс90] Доорс Дж., Рейблейн А.Р., Вадера С. ПРОЛОГ - язык программирования будущего. - М., Финансы и статистика, 1990, - 143 с. [Дородницын85] Дородницын А.А. Информатика: Предмет и задачи. Вестник АН СССР, N 2, 1985, с.85-89 [Дрейфус78] Дрейфус Х. Чего не могут вычислительные машины? Критика искусственного разума. - М., Прогресс, 1978 [Дробушевич78] Дробушевич Г.А. Справочник программиста. - Минск, Вышятная школа, 1978, - 192 с. [Дуда76] Дуда Р., Харт П. Распознавание образов и анализ сцен. - М., Мир, 1976 [Дэвис82] Дэвис Д., Барбер Д., Прайс У., Соломонидес С. Вычислительные сети и сетевые протоколы. - М., Мир, 1982. - 562 с. [Дюбуа90] Дюбуа Д., Прад А. Теория возможностей. Приложения к представлению знаний в информатике. - М., Радио и связь, 1990, - 287 с. [Евстигнеев85] Евстигнеев В.А. Применение теории графов в программировании. - М., Мир, 1985 [Ершов72а] Ершов А.П. О человеческих и эстетических факторах в программировании. - К., Кибернетика, N 5, 1972 [Ершов72б] Ершов А.П. Технология разработки систем программирования. //В кн.: Системное и теоретическое программирование. Новосибирск, ВЦ СО АН СССР, 1972 [Ершов77] Ершов А.П. Введение в теоретическое программирование. Беседы о методе. - М., Наука, 1977, - 288 с. [Ершов82] Ершов А.П., Ильин В.П. Пакеты программ как методология решения прикладных проблем. //В сб.: Пакеты прикладных программ; проблемы и перспективы. - М., Наука, 1982 [Ершов83] Ершов А.П. Информатика. Предмет и понятие. //Наука в Сибире. - Новосибирск, 1983, N 32 [Ершов85] Ершов А.П. Человек и машина. - М., Знание, 1985 [Ершов86] Ершов А.П., Монахов В.М. и др. Основы информатики и вычислительной техники. Пробное учебное пособие для средних учебных заведений. В двух частях. - М., Просвещение, 1986 [Ефимов77] Ефимов Е.И., Поспелов Д.А. Семиотические модели в задачах планирования для систем искусственного интеллекта. - М., Изв. АН СССР, Техническая кибернетика, 1977, N 5 [Ефимов82] Ефимов Е.И. Решение интеллектуальных задач. - М., Наука,1982,- 320 с. [Жигарев87] Жигарев А.Н., Макарова Н.В., Путинцева М.А. Основы компьютерной грамоты. - Ленинград, Машиностроение ЛО, 1987, 255 с. [Заде74] Заде Л.А. Основа нового подхода к анализу сложных систем и процессов принятия решений. //В сб.: Математика сегодня. - М., Знание, 1974 [Зайцев85] Зайцев С.С. Транспортировка данных в сетях ЭВМ. - М., Радио и связь, 1985. - 128 с. [Закревский85] Закревский А.Д., Баландин Р.К. Задание - опознать (распознавание образов). - М., Наука, 1985 [Зализняк77] Зализняк А.А. Грамматический словарь русского языка. - М., Русский язык, 1977 [Зарипов83] Зарипов Р.Х. Машинный поиск вариантов при моделировании творческого процесса. - М., Наука, 1983. - 232 с. [Зелковиц82] Зелкович М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения. - М., Мир, 1982, - 368 с. [Зикманн84] Зикманн Й., Сабо П. Универсальная унификация и классификация эквациональных теорий. //Кибернетический сборник, вып.21, - М., 1984 [Зиновьев70] Зиновьев А.А. Комплексная логика. - М., Наука, 1970, 204 с. [Ивашко86] Ивашко В.Г., Финн В.К. Экспертные системы и некоторые проблемы их интеллектуализации. //Семиотика и информатика, вып.27, - М., ВИНИТИ, 1986 [Ивин96] Ивин А.А. Логика. - М., Просвещение, 1996, - 207 с. [Ивлев92] Ивлев Ю.В. Логика. Изд. МГУ, 1992, - 272 с. [Изерман84] Изерман Р. Цифровые системы управления. - М., Мир, 1984 [Ильин91] Ильин В.П. Вычислительная информатика: открытие науки. - Новосибирск, Наука СО, 1991, - 198 с. [Ильинский79] Ильинский Н.И., Кузин Л.Т., Стрижевский В.С. Интеллектуальная система программирования. //В кн.: Вопросы кибернетики, вып. 55, - М., АН СССР, 1979 [Ингерман69] Ингерман П. Синтаксически ориентированный транслятор. - М., Мир, 1969, - 175 с. [Интелл90] Интеллектуализация программных средств. //Сб. ст. Новосибирск, Наука СО ИВЦ, 1990, - 216 с. [Информ75] Информационные системы общего назначения (аналитический обзор систем управления базами данных). М., Статистика, 1975, - 472 с. [Информ90] Информационный бюллетень. Научно-производственное объединение "ЦЕНТРПРОГРАММСИСТЕМ", Государственный испытательный центр программных средств вычислительной техники. Тверь, 1990, - 22 с. [Информатика1] Информатика. Экспресс-информация. - М., ВИНИТИ, с 1979, 48 раз в год. [Информатика2] Информатика. Научно-технический сборник, сер. Кадровое обеспечение. Отдельные выпуски с 1990 г. - М., ГК ВТИ СССР [Информатика3] Информатика и вычислительная техника за рубежом. Информационный сборник статей. По выпускам издается с 1990 г. - М. [Информатика4] Информатика. Серия Автоматизация проектирования. - М., ВИМИ, издается с 1976 сборником статей. [Информатика5] Информатика. Еженедельное приложение к газете «Первое сентября». ОАО.ПО «Пресса-1» - М., с 1995, на 32 с. [Информатика91] Информатика в понятиях м терминах. Книга для учащихся старших классов средней школы. - М., Просвещение, 1991, - 208 с. [Исихара92] Исихара С. Оптические компьютеры. Новый век науки. - М., Наука, 1992, - 96 с. [Искусс88] Искусственный интеллект: Применение в химии. //Сб. ст. - М., Мир, 1988. - 430 с. [Искусс91] Искусственный интеллект: Применение в интегрированных производственных системах. - М., Машиностроение, 1991, 544 с. [Йодан79] Йодан Э. Структурное программирование и конструирование программ. - М., Мир, 1979 [Калиниченко90] Калиниченко Л.А., Рывкин В.М. Машины баз данных и знаний. - М., 1990, - 296 с. [Канторович72] Канторович Л.В., Гостко А.Б. Оптимальное решение в экономике. - М., Наука, 1972 [Карри69] Карри Х.Б. Основание математической логики. - М., Мир, 1069, - 568 с. [Кархо81] Кархо М.И., Калья А.П., Тыугу Э.Х. Инструментальная система программирования ЕС ЭВМ (ПРИЗ). - М., Финансы и статистика, 1981, - 160 с. [Касаткин81] Касаткин Л.М. Активные семантические сети в системах знаний роботов. - Киев, Знание, 1981 [Касьянов86] Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. - Новосибирск, Наука СО, 1986, - 344 с. [Кейслер77] Кейслер Г., Чэн Ч.Ч. Теория моделей. - М., Мир, 1977 [Керниган85] Керниган Б., Плоджер Ф. Инструментальные средства программирования на языке Паскаль, - М., Радио и связь, 1985, 313 с. [Кибернетика79] Кибернетика. Неограниченные возможности и возможные ограничения. Итоги развития. - М., Наука, 1979 [Кибернетика86] Кибернетика. Становление информатики. //Сб. статей. - М., Наука, 1986, - 192 с. [Кинг91] Кинг Д. Создание эффективного программного обеспечения. - М., Мир, 1991, - 288 с. [Кириллов98] Кириллов В.И., Старченко А.А. Логика. Учебник для юридических ВУЗов, - М., Юристъ, 1998, - 255 с. [Кирсанов82] Кирсанов Б.С., Преображенский А.Б. Организация вычислительного процесса на основе системы представления знаний. //В сб.: Прикладные и экспериментальные лингвистические процессоры. Новосибирск, 1982 [Кларк87] Кларк К., Маккейб Ф. Введение в логическое программирование на микро-Прологе. - М., Радио и связь, 1987, 312 с. [Классификация80] Классификация и кластер. - М., Мир, 1980, - 391 с. [Клещев82] Клещев А.С., Черняховский М.Ю. Системы представления проблемно-ориентированных знаний. Изв. АН СССР, Техническая кибернетика, N 5, 1982 [Клини73] Клини С.К. Математическая логика. - М., Мир, 1973. - 480 с. [Клини78] Клини С., Весли Р. Основания интуиционистской математики с точки зрения теории рекурсивных функций. М., Наука, 1978, - 272 с. [Клир90] Клир Дж. Системотология. Автоматизация решения системных задач. - М., Радио и связь, 1990, - 540 с. [Клоксин87] Клоксин У., Меллиш К. Программирование на языке ПРОЛОГ. - М., Мир, 1987, - 336 с. [Кнут76] Кнут Д.Е. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. - М., Мир, 1976, - 736 с. Т.2. Получисленные алгоритмы. - М., Мир, 1977, - 726 с. Т.3. Сортировка и поиск. - М., Мир, 1978, - 846 с. [Ковальски90] Ковальски Р. Логика в решении проблем. - М., Наука, 1990, - 279 с. [Когаловский92] Когаловский М.Р. Технология баз данных на персональных ЭВМ. - М., Финансы и статистика, 1992, - 224 с. [Колин75] Колин А. Введение в операционные системы. - М., Мир, 1975, - 116 с. [Коллинз86] Коллинз Г., Блэй Дж. Структурные методы разработки систем: от стратегического планирования до тестирования. - М., Финансы и статистика, 1986 [Колмогоров65] Колмогоров А.Н. Три подхода к определению понятия "количество информации". //В кн.: Проблемы передачи информации, т.1, вып.1, - М., 1965 [Компьютер86] Компьютерная алгебра. Символьные и алгебраические вычисления. //Сб. статей. - М., Мир, 1986, - 392 с. [Компьютер88] Компьютерные игры. - Л., Лениздат, 1988, - 168 с. [Компьютер90] Компьютеры и познание: очерки по когнитологии. //Сб. статетй. - М., Наука, 1990, - 128 с. [Кондаков71] Кондаков Н.И. Логический словарь. - М., Наука, 1971, - 656с. [Кондратов87] Кондратов А.М. Электронный разум. Очерк исследований по проблеме искусственного интеллекта. - М., Знание, 1987, - 170с. [Кондрашина79] Кондрашина Е.Ю. Элементы семантического представления локативных связей. //В кн.: Новые задачи в информатике. Новосибирск, 1979 [Кондрашина89] Кондрашина Е.Ю., Литвинцева Л.В., Поспелов Д.А. Представление знаний о времени и пространстве в интеллектуальных системах. - М., Наука, 1989, - 328 с. [Конторов93] Конторов Д.С., Конторов М.Д., Слока В.К. Радиоинформатика. - М., Радио и связь, 1993, - 296 с. [Косарев89] Косарев Ю.А. Естественная форма диалога с ЭВМ. - Л., Машиностроение ЛО, 1989. - 144 с. [КотовВЕ84] Котов В.Е. Сети Петри. - М., Наука, 1984. - 160 с. [КотовВЕ91] Котов В.Е., Сабельфельд В.К. Теория схем программ. - М., Наука, 1991, - 248 с. [КотовРГ79] Котов Р.Г., Якушин Б.В. Языки информационных систем. - М., Наука, 1979 [КотовЮВ88] Котов Ю.В. Как рисует машина. - М., Наука, 1988 [Коуги85] Коуги П.М. Архитектура конвейерных ЭВМ. - М., Радио и связь, 1985 [Коутс90] Коутс Р., Влейминк И. Интерфейс "человек-компьютер". - М., Мир, 1990, - 501 с. [Коэн75] Коэн Ф., Милопулос Д., Борджиа А. Некоторые аспекты представления знаний. //Тр. IV МОКИИ, т.2, - М., 1975, т.10. [Крайзель81] Крайзель Г. Исследования по теории доказательств. - М., Мир, 1981 [Крайзмер68] Крайзмер Л.П., Матюхин С.А., Майоркин С.Г. Память кибернетических систем (основы мнемологии). - Л., 1968 [Крамм89] Крамм Р. Системы управления базами данных dBASEII и dBASEIII для персональных компьютеров. М., Финансы и статистика, 1989, - 384 с. [Красилов56а] Красилов А., Наголкин А.Н., Князев Б.А., Толстых Е.Т., Кукин В.И. Метод автоматического программирования на автоматической быстродействую-щей цифровой вычислительной машине. Рукопись МКБ «Стрела», 1956, 51 с. [Красилов56б] Красилов А., Федосеев В., Закамский В., Воронова А., Ганина А., Гусева. Программа для автоматического программирования задач на машине СТ-2 (Программирующая программа № 1). Рукопись МКБ «Стрела», 1956, 64 с. [Красилов59] Козлов С.И., Красилов А.А. Электронные вычислительные машины в подготовке производства. //Производственно технический бюллетень, N 10, 1959, - М., Дом техники, с.62-64 [Красилов67] Красилов А.А. Курс программирования на языке АЛГОЛ. Препринт ЦКБ «Алмаз», 1967, - 119 с. [Красилов68а] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Система автоматизации программирования для вычислительной машины М-222. Алгоритм-1. Препринт ЦКБ «Алмаз», 1968, - 180 с. [Красилов 68б] Богомаз Н.А., Красилов А.А. Система команд вычислительной машины М-220. Препринт ЦКБ "Алмаз", 1968, - 91 с. [Красилов70а] Красилов А.А., Дригваль Г.П. Вопросы автоматизации программирования для ЦИМ. Тр. конф. - Таганрог., 1970 [Красилов706] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Репникова Л.А. Система автоматизации программирования для вычислительной машины М-222. Алгоритм-2. Препринт ЦКБ «Алмаз», 1968, - 116 с. [Красилов70в] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Репникова Л.А. Система автоматизации программирования для вычислительной машины М-222. Алгоритм-3. Препринт ЦКБ «Алмаз», 1968, - 24 с. [Красилов70г] Красилов А.А. ЯМО - язык математического обеспечения. Препринт ЦКБ «Алмаз», - М., 1970, 55 с. [Красилов71а] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Реализация на ЭВМ М-220 языка типа Алгол 60. ЖВМиМФ, т.11, N 4, - М., 1971, с. 1075-1078 [Красилов71б] Красилов А.А., Горельков А.Л., Лейтес В.Л., Жданова Н.Л. Алгоритм синтеза тестовых и диагностических таблиц для комбинационных логических схем. Доклад на XVII научной конференции МФТИ, г. Долгопрудный, 1971 [Красилов72] Красилов А.А., Ксенофонтов Ю.И. Система автоматического программирования. Язык базовый Фортран. Препринт ЦКБ «Алмаз», - М., 1972, 87 с. [Красилов73а] Красилов А.А., Ксенофонтов Ю.И. Библиотека стандартных программ ЭВМ "РИТМ". Препринт ЦКБ "Алмаз", 1973, - 232 с. [Красилов73б] Красилов А.А., Герасимов Ю.А. Автоматизация аналитических выкладок на ЭВМ. Доклад на XIX научной конференции МФТИ, г. Долгопрудный, 1973 [Красилов73г] Красилов А.А. Программирование КС-языков. Доклад на XIX научной конференции МФТИ, г. Долгопрудный, 1973 [Красилов74а] Красилов А.А., Лейтес В.Л., Лоскутов В.Г. Использование свойств языка Алгол-68 в автокоде. //Тр. ХIХ Научн. конф. МФТИ, 1973, Сер. Аэромех. и процессы управления - Долгопрудный, 1974, вып.3, с.143-146 [Красилов74б] Красилов А.А., Лейтес В.Л. Формульный автокод ФРАК26 (руководство пользователю). Препринт ЦКБ "Алмаз", 1974, - 93с. [Красилов74в] Красилов А.А. Программирование КС-языка. //Тр. ХIХ Научн. конф. МФТИ, 1973, Сер. Аэромех. и процессы упр. - Долгопрудный, вып.3, 1974, с.135-142 [Красилов74г] Красилов А.А., Петрушкин П.Н. Конструктор программ грамматического разбора. Доклад на XX научной конференции МФТИ, г. Долгопрудный, 1974 [Красилов75а] Красилов А.А. Программирование формальных языков. Препринт ЦКБ "Алмаз", 1975, - 242 с. [Красилов75б] Красилов А.А. Основные результаты и направления в студенческих работах по системному программированию. Доклад на XXI научной конференции МФТИ, г. Долгопрудный, 1975 [Красилов75в] Красилов А.А. Применение машины грамматического разбора в программировании алгоритмов АСУ. Тезисы докл. и сообщ. Семинара «Программное обеспечение задач АСУ и ЭВМ», - М., 1975, с. 14-15 [Красилов75г] Красилов А.А. Библиотека стандартных программ ЭВМ «Ритм» Препринт ЦКБ "Алмаз", 1975, - 232 с. [Красилов77] Красилов А.А. О программировании классов задач. Доклад на XXIII научной конференции МФТИ, г. Долгопрудный, 1977 [Красилов78а] Красилов А.А. Система команд машины грамматического разбора. АН СССР, Программирование, - М., 1978, N2 [Красилов78б] Красилов А.А. Формульные автокоды - высокоуровневые машинно-ориентированные языки системного программирования. //В сб. Всесоюзного симпозиума, Новосибирск, 1978 [Красилов78в] Броль В.В., Красилов А.А., Маслов А.Н. Язык программирования Алгол 68. Итоги науки и техники. Теория вероятностей. Математическая статистика. Теоретическая кибернетика. Т.15, ВИНИТИ, - М., 1978, с.165-234 [Красилов79а] Красилов А.А., Ксенофонтов Ю.И. Граф языка Алгол-68. Тр. ЦКБ "Алмаз", 1979, 24 с. [Красилов79б] Красилов А.А., Горельков А.Л., Косырев В.Е. Структура математического обеспечения системы управления металлорежущими станками. Доклад на XXV научной конференции МФТИ, г. Долгопрудный, 1979 [Красилов80] Красилов А.А., Технология программирования. Доклад на XXVI научной конференции МФТИ, г. Долгопрудный, 1980 [Красилов81а] Красилов А.А., Горельков А.Л. и др. Структура операционных систем комплекса ЭВМ для управления станками. - Киев, УСиМ, 1981, N 4, с.134-139 [Красилов81б] Красилов А.А., Горельков А.Л., Львов В.М. Система команд машины диалога. Доклад на XXVII научной конференции МФТИ, г. Долгопрудный, 1981 [Красилов 81в] Горельков А.Л., Красилов А.А. и др. Структура операционных систем комплекса ЭВМ для управления станками. - Киев, УСиМ, 1981, N 4 [Красилов 81г] Красилов А.А., Лейтес В.Л. Языки в технологии разработки управляющих ЭВМ АСУ. Обмен опытом в радиопромышленности, - М., 1981 [Красилов83а] Красилов А.А. Язык программирования Ада - основа новой технологии программирования. //Тр. семинара "Прогрессивная технология программирования", - М., МДНТП, 1983, с.42-44 [Красилов83б] Красилов А.А., Горельков А.Л. МГР-технология разработки транслирующих систем. //В сб.: Прогрессивная технология программирования. - М., МДНТП, 1983, с.89-91 [Красилов83в] Красилов А.А., Горельков А.Л. АЛМАЗ - язык системы управления многооперационными и многокоординатными станками. Часть 1. Пус - язык программ управления станками. Препринт ЦКБ "Алмаз", 1983, 179 с. [Красилов83г] Красилов А.А., Леонова В.П., Пронина М.Ф. Англо-русский терминологический словарь по единой системе ЭВМ. Препринт ЦКБ "Алмаз", 1977 и 1983, - 215 с. [Красилов 83д] Красилов А.А. Единый язык программирования. Доклад на XXIX научной конференции МФТИ, г. Долгопрудный, 1983 [Красилов85а] Красилов А.А., Герасимов Ю.А., Громов А.А., Косырева О.Е., Черных А.П., Шатилова С.С. Программирование преобразований программ в системе аналитических выкладок АНАЛИЗ. // Тр. конф.: Синтез программ. Устинов, 1985 [Красилов85б] Красилов А.А. Слово об информатике. Доклад на XXXI научной конференции МФТИ, г. Долгопрудный, 1985 [Красилов85в] Красилов А.А., Милков В.Е. Расширение языка Ада для системы синтеза программ. Доклад на XXXI научной конференции МФТИ, г. Долгопрудный, 1985 [Красилов86а] Красилов А.А., Горельков А.Л. Стили программирования. М., МФТИ, 1986, - 83 с. [Красилов86б] Красилов А.А., Лейтес В.Л., Фадеева Е.П., Хитров В.А., Чепкасов В.П. Реализация языка Ада на ЭВМ БЭСМ6. Программирование, - М., 1986, N 3, с.60-70 [Красилов86в] Krassilov A.A., Sukhikh A.J., Milkov V.E. Ada language extension - entrance language for program synthesis system. In:EVT, 1986, no.2, pp.78-87. [Красилов87а] Красилов А.А. Язык Ада в основах информатики. // Тезицы докл. Применение и реализация языка программирования Ада. РПИ, - Рига, 1987, с.5 [Красилов87б] Красилов А.А., Сухих А.Ю. Расширение языка Ада - входной язык системы синтеза программ. // Тезисы докл. Применение и реализация языка программирования Ада. РПИ, - Рига, 1987, с65 [Красилов87в] Красилов А.А. Краткий терминологический словарь по информатике (с библиографией). Препринт ЦКБ «Алмаз», 1987, 74 с. [Красилов88а] Красилов А.А. Методы информатики. Препринт ЦКБ "Алмаз", 1988, - 276 с. [Красилов88б] Красилов А.А. Язык программирования Ада в технологии программирования. //В сб.: Программное обеспечение систем автоматизированного проектирования, РПИ, - Рига, 1988, с.23-30 [Красилов88в] Krassilov A.A., Sukhikh A.J., Dialog system of inference theory application in programming. In:EVT, 1988, no.2, pp.3-16. [Красилов 88г] Богородская Н.Е., Красилов А.А. Применение и реализация языка программирования Ада. - Киев, УСиМ, N 1(93), 1988 [Красилов89а] Красилов А.А., Горельков А.Л. Математические машины в диалоговых системах. //Тезисы докл. на конф. "Диалог "человек-ЭВМ". Часть 2. Теоретические методы построения диалоговых систем. Инструментальные системы. Технологические средства диалога и сети ЭВМ. - Свердловск, 1989, с.29 [Красилов89б] Красилов А.А. Интеллектуализация программирования на базе экспертных систем. Доклад на всесоюзной конф: «Теория и практика построения интеллектуальных интегрированных САПР РЭА и БИС», - Звенигород, 5-7 декабря 1989 [Красилов89в] Красилов А.А. и др. (всего 25 авторов) Язык программирования Ада. ГОСТ 27831-88 (ИСО 8652-87) // разработка и редакция, М., Госком СССР по стандартам, 1989, - 264 с. [Красилов90а] Красилов А.А. Инструмент математической экспертной системы. //В сб.: Освоение и концептуальное проектирование интеллектуальных систем. Тезисы докладов и сообщений. - М., 1990, с.10-11 [Красилов90б] Красилов А.А. Математические экспертные системы. //Вторая всесоюзная школа. Автоматизация создания математического обеспечения и архитектуры систем реального времени. Тезисы докладов. - Иркутск, 1990, с.9 [Красилов90в] Красилов А.А. Математический подход к разработке экспертных систем. //Тезисы докл. Всесоюзной школысеминара, - М., МАИ, 1990 [Красилов90г] Красилов А.А. Направления информатизации САПР. //Сб. Технология разработки и САПР программного обеспечения. - Рига, РТУ, 1990, с.5 - 13 [Красилов90д] Красилов А.А. Основы информатики. Определение и концепции. // Учебное пособие, МФТИ, Долгопрудный, 1990, - 80 с. [Красилов90е] Красилов А.А. Инструмент математической экспертной системы. //Сб. тезисов докл. Научной конф. «Освоение и концептуальное проектирование интеллектуальных систем» - М., 1990, с 10-11 [Красилов91а] Красилов А.А., Лейтес В.Л. Риюз - повторное использование программ и язык Ада. - Киев, УСиМ, 1991, N 6, с. 57 - 68 [Красилов91б] Красилов А.А. Обзор направлений в информатике. //Материалы семинара: "Научно-технические средства информатизации, автоматизации и интеллектуализации в народном хозяйстве", 28 - 29 октября 1991, - М., ЦРДЗ, 1991, с. 14 - 23 [Красилов91в] Красилов А.А. Классификация интеллектуальных систем. //Материалы семинара: "Научно-технические средства информатизации, автоматизации и интеллектуализации в народном хозяйстве", 28 - 29 октября 1991, - М., ЦРДЗ, 1991, с. 33 - 43 [Красилов92] Красилов А.А., Лейтес В.Л. Вопросы сертификации баз знаний и интеллектуальных систем. //Тезисы докладов, Всесоюзное совещание-семинар, сентябрь, МИЭМ, - М., 1992, с. 34 [Красилов93] Красилов А.А. Интеллектуальные системы (системы решения проблем). Курс лекций для 5 курса МФТИ ФУПМ, текстовый файл, 1993, 220 с. [Красилов94а] Красилов А.А. Informatical Logic, Logical Equation Decision and Intellectual (Nonproduction) Systems in CAD. EAST-WEST International Conference "Information Technology In Design", Part 1, Moscow, Russia, 5-9 Sept. 1994, pp.196-198 [Красилов94б] Красилов А.А. Информатическая логика, решение логических уравнений и интеллектуальные системы в САПР. Информатика. //В сб: Автоматизация проектирования, вып.2-3, ВНИИМИ, - М., 1994, с.14-26 [Красилов96] Красилов А.А. За горизонтом экспертных систем. Открытые системы, 6, 1996, с 65 - 69 [Красилов97а] Красилов А.А. Интеллектуальное программирование, или Все невозможности возможны. PC WEEK, Russian edition, N 14, 1997, с. 52, Автоматическое построение программ по знаниям. PC WEEK, Russian edition, N 15, 1997, с. 72 [Красилов97б] Красилов А.А. Экология знания и интеллектуальные системы. //Сб: Высокие технологии в промышленности России, -М., Международная академия информатизации, 1997, с. 153-160 [Красилов97в] Красилов А.А. Семантическая грамматика русского языка. //труды конф. Интеллектуальные системы в САПР, ИТК, Минск, 1997, стр. 40-48 [Красилов98] Красилов А.А. Ecology of Knowledge and Intellectual Systems. //XV IFIP World Computer Congress, 31.08-04.09, Vienna-Budapest, 1998 [Красилов99а] Красилов А.А., Григорьев Р.Д. Технология интеллектуального программирования. //Сб. докл.: Высокие технологии в промышленности России, -М., Международная академия информатизации, 1999, с.; и //Инженерный журнал Справочник, N 10 (31), Машиностроение, 1999, с. 34-37. [Красилов99б] Красилов А.А., Григорьев Р.Д. Программный комплекс «INTELLSYST». Основы использования. Руководство пользователя по инструментарию интеллектуального программирования. Система Интеллсист. Препринт корп. «Галактика», 1999, 250 с. [Красилов00а] Красилов А.А. Язык и знание. Семантическая грамматика русского языка. //Научно-техническая информация, серия 2, № 10, ВИНИТИ, 2000, с 21-33. [Красилов00в] Albert A. Krasilov. The 21st Century - Century of Informatics CSIT 2000. p.p. 177-183 [Красилов01а] Красилов А.А. 21 век - век информатики, // в сб.: Высокие технологии в промышленности России, -М., Международная академия информатизации, 2001, с. 199-203 [Красилов01б] Красилов А.А., Григорьев Р.Д. Программный комплекс «INTELLSYST». Основы использования. Руководство пользователя синтезированной программы. Система Интеллсист. Препринт корп. «Галактика», 2001, 150 с. [Красилов02а] Красилов А.А., Григорьев Р.Д. Интеллектуальное программирование, синтез программ и интерфейсы. "Высокие технологии в промышленности России", материалы VIII Международной научно-технической конференции. 11-13 сентября 2002, - М., ОАО ЦНИТИ "ТЕХНОМАШ", с.303-307 [Красилов02б] Krasilov A. A., Grigoriev R.D. Intellectual programming, synthesis of programs and their toolbox. CSIT2002, , 18-20 сент. 2002 [Красилов03а] Красилов А.А., Григорьев Р.Д. Интеллектуальное программирование и автоматический синтез программ. Новосибирск, 9-11 июля 2003, ИСИ СО РАН им. А.П. Ершова (в представлении) [Красилов03б] Красилов А.А., Григорьев Р.Д. Интеллектуальное и автоматическое программирование. Международный форум по информации. - М., ВИНИТИ, том 28, № 2, с. 30-38 [Красилов03в] Красилов А.А Информация, знание и информатика: концептуальные аспекты. Международный форум по информации. - М., ВИНИТИ, том 28, № 4, 2003, с. 10-26 [Красилов04] Красилов А.А Экология информации и знаний. в печати. - М., ВИНИТИ, 2004, 35 с. [Кристиан89] Кристиан К. Руководство по программированию на языке Модула-2. - М., Мир, 1989. - 464 с. [Кристофидес78] Кристофидес Н. Теория графов. Алгоритмический подход. - М., Мир, 1978, - 432 с. [Крон78] Крон Г. Тензорный анализ сетей. - М., Советское радио,1978, - 720с. [Кузнецов80] Кузнецов И.П. Семантические представления М., Наука, 1980. - 295 с. [Кузнецов97] Кузнецов А.А. Базовый курс информатики. - М., Информатика и образование, 1997, N 1, с.12-17 [Кук90] Кук Д., Бейз Г. Компьютерная математика. - М., Наука, 1990, - 384 с. [Кулагина79] Кулагина О.С. Исследования по машинному переводу. - М., Наука, 1979 [Куликовский87] Куликовский Л.Ф., Мотов В.В. Теоретические основы информационных процессов. - М., Высшая школа, 1987, - 248 с. [Курбаков68] Курбаков К.И. Кодирование и поиск информации в автоматическом словаре. - М., 1968 [Кэмпбел-Келли78] Кэмпбел-Келли М. Введение в макросы. - М., Советское радио, 1978, - 152 с. [Лавров82] Лавров С.С. Синтез программ. - К., Кибернетика, 1982, N 6 [Лазарев84] Лазарев В.Г., Пийль Е.И., Турута Е.Н. Построение программируемых логических устройств. М.,Энергоатомиздат,1984,-480 с. [Ларичев89] Ларичев О.И., Мечитов А.И., Мошкович Е.М., Фуремс Е.М. Выявление экспертных знаний. -М.: Наука. 1989. 128с. [Левин91] Левин Р., Дранг Д., Эделсон Б. Практическое введение в технологию искусственного интеллекта и экспертных систем с иллюстрациями на Бейсике. - М., Финансы и статистика, 1991, - 240 с. [Левитин89] Левитин К.Е. Прощание с АЛГОЛом. - М., Знание, 1989, - 224 с. [Ледли61] Ледли Р.С., Ластед Л.Б. Объективные основания диагноза. Роль символической логики, теории вероятностей и теории статистических решений в анализе мышления врача. - М., ИИЛ, Кибернетический сборник, N 2, 1961 [Лейбниц] Лейбниц Г.В. Собрание сочинений. - М., Мысль. Т.1. 1982, - 638с. Т.2. 1983, - 688 с. Т.3. 1984, - 735 с. Т.4. 1989, 556с. [Лейчик77] Лейчик В.М., Смирнов И.П., Суслова И.М. Терминология информатики (теоретические и практические вопросы). Итоги науки и техники, сер. Информатика, т.2, ВИНИТИ, - М., 1977 [Лекции93] Лекции лауреатов премии Тьюринга за первые двадцать лет 1966-1985. - М., Мир, 1993, - 560 с. [Липский88] Липский В. Комбинаторика для программистов. М., Мир,1988, - 216 с. [Лисков89] Лисков Б., Гатэг Дж. Использование абстракций и спецификаций при разработке программ. - М., Мир, 1989. 424 с. [Ловицкий80] Ловицкий В.А. Система, понимающая естественный язык. - Киев, Кибернетика, 1980, N 6 [Логический90] Логический подход к искусственному интеллекту. От классической логики к логическому программированию. - М., Мир, 1990,-531 с. [Логический98] Логический подход к искусственному интеллекту. От модальной логики к логике баз данных. Перевод с франц., - М., Мир, 1998, 496 с. [Логическое88] Логическое программирование. //Сб.: - М., Мир,1988,- 368 с. [Лозовский82] Лозовский В.С. Экстенсиональная база данных на основе семантических сетей. Изв. АН СССР, Техническая кибернетика, 1982, N 2 [Лорьер90] Лорьер Ж.-Л. Системы искусственного интеллекта. - М., Мир, 1990. - 568 с. [Льюис79] Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. - М., Мир, 1979, 656 с. [Любарский90] Любарский Ю.Я. Интеллектуальные информационные системы. - М., Наука, 1990. - 232 с. [Ляпунов63] Ляпунов А.А., Яблонский С.В. Теоретические проблемы кибернетики. //Проблемы кибернетики, 1963, вып.9, с. 5-22 [Майерс80] Майерс Г. Дж. Надежность программного обеспечения. - М., Мир, 1980 [Майерс82] Майерс Г. Искусство тестирования программ. - М., Финансы и статистика, 1982 [Майерс85] Майерс Г. Архитектура современных ЭВМ. В двух томах. - М., Статистика, 1985, 365+310 с. [Макаровский80] Макаровский Б.Н. Информационные системы и структуры данных. - М., Статистика, 1980 [Маккиман80] Маккиман У., Хорнинг Дж., Уортман Д. Генератор компиляторов. - М., Статистика, 1980, - 528 с. [Мальковский80] Мальковский М.Г. Словарь системы. //В кн.: Представление знаний в системах искусственного интеллекта. М., Знание, 1980 [Мальцев86] Мальцев А.И. Алгоритмы и рекурсивные функции. - М., Наука, 1986, - 368 с. [Мальцев90] Мальцев А.И. Алгебраические системы. - М., Наука, 1990, - 392с. [Марков84] Марков А.А., Нагорный Н.М. Теория алгорифмов. - М., Наука, 1984, - 432 с. [Маркус70] Маркус С. Теоретико-множественные модели языков. - М., Наука, 1970, - 332 с. [Мартин75] Мартин Дж. Сети связи и ЭВМ. Ч.1, 1974. Ч.2, - М., Связь, 1975 [Мартин80] Мартин Дж. Организация баз данных в вычислительных системах. - М., Мир, 1980. - 662 с. [Мартин84] Мартин Дж. Планирование развития автоматизированных систем. - М., Финансы и статистика, 1984 [Мартин87] Мартин Дж. Видеотекс и информационное обслуживание общества. - М., Радио и связь, 1987, - 183 с. [Маслов83] Маслов С.Ю. Асимметрия познавательных механизмов и ее следствия. //В кн.: Семиотика и информатика, 1983, т.20 [Маслов86] Маслов С.Ю. Теория дедуктивных систем и ее применения. - М., Радио и связь, 1986, - 134 с. [Матемвыв67] Математическая теория логического вывода. - М., Наука, 1967 [Матеммод89] Математическое моделирование. Методы описания и исследования сложных систем. - М., Наука, 1989, 271 с. [Матемэнц85] Математическая энциклопедия. Т.т.1-5. - М., Советская энциклопедия, 1985 [Машина86] Машинный фонд русского языка: идеи и суждения. - М., Наука, 1986 [Мейер82] Мейер Б., Бодуэн К. Методы программирования. Т.1,2. - М., Мир, 1982, 358+368 с. [Мейер87] Мейер Д. Теория реляционных баз данных. - М., Мир, 1987, - 608с. [Маурер80] Маурер У. Введение в программирование на языке ЛИСП. - М., Мир, 1976, - 104 с. [Минский78] Минский М. Структура для представления знаний. //В кн.: Психология машинного зрения. - М., Мир, 1987 [Минский79] Минский М. Фреймы и представление знаний. - М., Энергия, 1979, - 150 с. [Минскин87] Минскин Е.М. От игры к знаниям. //Пособие для учителя. - М., Просвещение, 1987 [Михайлов68а] Михайлов А.И., Черный А.И., Гиляревский Р.С. Основы информатики. - М., Наука, 1968, - 756 c. [Михайлов80б] Михайлов Б.М. Автоматизация процесса ведения и изготовления документации программного обеспечения в АСУ. - М., Советское радио, 1980 [Моисеев79] Моисеев Н.Н. Математика ставит эксперимент М., Наука,1979,- 223 с. [Моисеев85] Моисеев Н.Н. Информатика: новые пути познания законов природы и общества. //Вестник АН СССР, 1985, N 5, с.128-135 [Молокова85] Молокова О.С. Формирование индивидуального объяснения в экспертных системах. //Изв. АН СССР, Техническая кибернетика,1985, N 5 [Моль75] Моль А., Фукс В., Касслер М. Искусство и ЭВМ. - М., Мир, 1975, - 558 с. [Мульти71] Мультипроцессорные вычислительные системы. - М., Энергия, 1971 [Набебин96] Набебин А.А. Логика и Пролог в дискретной математике. - М., МЭИ, 1996, -452 с. [Налимов74] Налимов В.В. Вероятностные модели языка. - М., Наука, 1974 [Нейлор91] Нейлор К. Как построить свою экспертную систему. - М., Энергоатомиздат, 1991, - 286 с. [Непейвода78] Непейвода Н.Н. Соотношение между правилами естественного вывода и операторами алгоритмических языков высокого уровня. ДАН СССР, т.239, 1978, N 4 [Непейвода79] Непейвода Н.Н. Устойчивая истинность и вычислимость. // Кн: Исследования по теории алгорифмов и математической логике, - М., Наука, 1979, с 78 - 89 [Непейвода81] Непейвода Н.Н., Свириденко Д.И. Программирование с логической точки зрения. Т.1 и 2, Новосибирск, ИМ СО АН СССР, 1981 [Непейвода82] Непейвода Н.Н., Свириденко Д.И. К теории синтеза программ. //В сб.: Математическая логика и теория алгоритмов. М., Наука, 1982 [Нечаев75] Нечаев В.И. Числовые системы. - М., Просвещение, 1975, - 200с. [Нечеткие86] Нечеткие множества и теория возможностей. - М., Советское радио, 1986, - 406 с. [Николов89] Николов Р., Сендова Е. Начала информатики. Язык ЛОГО. - М., Наука, 1989. - 176 с. [Нильсон73а] Нильсон Н.Дж. Искусственный интеллект. Методы поиска решений. - М., Мир, 1973, - 272 с. [Нильсон73б] Нильсон Н.Дж. Методы поиска решений. - М., Мир, 1973 [Нильсон85] Нильсон Н.Дж. Принципы искусственного интеллекта. - М., Радио и связь, 1985. - 280 с. [НовостиИИ] Новости искусственного интеллекта. - М., Российская Ассоциация искусственного интеллекта, с 1991 (4 раза в год). [Ньюмен76] Ньюмен У., Спрулл Р. Основы машинной графики. - М., Мир, 1976, - 573 с. [Обработка89] Обработка нечеткой информации в системах принятия решений. - М., Радио и связь, 1989. - 304 с. [Оракл92] Сервер ORACLE7 Справочное руководство по языку SQL. Автор: Брайн Линдер, учетный номер 778-70-1292, декабрь 1992, - 680 с. [Оре80] Оре О. Теория графов. - М., Наука, 1980, - 336 с. [Осипов90] Осипов Г.С. Инструментарий для экспертных систем. Технология SIMER + MIR. //Программные продукты и системы, 1990, N3, с.23-32 [Осуга89] Осуга С. Обработка знаний. - М., Мир, 1989. - 293 с. [Пайл84] Пайл Я. Ада - язык встроенных систем. - М., Финансы и статистика, 1984, - 238 с. [Пакштас89] Пакштас А. Распределенные программные конфигурации. Анализ и разработка. Вильнюс, Мокслас, 1989. 223 с. [Перегудов87] Перегудов М.А., Халамайзер А.Я. Бок о бок с компьютером. - М., Высшая школа, 1987 [Першиков91] Першиков В.И., Савинков В.М. Толковый словарь по информатике. Более 10000 терминов. - М., Финансы и статистика,1991,- 543 с. [Петров67] Петров Ю.А. Логические проблемы абстракций осуществимости. - М., Наука, 1967 [Пиотровский74] Пиотровский Р.Г. Машинная грамматика для АСУ и АИСП. Тюмень, 1974 [Пиотровский75] Пиотровский Р.Г. Текст, машина, человек. - Л., Наука, 1975, - 328 с. [Питерсон84] Питерсон Дж. Теория сетей Петри и моделирование систем. - М., Мир, 1984. - 264 с. [Поваляев87] Поваляев С.А. Основы информатики. Справочное пособие. - Минск, изд. Университетское, 1987, - 128 с. [Пойа76] Пойа Д. Математическое открытие. Решение задач: основные понятия, изучение и преподавание. - М., Наука, 1976, - 448 с. [Половинкин88] Половинкин А.И. Основы инженерного творчества. - М., Машиностроение, 1988. - 368 с. [ПоповИ81] Попов И.И., Романенко А.Г. Моделирование информационных систем (теория и приложения). ВИНИТИ, Итоги науки и техники, т.5, - М.,1981 [ПоповЭ82] Попов Э.В. Общение с ЭВМ на естественном языке. - М., Наука, 1982. - 360 с. [ПоповЮ83] Попов Ю.П., Самарский А.А. Вычислительный эксперимент. //Новое в жизни, науке, технике. Сер. Мат. кибернетика. - М., Знание, 1983, вып.11, с.64 [ПоспеловА81] Поспелов Д.А. Логико-лингвистические модели в управлении. - М., Энергоиздат, 1981 [ПоспеловГ85] Поспелов Г.С., Поспелов Д.А. Искусственный интеллект: прикладные системы. - М., Знание, 1985. - 48 с. [ПоспеловГ86] Поспелов Г.С. Искусственный интеллект. Новая информационная технология. //Сб: Кибернетика. Становление информатики. -М., Наука, 1986, с.106-120 [Построение87] Построение экспертных систем. - М., Мир, 1987, - 443 с. [Пратт79] Пратт Т. Языки программирования: Разработка и реализация. - М., Мир, 1979. - 574 с. [Предстинт80] Представление знаний в системах искусственного интеллекта. //В сб.: Материалы семинаров, МДНТП, - М., 1980 [Предстсис89] Представление знаний и экспертные системы. //Сб. научных трудов. АН СССР, Ленинградский институт информатики и автоматизации. - Л., 1989. - 194 с. [Приобрзн90] Приобретение знаний. //Под ред. С. Осуги, Ю. Саэки. - М., Мир, 1990. - 304 с. [Проект97] Проект федерального компонента государственного образовательного стандарта начального общего, основного общего и среднего (полного) образования. Образовательная область «Информатика». - М., Информатика и образование, 1997, N 1, с.3-11 [Простое88] Простое и сложное в программировании. - М., Наука, 1988.- 176с. [Психология78] Психология машинного зрения. - М., Мир, 1978 [Райан89] Райан Д. Инженерная графика в САПР. - М., Мир, 1989. - 392с. [Расева72] Расева Е., Сикорский Р. Математика метаматематики. - М., Наука, 1972. - 592 с. [Рафаэл79] Рафаэл Б. Думающий компьютер. - М., Мир, 1979, - 408 с. [Речевая89] Речевая информатика. //Сб. ст. - М., Наука, 1989. - 130 с. [Ржанов83] Ржанов А.В. Требуется уточнить предмет и понятие информатики //Наука в Сибире. 1983, N 35 [Робинсон70] Робинсон Дж. Машинно-ориентированная логика, основанная на принципе резолюции. //Кибернетический сборник. Новая серия.Вып.7, - М., Мир, 1970, с. 194-218 [Роджерс89] Роджерс Д. Алгоритмические основы машинной графики. - М., Мир, 1989. - 512 с. [Розенфельд72] Розенфельд А. Распознавание и обработка изображений. - М., Мир, 1972 [Рот91] Рот М. Интеллектуальный автомат: компьютер в качестве эксперта. - М., Энергоатомиздат, 1991, - 80 с. [Рубашкин89] Рубашкин В.Ш. Представление и анализ смысла в интеллектуальных информационных системах. - М., Наука, 1989. - 192 с. [Рыбина79] Рыбина Г.В., Строганова Н.А. и др. Система представления понятийных знаний с использованием фреймов. //В сб.: Вопросы кибернетики. Интеллектуальные банки данных, - М., 1979 [Сакман73]Сакман Г. Решение задач в системе человек-ЭВМ. -М., Мир, 1973 [Саломаа86] Саломаа А. Жемчужины теории формальных языков. - М., Мир, 1986, 160 с. [Семантика80] Семантика языков программирования. //Сб. статей. - М., Мир, 1980, - 397 с. [Сильдмяэ80] Сильдмяэ И.Я. Значение и смысл. АН СССР, - М., 1980 [Сильдмяэ83] Сильдмяэ И.Я. Действительность - текст-знание. //Уч. записки Тарт. ун-та, вып. 621, Тарту, 1983 [Системное67] Системное программирование. //Сб. статей. - М., Советское радио, 1967 [Система92] Система сертификации ГОСТ. Основные положения. Требования к органу по сертификации и порядок его аккредитации. Правила проведения сертификации продукции (общие требования). Требования к испытательной лаборатории и порядке их аккредитации. Правила ведения Государственного Реестра Системы. Государственный комитет Российской Федерации по стандартизации, метрологии и сертификации при президенте Российской Федерации. - М., 1992, 113 с. [Системы85] Системы автоматизации проектирования. - М., Мир, 1985 [Скороходько68] Скороходько Э.Ф. и др. Информационно-поисковая система БИТ. - Киев, Наукова думка, 1968 [Скороходько74] Скороходько Э.Ф. Семантические связи в лексике и текстах. //В сб.: Вопросы информационной теории и практики. - М., ВИНИТИ, 1974, N 23 [Скэнлон91] Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера. - М., Радио и связь, 1991, - 336 с. [Слейгл73] Слейгл Дж. Искусственный интеллект. Подход на основе эвристического программирования. - М., Мир, 1973, 320 с. [Смальян81] Смальян Р. Теория формальных систем. - М., Наука, 1981, - 208с. [Смирнов72] Смирнов В.А. Формальный вывод и логические исчисления. - М., Наука, 1972, - 272 с. [Советский89] Советский энциклопедический словарь. - М., Советская энциклопедия, 1989, - 1632 с. [Современный81] Современный русский язык. В трех частях. //Учебное пособие. - М., Просвещение, 1981. Часть I. - 192с. Часть II. - 372с. Часть III. - 272с. [Современный86] Современный компьютер. //Сб. научно-популярных статей. - М., Мир, 1986 [Сойер90] Сойер Б., Фостер Д.Л. Программирование экспертных систем на Паскале. - М., Финансы и статистика, 1990, - 192 с. [Соколов89] Соколов Е.Н., Вайткявичюс Г.Г. Нейроинтеллект: от нейрона к нейрокомпьютеру. - М., Наука, 1989. - 238с. [Справочная82] Справочная книга по математической логике. - М., Наука. Ч.1. Теория моделей. 1982, - 392 с. Ч.2. Теория множеств. 1982, - 376 с. Ч.3. Теория рекурсий. 1982,- 360 с. Ч.4. Теория доказательств и конструктивная математика. 1983, - 392 с. [Справочник90] Справочник. Искусственный интеллект. В трех книгах. Кн.1. Системы общения и экспертные системы. 462 с. Кн.2. Модели и методы. Кн.3. Программные и аппаратные средства. - М., Радио и связь, 1990 [Степанов64] Ю.С. О предпосылках лингвистической теории значения. - М., Вопросы языкознания, 1964, N 5 [Степанов71] Степанов Ю.С. Семиотика. - М., Наука, 1971 [Стерлинг90] Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. - М., Мир, 1990, - 235 с. [Стефик85] Стефик М., Эйкинс Я. и др. Организация экспертных систем. //Кибернетический сборник. Вып.22, - М., Мир, 1985, с.170-220 [Тамм77] Тамм Б.Г., Тыугу Э.Х. Пакеты программ. Изв. АН СССР, Техническая кибернетика, 1977, N 5 [Тамм85] Тамм Б.Г., Тыугу Э.Х. Применение знаний в автоматизированных системах проектирования и управления. //В сб.: Прикладная информатика. Вып. 1(8), - М., Финансы и статистика, 1985 [Таунсенд90] Таунсенд К., Фохт Д. Проектирование и программная реализация экспертных систем на персональных ЭВМ. - М., Финансы и статистика, 1990,- 320 с. [Теоринф89] Теория телетрафика в системах информатики. //Сб. научных трудов. - М., Наука, 1989 [Термин75] Терминологический словарь по информатике. МЦНИТИ, 1975 [Термин89] Терминологический словарь по автоматике, информатике и вычислительной технике. //Справочное пособие для СПТУ. - М., Высшая школа, 1989, - 192 с. [Тиори85] Тиори Т., Фрей Дж. Проектирование структур баз данных. - М., Мир, 1985. - 230 с. [Тихонов79] Тихонов А.Н., Арсенин В.Я. Методы решения некорректных задач.-М., Наука, 1979 [Толковый90] Толковый словарь по вычислительным системам. - М., Машиностроение, 1990 [Тоценко90] Тоценко В.Г., Александров А.В., Парамонов Н.Б. Корректность, устойчивость, точность программного обеспечения. - Киев, Наукова думка, 1990, - 199 с. [Требования84] Требования и спецификации в разработке программ. //В сб. статей. - М., Мир, 1984 [Ту78] Ту Дж., Гонсалес Р. Принципы распознавания образов. - М., Мир, 1978,- 413c [Турский81] Турский В. Методология программирования. - М., Мир, 1981, 68 с. [Тыугу77] Тыугу Э.Х. Формирование модели мира в системах искусственного интеллекта. ВИНИТИ, - М., 1977 [Тыугу84] Тыугу Э.Х. Концептуальное программирование. - М., Наука, 1984. - 256 с. [Уемов78] Уемов А.И. Системный подход и общая теория систем. - М., Мысль, 1978 [Уинстон80] Уинстон П. Искусственный интеллект. - М., Мир, 1980 [Уистоков68] У истоков классической науки. //Сб. статей. - М., Наука, 1968 [Ульман90] Ульман Дж. Базы данных на Паскале. - М.: Машиностроение, 1990,- 386c. [Универс68] Универсальный язык программирования ПЛ/1. - М., Мир, 1968,- 352c. [Уоллер81] Уоллер Л. Специальная машина, работающая на языке ЛИСП. Электроника, 1981, т.54, N 17 [Уолш75] Уолш Д.А. Руководство по созданию документации для математического обеспечения. - М., Наука, 1975, - 128 с. [Уотермен89] Уотермен Д. Руководство по экспертным системам. - М., Мир, 1989, - 390 с. [Уэзерелл82] Уэзерелл Ч. Этюды для программистов. - М., Мир, 1982, - 288с. [Файн82] Файн В.С. Новые аспекты машинного понимания сообщений. АН СССР, Техническая кибернетика, 1982, N 5 [Фант64] Фант Г. Акустическая теория речеобразования. - М., Наука, 1964 [Фаронов92] Фаронов В.В. Турбо Паскаль (в 3-х книгах), Кн.1. Основы Турбо Паскаля, 1992, 286 с., Кн.2. Библиотека Turbo Vision, 1993, 429 с. - М., МВТУ-ФЕСТО ДИДАКТИК [Фейс71] Фейс Р. Модальная логика. - М., Наука, 1971, - 520 с. [Феферман71] Феферман С. Числовые системы. Основания алгебры и анализа. - М., Наука, 1971, - 440 с. [Фигурнов90] Фигурнов В.Э. IBM PC для пользователя. - М., Финансы и статистика, 1990, - 239 с. [Фланаган68] Фланаган Дж. Анализ, синтез и восприятие речи. - М., Связь, 1968 [Фокс82] Фокс А., Пратт М. Вычислительная геометрия. Применение в проектировании и на производстве. - М., Мир, 1982, - 304 с. [Фокс85] Фокс Дж. Программное обеспечение и его разработка. - М., Мир, 1985, - 368 с. [Фоли85] Фоли Дж., вэн Дэм А. Основы интерактивной машинной графики. кн.1. - 368 с. кн.2. - 368 с. - М., Мир, 1985 [Фостер74] Фостер Дж. Обработка списков. - М., Мир, 1974, - 72 с. [Фреге77] Фреге Г. Смысл и денотант. //В кн.: Семиотика и информатика. Вып.8, - М., ВИНИТИ, 1977 [Фрейденталь69] Фрейденталь Х. Язык логики. - М., Наука, 1969, - 136 с. [Фридмен86] Фридмен М., Ивенс Л. Проектирование систем с микрокомпьютерами. - М., Мир, 1986, 405 с. [Фу77] Фу К. Структурные модели в распознавании образов. - М., Мир,1977,- 320 с. [Хамбли76] Хамбли Э. Программирование таблиц решений. - М., Мир, 1976, - 86 с. [Хант78] Хант Э. Искусственный интеллект. - М., Мир, 1978, - 560 с. [Хао62] Ван Хао. На пути к механической математике. Кибернетический сборник. Вып.5, - М., ИИЛ, 1962, с. 114-165 [Харари73] Харари Ф. Теория графов. - М., Мир, 1973, - 300 с. [Харкевич60] Харкевич А.А. О ценности информации. Проблемы кибернетики, вып.4, 1960 [Хейес89] Хейес-Рот Ф., Уотерман Д., Ленат Д. Построение экспертных систем. -М., Мир, 1989. -430с. [Хельбиг80] Хельбиг Г. Семантическое представление знаний в вопросно-ответной системе. //В сб.: Представление знаний и моделирование процессов понимания. Новосибирск, 1980 [Хендерсон83] Хендерсон П. Функциональное программирование. - М., Мир, 1983 [Хендрикс89] Хендрикс Д. Компилятор языка Си для микроЭВМ. - М., Радио и связь, 1989. - 240с. [Хоар89] Хоар Ч. Взаимодействующие последовательные процессы. - М., Мир, 1989. - 264 с. [Хоггер88] Хоггер К. Введение в логическое программирование. - М., Мир, 1988, - 348 с. [Холл75] Холл А.Д. Опыт методологии для системотехники. - М., Советское радио, 1975, - 448 с. [Холл78] Холл П. Вычислительные структуры. Введение в нечисловое программирование. - М., Мир, 1978, - 216 с. [Холстед81] Холстед М.Х. Начала науки о программах. - М., Финансы и статистика, 1981, - 128 с. [Хомский61] Хомский Н. Три модели для описания языка. Кибернетический сборник. Вып.2, - М., ИИЛ, 1961 [Хомский62] Хомский Н. О некоторых формальных свойствах грамматик. Кибернетический сборник. Вып.5, - М., ИИЛ, 1962, с. 279-311 [Хомский96] Хомский Н. Язык и проблема знания (5 Лекций в МГУ). Вестник Московского университета, серия 9, Филология, 4, 1995, с. 130-156; 6, 1995, с. 110-134; 2, 1996, с. 103-121; 4, 1996, с. 133-162, 6, 1996, с. 157-185 [Хопгуд72] Хопгуд Ф. Методы компиляции. - М., Мир, 1972, - 160 с. [Хорошевский86] Хорошевский В.Ф. Разработка и реализация экспертных систем - инструментальный подход. // Изв.АН СССР, Техническая кибернетика, 1986, N 5 [Хоффман80а] Хоффман Л.Дж. Современные методы защиты информации. - М., Советское радио, 1980, - 264 с. [Хоффман80б] Хоффман Л.Дж. Структурный подход к программированию. - М., Советское радио, 1980 [Хьюз80] Хьюз ДЖ., Мичтом Дж. Структурный подход к программированию. - М., Мир, 1980, - 280 с. [Хювенен90] Хювенен Э., Сеппянен Й. Мир Лиспа. Т.1.Введение в язык Лисп и функциональное программирование. - 448 с. Т.2. Методы и системы программирования. - 320 с. - М., Мир, 1990 [Цаленко89] Цаленко М.Ш. Моделирование семантики в базах данных. - М., Наука, 1989. - 288 с. [Цикритзис85] Цикритзис Д., Лоховский Ф. Модели данных. - М., Финансы и статистика, 1985. - 343 с. [Цыпкин84] Цыпкин Я.З. Основы информационной теории идентификации. - М., Наука, 1984 [Чень83] Чень Ч., Ли Р. Математическая логика и автоматическое доказательство теорем. - М., Наука, 1983. - 360 с. [Черный76] Черный А.И., Жданова Г.С., Колобродова Е.С., Мышева И.А., Полушкин В.А., Садырева Р.Н. Терминология информатики (библиографический указатель работ). ВИНИТИ, Итоги науки и техники, сер. Информатика, т.5, - М., 1976 [Черч60] Черч А. Введение в математическую логику М., ИИЛ,1960, - 486 с. [Чечкин91] Чечкин А.В. Математическая информатика. - М., Наука, 1991, - 414 с. [Шанин65] Шанин Н.А., Давыдов Г.В., Маслов С.Ю., Минц Г.Е., Оревков В.В., Слисенко А.О. Алгорифм машинного поиска естественного логического вывода в исчислении высказываний. - М.-Л., Наука, 1965, - 40 с. [Шанский81] Шанский Н.М., Иванов В.В. Современный русский язык. - М., Просвещение, Часть I. Введение. Лексика. Фразеология. Фонетика. Графика и Орфография. - 192 с. Часть II. Словообразование. Морфология. - 272 с. Часть III. Синтаксис. Пунктуация. - 272 с. [Шенк80] Шенк Р. Обработка концептуальной информации. - М., Энергия, 1980,-360 с. [Шенфильд75] Шенфильд Дж. Математическая логика. - М., Наука, 1975, - 528 с. [Шишмарев78] Шишмарев А.И., Заморин А.П. Англо - русско - немецко - французский толковый словарь по вычислительной технике и обработке данных, 4132 термина. - М., Русский язык, 1978, - 416 с. [Шоу81] Шоу А. Логическое проектирование операционных систем. - М., Мир, 1981. - 360 с. [Шураков81] Шураков В.В. Надежность программного обеспечения систем обработки данных. - М., Статистика, 1981, - 216 с. [Ыйм78] Ыйм Х., Салувеэр М. Фреймы и понимание языка. //Уч. зап. Тартус. ун-та, N 472, 1978 [Ыйм80] Ыйм Х. Язык, значения, знания. //В кн.: Семантика и представление знаний. Уч.зап. Тартусского ун-та, вып.519, Тарту, 1980 [ЭВМ84] ЭВМ пятого поколения. Концепции, проблемы, перспективы М., Финансы и статистика, 1984, - 110 с. [Эксперт87] Экспертные системы: принципы работы и примеры. - М., Радио и связь, 1987, - 223 с. [Эксперт89] Экспертные системы: состояние и перспективы. //Сб.ст. - М., Наука, 1989. - 152 с. [Эксперт90] Экспертные системы для персональных компьютеров. Методы, средства, реализации. Справочное пособие. Минск, Вышэйшая школа, 1990, - 198 с. [Элти87] Элти Дж., Кумбс М. Экспертные системы: концепции и примеры. - М., Радио и связь, 1987, - 191 с. [Эшби68] Эшби У.Р. Что такое разумная машина? //В сб.: Кибернетика ожидаемая и кибернетика неожиданная. - М., 1968 [Яблонский79] Яблонский С.В. Введение в дискретную математику. - М., Наука, 1979, -384 с. [Яглом73] Яглом А.М., Яглом И.М. Вероятность и информация. - М., Наука, 1973 [Язык88] Язык Пролог в пятом поколении ЭВМ. //Сб. статей. - М., Мир, 1988 [Якубайтис84] Якубайтис Э.А. Информационно-вычислительные сети. - М., Финансы и статистика, 1984. - 232 с. [Янов58] Янов Ю.И. О логических схемах алгоритмов. //Проблемы кибернетики. Вып.1, - М., Физматгиз, 1958 [Яхно80] Яхно Т.М. Описание системы, выполняющей аналитические преобразования математических выражений. Новосибирск, 1980 [Gartner99] Gartner Group: Knowledge Management Scenario: Trends and Directions for 1998-2003, 1999