Автор оригинала: FreeCodeCamp Community Member.
Палаколу Шри Маниканда
В этой статье вы получите глубокое понимание функционального программирования и его преимуществ.
Введение в функциональное программирование
Функциональное программирование (FP) – это тип парадигмы или шаблона в информатике. Все сделано с помощью функций в FP, а основные строительные блоки только являются функциями.
Языки программирования, которые поддерживают чисто функциональные программирования –
- Haskell.
- Закрытие
- Сосредоточение
- SQL.
Некоторые языки программирования, которые поддерживают функциональное программирование, а также другие парадигмы программирования, являются –
- Питон
- Javascript
- C ++
- Рубин
Поскольку имя говорит функционал, большинство программистов считают о математических функциях. Это не так с fp. Это просто абстракция, чтобы решить реальные сложные проблемы легким и эффективным способом.
Перед объектно-ориентированной эпохи программирования программная индустрия полностью зависела от функционального программирования. Эта парадигма качала программную промышленность на пару десятилетий. Существуют некоторые проблемы с функциональным программированием, и именно поэтому они переместились на объектно-ориентированную парадигку. Вопросы с FP будут обсуждаться позже в этой статье.
Это все о введении к функциональному программированию. Теперь, прежде всего, нам нужно узнать, что такое функция.
Функции
Прежде чем раскрыть фактическое определение, я хочу объяснить ситуацию, чтобы узнать, где на самом деле использовать FP. Предположим, вы пишете код для создания приложения. В вашем путешествии по развитию вы хотите повторно использовать код нескольких строк (100) в разных местах. Для вашего приложения полезны функции. Мы можем написать функции на одном месте, и мы сможем получить доступ к этим функциям из любой точки программы. Функциональное программирование имеет следующие функции –
- Уменьшает резервирование кода.
- Улучшает модульность.
- Помогает нам решать сложные проблемы.
- Увеличивает ремонтопригодность.
Давайте посмотрим на фактическое определение функции:
Самые популярные типы функций –
- Общие функции
- Функции стрелки
- Анонимные функции
Общие функции
Общие функции – это не что иное, как функции, которые довольно часто используются программистом для выполнения определенной задачи. Синтаксис для объявления об общей функции в JavaScript:
function functionName(parameters) { // code to be executed}
Функция – Это ключевое слово, которое необходимо объявить функцию.
Функциональное значение – Это может быть названо на основе работы функции.
Параметры – Мы можем пройти любое количество параметров к функции.
Нам нужно позвонить в функцию, когда мы хотим выполнить этот кусок кода, который возвращается в функции.
Общие функции классифицируются следующим образом –
Функции без аргументов
Нам не нужно проходить какие-либо аргументы функции.
// Function Declaration
function sayHello(){ alert('Hello...!');}
// Calling the functionsayHello()
Когда мы называем функцию SAYHELLO (), она даст сообщению оповещения как Hello.
Функции аргументов
В этом типе функций мы пройдемся им аргументы.
Пример
// Declaring a Function
function add(num1, num2){ return num1 + num2;}
// Function Call
var result = add(7, 11);
console.log(result);
Аргументы, которые передаются во время объявления функции I.E (NUM1, NUM2), называются Формальные параметры.
Аргументы, которые передаются при вызове функции I.E (7, 11), называются Фактические параметры.
Функция обычно возвращает некоторое значение, и чтобы вернуть это значение, которое нам нужно использовать Возвращение ключевое слово. Когда функция возвращает некоторое значение, это означает, что он не печатает для нас какой-либо вывод, он просто возвращает окончательный выход. Наша обязанность печатать этот результат. В приведенной выше программе функция возвращает значение, и я передаю это значение для имени переменной «результат». Теперь функция пройдет результат к переменной «результат».
Специальность функций JavaScript
Если вы проходите больше аргументов, чем заявленный номер, вы не получите никакой ошибки. Но на других языках программирования, такие как Python, C, C ++, Java и т. Д… Мы получим ошибку. JavaScript рассмотрит на основе их требований.
Пример
// Calling the function with more number of arguments than the declared number
var result1 = add(2, 4, 6);console.log(result1);
var result2 = add(2);console.log(result2);
Выход
Если вы проходите меньше аргументов, чем заявленный номер, то мы не получим никакой ошибки. Но мы не можем предсказать вывод для программы, потому что, основываясь на функциональности функции, вывод будет производиться.
Функция регулировки аргументации
Наибольшее преимущество функций JavaScript мы можем пройти любое количество аргументов функции. Эта функция помогает разработчикам работать более эффективно согласованным образом.
Пример
// Creating a function to calculate sum of all argument numbers
function sumAll(){
let sum = 0;
for(let i=0;i
return sum;
}
// Calling the sumAll function
sumAll();
sumAll(1,2,3,12,134,3234,4233,12,3243);
Выход
Это все о общей функциях, которые используются для проведения нашей сложной задачи простым способом. Теперь давайте обсудим некоторые расширенные функции, представленные в ES6, называемых Функции стрелки Отказ
Функции стрелки
Функция стрелки выражение является синтаксически компактным альтернативом регулярным выражению функции. У него нет собственных привязки к это , супер , Аргументы или new.target ключевые слова. Выражения функций стрелки плохо подходят как методы. Они не могут быть использованы в качестве конструкторов.
Синтаксис для функции стрелки:
const functionName = (parameters) => { // code to be executed}
(OR)
var functionName = (parameters) => { // code to be executed}
(OR)
let functionName = (parameters) => { // code to be executed}
Примеры для функций стрелки
Например, 1.
Создание функции стрелки, чтобы сказать приветственное сообщение пользователям.
// Creating a Welcome function
let sayHello = () => { return 'Welcome to Javascript World...!';}
// Calling the function
console.log(sayHello())
Выход
Например, 2
В этом примере мы создаем функцию стрелки для генерации наибольшего из всех чисел, которые передаются как аргумент.
let maxNumber = (a,b,c,d) => {
if(a > b && a > c && a > d) return a; else if(b > a && b > c && b>d) return b; else if(c > a && c > b && c > d) return c; else return d;}
// Calling the function
console.log(maxNumber(1,2,4,3));
Выход:
Сочетание переменных аргументов со стрелками функций
Поскольку мы работаем со функцией стрелки, она не поддерживает массив аргументов по умолчанию, как общая функция. Наша обязанность явно объявить, что он поддерживает переменное количество аргументов
Например, 3
let varArgSum = (...args) => { let sum = 0;
for(let i=0;i
return sum;
}
// Calling the Function
console.log(varArgSum());
console.log(varArgSum(1,2,3,4,5,6,7,8,9,10));
Выход
Вот как мы можем объединить переменное количество аргументов со стрелками функциями. Теперь давайте обсудим анонимные функции в JavaScript.
Анонимные функции
Анонимная функция – это просто функция без имени. Цель использования анонимной функции – выполнить определенную задачу, и эта задача больше не требуется для программирования. Как правило, анонимные функции динамически объявляются во время выполнения.
Пример:
// Working with an Anonymous function
var a = 10; // Global Scope Variable.
// creating a function(function() {
console.log("welcome to the world of Anonymous function");
var b = 20; // b is a local scope variable.
var c = a+b; // c is a local scope variable //a can be used because it is in the global scope
console.log("Addition of two numbers value is: "+c);})();
Выход
Это концепция анонимных функций. Я думаю, что я объяснил это простым и легким способом.
Функции высшего порядка
Функция более высокого порядка – это функция, которая принимает функции в качестве аргумента или возвращает другую функцию в результате.
Лучшим примером функций более высокого порядка в JavaScript является то, что Array.Map (), Array.recuce (), Array.Filter ().
Пример 1: array.map ()
// working with Array.map()
let myNumberArray = [4,9,16,25,36,49];
let mySquareRootArray = myNumberArray.map(Math.sqrt);
console.log(mySquareRootArray);
Выход
Пример 2: Array.reduce ()
// working with Array.reduce()
let someRandomNumbers = [24,1,23,78,93,47,86];
function getSum(total, num){ return total + num;}
let newReducedResult = someRandomNumbers.reduce(getSum);
console.log(newReducedResult);
Выход
Пример 3: array.filter ()
// Working with array filter
let ages = [12,24,43,57,18,90,43,36,92,11,3,4,8,9,9,15,16,14];
function rightToVote(age){ return age >= 18;}
let votersArray = ages.filter(rightToVote);
console.log(votersArray);
Выход
Рекурсия
Это одна из ключевых темов в функциональном программировании. Процесс, в котором функция вызывает напрямую или косвенно, называется рекурсивной функцией. Эта концепция рекурсии вполне полезна при решении алгоритмических проблем, таких как башни Ханой, предзаказ, пост порядка, по порядку и некоторых проблем обхода графов.
Пример
Давайте обсудим известный пример: поиск факториала числа с использованием рекурсии. Это можно сделать, позвонив функцию непосредственно из программы несколько раз. Логика для программы
// Finding the factorial of a number using Recursion
function factorial(num){ if(num == 0) return 1; else return num * factorial(num - 1);
}
// calling the function
console.log(factorial(3));
console.log(factorial(7));
console.log(factorial(0));
Выход
Характеристики функционального программирования
Цель любого языка FP заключается в том, чтобы имитировать использование математических концепций. Однако основной процесс вычислений отличается в функциональном программировании. Основные характеристики функционального программирования являются:
Данные неизменяются: Данные, присутствующие внутри функций, неизменны. В функциональном программировании мы можем легко создать новую структуру данных, но мы не можем изменять существующий.
Пригодность: Функциональное программирование создает большую ремонтопригодность для разработчиков и программистов. Нам не нужно беспокоиться о изменениях, которые случайно выполняются вне заданной функции.
Модульность: Это одна из важнейших характеристик функционального программирования. Это помогает нам сломать большой проект в более простые модули. Эти модули могут быть проверены отдельно, что помогает вам сократить время, затраченное на тестирование и отладку подразделений.
Преимущества функционального программирования
- Это помогает нам эффективно решать проблемы более простым способом.
- Это улучшает модульность.
- Это позволяет нам реализовать исчисление лямбда в нашей программе для решения сложных проблем.
- Некоторые языки программирования поддерживают вложенные функции, которые улучшают ремонтопригодность кода.
- Это уменьшает сложные проблемы на простые части.
- Это улучшает производительность разработчика.
- Это помогает нам быстро отладки кода.
Недостатки функционального программирования
- Для начинающих трудно понять. Таким образом, это не подходит для новичков для новых программистов для новых программистов.
- Техническое обслуживание трудно во время фазы кодирования, когда размер проекта большой.
- Воспроизведение в функциональном программировании – это сложная задача для разработчиков.
Заключение
Для некоторых это может быть совершенно новая парадигма программирования. Я надеюсь, что вы сделаете это шансом в вашем путешествии по программированию. Я думаю, что вы обнаружите ваши программы проще читают и отладки.
Эта функциональная концепция программирования может быть сложной и жесткой для вас. Даже если вы новичок, это в конечном итоге станет легче. Тогда вы можете наслаждаться функциями функционального программирования.
Если вам понравилась эта статья, пожалуйста, поделитесь с друзьями.
Привет, занятые люди, я надеюсь, что вы веселились, читая этот пост, и я надеюсь, что вы узнали много здесь! Это была моя попытка поделиться тем, что я учусь.
Я надеюсь, что вы увидели что-то полезное для вас здесь. И увидимся в следующий раз!
Повеселись! Продолжайте изучать новые вещи и кодирование для решения проблем.
Проверьте мой Твиттер , Гадость , а также Facebook .