Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 1(213)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7

Библиографическое описание:
Берьянов М.С. ФУНКЦИОНАЛЬНЫЕ КОНЦЕПЦИИ JAVASCRIPT: КОНВЕЙЕРИЗАЦИЯ И КОМПОЗИЦИЯ // Студенческий: электрон. научн. журн. 2023. № 1(213). URL: https://sibac.info/journal/student/213/276697 (дата обращения: 19.04.2024).

ФУНКЦИОНАЛЬНЫЕ КОНЦЕПЦИИ JAVASCRIPT: КОНВЕЙЕРИЗАЦИЯ И КОМПОЗИЦИЯ

Берьянов Максим Сергеевич

студент, факультет ПИиКТ, Университет ИТМО,

РФ, г. Санкт-Петербург

JAVASCRIPT FUNCTIONAL PROGRAMMING CONCEPTS: PIPE AND COMPOSE

 

Maxim Beryanov

Student, PIKT faculty, ITMO University,

Russia, Saint-Petersburg

 

АННОТАЦИЯ

Функциональное программирование предполагает вычисление результатов функций от исходных аргументов и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния. В данной статье предлагается рассмотреть концепции композиции и конвейеризации функций на языке JavaScript.

ABSTRACT

Functional programming involves calculating functions result from original arguments and other functions result, and does not imply explicit storage of program state. Accordingly, it does not imply variability of such state. This article proposes to consider the concepts of composition and functions pipelining in JavaScript language.

 

Ключевые слова: веб, функция, композиция, конвейер, JavaScript.

Keywords: web, function, compose, pipe, JavaScript.

 

Конвейеризация и композиция функций – это концепции функционального программирования [1], которые, конечно же, возможны в JavaScript [2], поскольку это мультипарадигменный язык программирования [3]. Концепция их состоит в том, чтобы выполнить более одной функции в заданном порядке и передать результат работы определенного набора функций в следующую функцию – тривиальным образом данную концепцию можно изобразить следующей командой: function1(function2(function3(initialArg))), или через использование композиционной функции [4]: compose(function3, function2, function1)(initialArg), либо через конвейер: pipe(function1, function2, function3)(initialArg). Заметим, что композиции и конвейеры почти одинаковы, единственная разница заключается в порядке их выполнения – если функции выполняются слева направо – это конвейер, если функции выполняются справа налево – это композиция. Можно представить более точное определение, что композиция – это механизм, который объединяет меньшие единицы информации (наши функции) в нечто более сложное (в другую функцию).

Пример конвейерной функции можно увидеть на рисунке 1.

 

Рисунок 1. Функция конвейера

 

Функция конвейера выше собирает в себя динамическое число функций, а также первоначальный аргумент, далее выполняет их по цепочке, передавая полученный результат как аргумент функции, которая будет выполняться дальше, и по итогу возвращает целевое значение. Также можно увидеть пример её работы – значения 5 и 7 сначала суммируются, а затем возводятся в квадрат.

Если вместо этого мы предпочитаем вызывать функции справа налево, нам просто нужно изменить метод reduce на redureRight. Пример определения композиционной функции можно увидеть на рисунке 2.

 

Рисунок 2. Функция композиции

 

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

 

Список литературы:

  1. Функциональное программирование [Электронный ресурс] URL: https://habr.com/ru/post/142351 (дата обращения: 07.01.2023).
  2. JavaScript [Электронный ресурс] URL: https://www.javascript.com (дата обращения: 07.01.2023).
  3. Мультипарадигменное программирование [Электронный ресурс] URL: https://ru.wikipedia.org/wiki/Мультипарадигменное_программирование (дата обращения: 07.01.2023).
  4. Композиция функций [Электронный ресурс] URL: https://ru.hexlet.io/courses/functions/lessons/composition/theory_unit (дата обращения: 07.01.2023).

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.