ОСОБЕННОСТИ
ПРОГРАММИРОВАНИЯ НА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОМ ЯЗЫКЕ S-FLOGOL
Ал.М. Бебчик, Ан.М. Бебчик
(Москва, Московский государственный институт
радиотехники,
электроники и автоматики (технический университет),
Россия)
В последнее
время все большее внимание уделяется языкам декларативной парадигмы
программирования, что во многом обусловлено развитием вычислительной техники,
компенсирующим основной недостаток языков декларативного типа – низкую
производительность вычислений при больших требованиях к объему оперативной
памяти. Важными направлениями развития декларативных языков являются внедрение
объектно-ориентированного подхода и создание современных сред программирования,
что находит свое отражение в реализациях таких языков как Objective Caml, Акторный Пролог, Visual Prolog и
др. Основанный на формализме направленных отношений функционально-логический
язык S-FLOGOL также поддерживает указанные направления развития и
предоставляет пользователю оригинальные средства ввода и выполнения программ.
Направленным отношением
арности [1,2] называется график соответствия из в , где – множество
всевозможных кортежей элементов носителя длины n. По сути, направленное
отношение есть отношение в классическом понимании, места (атрибуты) которого
разделены на два подмножества – входы и выходы, соответственно. Благодаря
такому разделению естественно выделяется множество атрибутов, которые являются
исходными данными для вычисления отношения, и множество атрибутов, являющихся
результатами вычисления. Если рассматривать связь понятий направленного и
классического отношений, то классическое отношение можно представить
направленным отношением с нулевым количеством выходов, а направленное отношение
– классическим отношением арности, равной сумме входной и выходной арности
направленного отношения.
Естественной формой
определения направленных отношений является их сетевое представление [1,2],
поэтому одним из возможных путей программирования с использованием формализма
направленных отношений является непосредственное формирование программ на
основе сетевого представления. Важным свойством этого представления является
возможность его естественного отображения в графическом виде. Это позволило нам
разработать оригинальную технологию графического построения программ [3], в
соответствии с которой программа представляется контекстно-свободной сетевой
грамматикой, правила которой заданы в виде графических изображений сетей.
Основным достоинством графического программирования является наглядность и
простота анализа построенных программ.
Другим способом
программирования с использованием формализма направленных отношений является
описание направленных отношений с использованием текстовой грамматики языка S-FLOGOL [4]. Основными достоинствами
такого подхода являются более компактная запись программы и возможность
использования так называемой схемной надстройки. Средства схемной надстройки
позволяют задавать направленные отношения в виде шаблонов, конкретизация
которых производится при компиляции запроса к системе. В результате компиляции
текстовая программа на языке S-FLOGOL преобразуется к сетевому
представлению направленных отношений.
Язык S-FLOGOL
является бестиповым языком, что позволяет пользователю использовать любые типы
данных, необходимые для решения задачи. Контроль типов данных может быть
организован с помощью ти́повых отношений. Ти́повое отношение для типа
,
где – сорта входных
(выходных) данных, определяется как «0», где – отношение арности (0,1), генерирующее данные сорта t.
Описание отношения R типа T
будет иметь вид , где e – реляционное выражение,
определяющее направленное отношение арности .
Для демонстрации основных
приемов программирования приведем несколько примеров программ, решающих
некоторые простейшие задачи функционального и логического программирования. Для
улучшения понимания будем приводить запись программы на языке Пролог и
соответствующее решение на языке S-FLOGOL в сетевом и текстовом виде.
Полное описание сетевого представления дано в [1], напомним только, что
связанные в определении переменные представляются точками, направленные
отношения представляются прямоугольниками с входами и выходами,
соответствующими входной и выходной арности отношения, а связи переменных с
входами и выходами отношений – дугами.
Первым
примером является программа, определяющая отношение сложения. На Прологе она записывается
так: plus(0,X,X);plus(s(X),Y,s(Z)):-plus(X,Y,Z).
Определение отношения сложения на языке S-FLOGOL показано на рис.1.
Отношение S (Succ) увеличивает число на единицу.
Рис.1. Отношение сложения.
В
качестве следующего примера рассмотрим программу Append, соединяющую два списка. На
языке Пролог программа записывается следующим образом: Append([ ],Ys,Ys); Append([X|Xs],Ys,[X|Zs]):-Append(Xs,Ys,Zs).
Соответствующее определение на языке S-FLOGOL показано на рис.2. (Cons –
конструктор списка). Как видно из примера, сетевое представление показывает
структуру связей между элементами правил программы и наглядно отражает процесс
обработки списка.
Рис.2. Отношение соединения списков.
Текстовое представление
программ языка S-FLOFOL позволяет использовать
схемную надстройку, в частности, параметры вызова и индексированные имена
отношений. В качестве примера использования параметров приведем схему отношения,
применяющую отношение-параметр с именем «0» ко всем элементам переданного
списка. Определение этого отношения на
языке S-FLOGOL представлено на рис.3. Символ @ используется для
рекурсивного вызова отношения с тем же набором параметров. Графическая интерпретация
дана с учетом спецификации OPERATOR параметра. Заметим, что
спецификация параметров вызова определяется на стадии компиляции запроса,
поэтому в общем случае для текстовых выражений языка графическая интерпретация
не определена.
Рис.3. Схема отношения ApplyAll.
Важным аспектом успешного использования языка программирования является наличие современной интегрированной среды разработки программ. Среда программирования языка S-FLOGOL включает специализированные текстовый и графический редакторы. Текстовый редактор предназначен для построения многомодульных программ на языке S-FLOGOL с использованием возможностей схемной надстройки. Графический редактор предназначен для формирования программы графическим способом, а также для отображения промежуточных и итоговых результатов вычисления. Используемые оригинальные технологии ввода гарантируют синтаксическую корректность формируемой программы на каждом шаге ее построения.
Таким образом, система программирования на языке S-FLOGOL позволяет создавать программы, сочетающие логический и функциональный стили программирования и обладающие наглядным компактным представлением.
ЛИТЕРАТУРА
1. Фальк В.Н. Теория
направленных отношений и ее приложения // Дисс. … докт. техн. наук. М: – МЭИ.
-2001.
2. Кутепов В.П., Фальк В.Н.
Направленные отношения: теория и приложения // Изв. РАН. Техническая
кибернетика, 1994. № 4,5.
3. Бебчик Ан.М. Технология
графического построения функционально-логических программ на языке S-FLOGOL //
«Информационные технологии в науке, образовании и производстве»(ИТНОП).
Материалы международной научно-технической конференции. 11-12 мая 2004г., Орел:
ОрелГТУ, 2004, т.5.–с.175-179.
4. Бебчик Ал.М. Альтернативно-списковая
грамматика как основа технологии автоматизированного построения программ языка
функционально-логического программирования S-FLOGOL // Системы искусственного
интеллекта и нейроинформатика:труды международной конференции
КЛИН-2004.Ульяновск:УлГТУ, 2004, т.3.–с.27-29.