Metalinguistic Programming

Metalinguistic Programming
(Система Металингвистического Программирования)

Введение

Впервые термин "Металингвистическое программирование" был введён, по-видимому, в монографии "Конструктивные и развивающиеся формальные системы", первая публикация которой относится к 1983 году. Возможно, автор упоминал этот термин и в более ранних своих публикациях при описании "замысла" системы. По крайней мере, ссылки на этот термин, упоминавшийся автором упомянутой монографии, в обзорах Института Прикладной Математики АН СССР в период 1974-1985 годах. В этой же монографии были рассмотрены основные приёмы  Металингвистического программирования, связываемого, в первую очередь, с работой с "понятиями", представленными так называемыми  L-Переменными.

Теоретические основания Металингвистического Программирования

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

О Металингвистическом Программировании коротко

Отличительной особенностью Металингвистического Программирования являются следующие тесно связанные друг с другом моменты:

  1. Система Металингвистического программирования основывается на полном комплекте Мета-Механизмов, которые впервые вычленены и описаны автором монографии. Можно также утверждать, что Мета-Механизмами в полным объёме не наделена ни одна из существующих ныне (2010 год) систем программирования и поддерживающих её "оболочек";
  2. В Системе Металингвистического Программирования различаются Определения Формальной Модели Предметной Области (ФМПО) и соотносимый с ними текст; при этом определения ФМПО ни коем образом не зависят от текста, который должен быть с ФМПО соотнесён;
  3. Могут решаться две основные задачи:
    • Задача "Семантической Разметки" текста, соотносимого с определениями ФМПО;
    • Задачи модификации ФМПО;
  4. Соотнесение ФМПО и обрабатываемого текста достигается путём задействования той группы Мета-Механизмов, которая ответственная за "Рекурсивный вызов Машин";
    цикл
          <Создание_Виртуальной_Машины_под_задание, Выполнение_задания, Уничтожение_Машины>

    рассматривается как выполняемый на некотором шаге вызывающей этот механизм Машины как рядовая операция, реализующая алгоритм Мета-Системы. При этом созданная на некотором шаге Машина "Рекурсивно" может "породить" Машины более высокого уровня; уровень рекурсивного вызова машин не ограничен;
  5. Поскольку в точном смысле термина "Язык", используемом в Теоретической Кибернетике (Математической Кибернетике и Computer Science) языком являются определения ФМПО, задаваемые в одной из программных компонент Мета-Системы, этот язык изначально не фиксирован; поэтому говорить о новом, ещё одном "Языке Программирования" нельзя; определена лишь "Нотация", которой можно пользоваться; зато можно говорить о "Металингвистическом программировании", и если использовать эту технику, то следует сначала задать "Определения Языка" (в терминологии Металингвистического Программирования, следовало бы говорить более точно - ФМПО), и соотносимого с этим языком обрабатываемого текста.

Назначение Металингвистического Программирования

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

Программа в стиле Металингвистического Программирования должна пройти фазу Синтаксического и Семантического Анализа.
Разработчик Прикладной Программной Системы должен обеспечить полноту формализации Предметной Области. Это означает, что все используемые в комплексе "Понятия" должны быть определены, и определения должны быть однозначными.

Фаза Лексико-Семантической Разметки Исходного Текста

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

Разметка, в свою очередь, может осуществляться в два шага. На первом шаге в тексте выделяются фрагменты текста, которые могут быть отождествлены как Лексемы. Это шаг Первичной (контекстно-свободной) Лексической Разметки. На втором шаге Контекстно-зависимой Лексико-семантической разметки в лексически размеченном тексте рассматривает достаточно широкий контекст и в нём находятся такие "обороты", которые могут быть стандартизованы, упрощены, заменены на другие. На этом втором шаге используемые Лексемы максимально близко приближаются к тезаурусу ФМПО.

Результат Лексико-семантической разметки напоминает XML-текст, размеченный тегами, имена которых пересекается с тезаурусом ФМПО.

Если Первичную Лексическую Разметку можно выполнить любым текстовым процессором, то второй шаг можно выполнить лишь в системе, допускающей работу с "Именованными Скобками". Такими системами являются либо "Расширенный Рефал", либо сама Мета-Система.

