350 руб
Журнал «Информационно-измерительные и управляющие системы» №5 за 2025 г.
Статья в номере:
Многоплатформенная библиотека для построения пользовательских интерфейсов на основе функциональных потоков
Тип статьи: научная статья
DOI: https://doi.org/10.18127/j20700814-202505-01
УДК: 004.42
Авторы:

П.И. Баштанов¹, П.А. Шапкин²

¹ˑ²Национальный исследовательский ядерный университет «МИФИ» (Москва, Россия)

¹pavel@shapkin.link

Аннотация:

Постановка проблемы. В современном мире наблюдается рост потребности в создании кроссплатформенных приложений. Однако существующие библиотеки для построения пользовательских интерфейсов часто имеют ограничения в области функционального программирования. Это приводит к сложности в разработке и поддержке кроссплатформенных решений. Объектом исследования является абстракция побочных эффектов и потоков в функциональных языках программирования и их применение к разработке пользовательских интерфейсов. Предметом исследования является реализация соответствующих абстракций на функциональном языке Scala и построение оснащающих отображений, позволяющих интерпретировать их для генерации как интерфейса мобильного приложения на основе Java-платформы в рамках Android, так и веб-интерфейса на основе Scala.js. Цель. Исследовать подход к созданию интерфейса кроссплатформенного мобильного приложения на основе функциональных потоков и разработать библиотеки на основе этого подхода.

Результаты. Получены необходимые строительные блоки для построения и преобразования потоков событий на основе применения методов функционального программирования, а также конструкций теории категорий. Разработан подход к построению интерфейсов приложений на основе функциональных потоков (ПИФП). Проведено сравнение с аналогами по формальным критериям. Спроектированы и созданы библиотека «immui» («immutable UI») и демонстрационное приложение на ее основе. Проведено тестирование отзывчивости и потребления ресурсов в сравнении с нативным приложением на основе Android views. Выяснено, что нативное приложение потребляет меньше памяти, но выводы касательно отзывчивости неоднозначны, так как последняя сильно зависит от конкретного сценария использования.

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

Страницы: 7-14
Для цитирования

Баштанов П.И., Шапкин П.А. Многоплатформенная библиотека для построения пользовательских интерфейсов на основе функциональных потоков // Информационно-измерительные и управляющие системы. 2025. Т. 23. № 5. С. 7−14. DOI: https://doi.org/10.18127/j20700814-202505-01

Список источников
  1. Узких Г. Функциональное программирование и его влияние на качество кода и обслуживаемость // Вестник науки. 2023. 8 (65). С. 317−318. https://cyberleninka.ru/article/n/funktsionalnoe-programmirovaniei-ego-vliyanie-na-kachestvo-koda-i-obsluzhivaemost (05.06.2025).
  2. Cats Effect 3 official documentation. https://typelevel.org/cats-effect/docs/ (22.06.2025).
  3. Pufek P. и др. Achieving Efficient Structured Concurrency through Lightweight Fibers in Java Virtual Machine // 43rd International Convention on Information, Communication and Electronic Technology (MIPRO). 2020. С. 1752−1757. DOI: 10.23919/MIPRO48935. 2020.9245253.
  4. Ida Tetsuoand Tanaka J. Functional programming with streams. Part II // New Generation Computing. September 1984. Т. 2. № 3. С. 261−275.
  5. fs2 official documentation. https://fs2.io (25.06.2025).
  6. Milewski B. Category theory for programmers. Т. 12. Blurb. 2018.
  7. Tagless Final in Scala Quickly Explained. https://rockthejvm.com/articles/tagless-final-in-scala (05.06.2025).
  8. Carette J., Kiselyov O., Shan C.-C. Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages // Journal of Functional Programming. 2009. Т. 19. № 5. С. 509−543.
Дата поступления: 15.08.2025
Одобрена после рецензирования: 22.08.2025
Принята к публикации: 22.09.2025