ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ НА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОМ ЯЗЫКЕ 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.