Metalinguistic Programming

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

Введение

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

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

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

          <Создание_Виртуальной_Машины_под_задание, Выполнение_задания, Уничтожение_Машины>

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

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

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

Забот для разработчика Прикладных Программ в стиле Металингвистического Программирования несколько. Главные из них:

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

Итог

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

  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).

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