BC/NW 2014 №1 (24) :6.3
НОТАЦИЯ
ПРОЕКТИРОВАНИЯ СТРУКТУР ДАННЫХ ДЛЯ ФУНКЦИОНАЛЬНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Борисенков
Д.С., Федулов. А.С.
Проектирование программного
обеспечения является важным этапом его жизненного цикла и включает в себя
проектирование структур данных.
Типичные для функциональной
парадигмы программирования структуры данных отличаются от структур данных,
используемых в императивных языках программирования. С их помощью можно описать
иерархию объектов без явного использования указателей. Кроме того, компилятором
предоставляется гарантия целостности данных в этой иерархии. Средствами
функциональных языков программирования (ФЯП) можно эффективно осуществлять
проверку и извлечение данных из иерархии.
Нотация Д. Рассела [1]
позволяет проектировать структуры данных ФЯП. Однако, она не поддерживает такие
элементы объектно-ориентированной парадигмы программирования, как объекты и
классы.
Тем не менее эти элементы
присутствуют во многих современных языках функционального программирования.
Кроме того, нотация не стандартизована и не содержит способов введения новых
диаграмм и графических примитивов.
В качестве альтернативы нотации
Д. Рассела в работе предлагается расширение нотации UML [2]
посредством добавления диаграммы алгебраических типов данных. Структура каждого
не примитивного типа данных может быть отображена на диаграмме в виде дерева,
корнем которого является вершина с именем типа, а листьями — вершины с именами
типов элементов. В работе предложен алгоритм преобразования диаграммы
алгебраических типов данных в тексты шаблонов программ на ФЯП Scala,
Haskell и F#. Он
состоит из двух фаз:
1) генерации слабозависимой от
конкретного ФЯП последовательности токенов — символов, представляющих собой
абстракцию над лексемами языков программирования;
2) порождения текста шаблона
программы автоматом с памятью, которому подается на вход последовательность,
полученная в фазе 1.
Литература
1. D.
Russel.FAD: Functional Analysis and Design Methodology. –
URL:http://kar.kent.ac.uk/13634/1/fad_a_functional_analysis_russell.pdf (дата
обраще-ния: 1 сентября 2013)
2. Дж. Рамбо, М. Блаха. UML 2.0.
Объектно-ориентированное моделирование и разработка. СПб: Питер, 2007. — 544