Опубликован: 11.02.2005 | Уровень: специалист | Доступ: платный
Лекция 5:

Сентенциальное программирование: Рефал

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Аннотация: Глобальные действия и глобальные условия. Конкретизация как один из видов отождествления. Данные и программы Рефала. Модель вычислений. Приемы программирования и примеры программ.

Рефал — предметно-эквациональный способ определения функций на свободном моноиде с дополнительной одноместной операцией.

(А. П. Бельтюков. Определение Рефала для чистых математиков.)

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

Студент УдГУ

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

действия глобальны, условия глобальны. (5.1)

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

В имеющихся сейчас двух наиболее развитых и альтернативных системах сентенциального программирования Prolog и Рефал при распознавании условий происходит еще и подготовка информации для применения перестройки. Эта особенность —

подготовка информации для действий в ходе распознавания условий, (5.2)

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

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

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

Конкретизация

Язык Рефал был создан В. Ф. Турчиным для программирования символьных преобразований. Исходный толчок он получил от идеи алгорифмов Маркова (см., например, теоретическое приложение к книге [ 21 ] ), но эта идея была полностью пересмотрена в ходе работы по созданию языка. Идейный и математический уровень проработки языка исключительно высокий, но вопросы дизайна почти проигнорированы.

В основе языка лежит (другой по сравнению с языком PROLOG) частный случай операции отождествления: конкретизация метавыражения.

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

Язык Рефал определен через три компонента: структуру данных, Рефал -машину, обрабатывающую эти данные, и собственно конкретный синтаксис языка.

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Илья Ардов
Илья Ардов

Добрый день!

Я записан на программу. Куда высылать договор и диплом?