Главная Составляющая программы в стиле Металингвистического Программирования

Собственно алгоритм преобразования частично или полностью размеченного обрабатываемого текста пишется с использованием "Концептов" (Понятий), над которыми определён алгоритм. Если требуется, эти Понятия могут быть специфицированы (сужены) через конкретное наполнение данного понятия, которое только и может удовлетворить данное правило преобразования.

Собственно Металингвистическое Программирования отвечает идее поднятия вызова регулярно используемых механизмов на уровень языка; не надо определять многократно ту работу, которая составляет минимум, необходимый для решения данного класса задач; эту работу должны выполнять "Механизмы" Исполнительной Системы; в программе следует определить, "Что" следует сделать, но не "Как" это делается в регулярном случае.

Итог

Чтобы Система Металингвистического Программирования была определена как КФС, необходимо рассмотреть все составляющие этого определения:

  1. Нотационную Компоненту (Правила записи Определений Формальных Моделей Предметной Области и Алгоритмов Преобразования определённых Объектов); необходимо также понимать, как эти определения будут странслированы в "Байт-код", понимаемый Интерпретационной Компонентой - Мета-Системой MetaLngP™.
  2. Поле Зрения, т.е. Данные, подлежащие обработке; в Системе Металингвистического Программирования решаемые Системой задачи могут пониматься как задачи распознавания в тексте объектов, определённых в Формальной Модели Предметной Области, и выполнение преобразований над этими объектами;
  3. "Виртуальную Машину" (Мета-Систему MetaLngP), наделённую всеми необходимыми механизмами Мета-Системы и способной адекватно понимать задание на обработку данных и адекватно выполнять эти задания;
 Для получения конкретных представлений о том, что всё это значит, полезно рассмотреть "Практикум по Металингвистическому Программированию":

Практикум по Металингвистическому Программированию

Детали и контекст теоретического построения, приведшего к Концепциям Конструктивных и Развивающихся Формальных Систем, в кругу которых оказывается и Мета-Система MetaLngP, рассматривается, помимо Монографии, также и в университетском курсе для студентов ФВМиК МГУ:

Университетский Лекционный Курс "Конструктивные формальные системы"

Могут ли существовать другие Системы Металингвистического программирования, основанные на других Мета-Системах? - Ответ в секции "Вопросы и Ответы" этого Сайта.

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

Мы приводим подробное описание самой системы  Refal.NET,  доступной по лицензии GPL на портале открытых проектов http://sourceforge.net  под именем  refal-net. Исходные тексты Системы можно получить по запросу от Разработчиков системы Refal.NET  и  Мета-Системы  MetaLngP™. От Разработчиков по запросу можно получить самую последнюю версию Системы Refal.NET.

Для освоения Системы программирования на языке Рефал  необходимо освоить задачи "Практикума по программированию на языке Рефал".

 

Additional Resources

To facilitate English-speaking visitors to skip 'theory' and to get maximum possible from the visit, we recommend to follow links:

To get general idea about Semantic Documents Processing Technique:

To see 'Live-Example' of Natural Text Processing (sorry, Russian) you can follow next links:

The first reference direct you at the page where Miner in live application is discussed; source text of programs and Result of work together with log-files are presented there.

The second reference reference direct you to the Integrated DB for Secondary Information Resources with it's problems.

Emphasize once again that we demonstrate actual work of Meta-System and discuss its applications.

 

Поскольку Нотационная Компонента КФС предназначена для служить набором инструкций для Интерпретационной Компоненты КФС, коей в нашем случае оказывается "Виртуальная Машина" MetaLngP, глубокое понимание устройства и функционирования "Мета-Машины" является крайне желательным.

Для ознакомления с Мета-Машиной MetaLngP  можно рекомендовать изучение устройства Прародительницы - "Виртуальной Машины" Refal.NET, доступной в исходном коде либо с сайта "Открытых Проектов" http://sourceforge.net, либо (чтобы получить более совершенную версию) обратившись к Разработчикам: vmans795@gmail.com).

Кроме того, полезно получить представление об Интерпретационной Компоненте КФС "Система Металингвистического Программирования" по описанию Итерпретационная Компонента (Механизмы) КФС "Система Металингвистического Программирования"