de PALAKOLLU SRI MANIKANTA
În acest articol, veți obține o înțelegere profundă a programării funcționale și a beneficiilor sale.
Introducere în programarea funcțională
Programarea funcțională (FP) este un tip de paradigmă sau tipar în informatică. Totul se face cu ajutorul funcțiilor din FP, iar elementele de bază sunt doar funcții.
Limbajele de programare care acceptă programarea pur funcțională sunt –
- Haskell
- Închidere
- Scala
- SQL
Unele dintre limbajele de programare care acceptă programarea funcțională, precum și alte paradigme de programare sunt –
- Piton
- Javascript
- C ++
- Rubin
Din moment ce numele spune funcțional, majoritatea programatorilor se gândesc la funcțiile matematice. Nu este cazul FP. Este doar o abstracție de a rezolva probleme complexe din lumea reală într-un mod ușor și eficient.
Înainte de era programării orientate pe obiecte, industria software-ului depindea complet de programarea funcțională. Această paradigmă a zguduit industria software-ului timp de câteva decenii. Există câteva probleme legate de programarea funcțională și de aceea s-au mutat în paradigma orientată pe obiecte. Problemele cu FP vor fi discutate mai târziu în acest articol.
Aceasta este totul despre introducerea în programarea funcțională. Acum, în primul rând, trebuie să învățăm ce este o funcție.
Funcții
Înainte de a dezvălui definiția reală, vreau să explic o situație pentru a ști unde să folosesc de fapt FP. Să presupunem că scrieți cod pentru a crea o aplicație. În călătoria dvs. de dezvoltare, doriți să reutilizați codul a câteva linii (100) în diferite locuri. Pentru aplicația dvs., funcțiile sunt utile. Putem scrie funcții într-un singur loc și vom putea accesa aceste funcții de oriunde din program. Programarea funcțională are următoarele caracteristici –
- Reduce redundanța codului.
- Îmbunătățește modularitatea.
- Ne ajută să rezolvăm probleme complexe.
- Crește capacitatea de întreținere.
Să ne uităm la definiția reală a unei funcții:
O Funcție este un bloc specificat de cod care este utilizat pentru a efectua o sarcină specifică în program.
Cele mai populare tipuri de funcții sunt –
- Funcții generale
- Funcții săgeată
- Funcții anonime
Funcții generale
Funcțiile generale nu sunt altceva decât funcțiile care sunt destul de des utilizate de programator pentru a efectua o sarcină specifică. Sintaxa pentru a declara o funcție generală în Javascript este:
function functionName(parameters) { // code to be executed}
funcție – Este un cuvânt cheie necesar pentru a declara o funcție.
functionName – Poate fi numit pe baza funcției de lucru.
parametri – Putem trece orice număr de parametri unei funcții.
Funcțiile declarate nu sunt executate imediat. Acestea sunt „salvate pentru utilizare ulterioară” și vor fi executate ulterior, când vor fi invocate (apelate).
Trebuie să apelăm funcția atunci când vrem să executăm acea bucată de cod care este returnată în cadrul unei funcții.
Funcțiile generale sunt clasificate după cum urmează –
Funcții fără argumente
Nu este nevoie să transmitem niciun argument funcției.
// Function Declaration
function sayHello(){ alert('Hello...!');}
// Calling the functionsayHello()
Când apelăm funcția pentru a spune Hello (), va apărea mesajul de alertă ca Hello.
Funcții de argumente
În acest tip de funcții, le vom transmite argumente.
Exemplu
// Declaring a Function
function add(num1, num2){ return num1 + num2;}
// Function Call
var result = add(7, 11);
console.log(result);
Argumentele care sunt transmise în timpul declarării unei funcții adică (num1, num2) sunt numite ca Parametri formali.
Argumentele care sunt transmise în timpul apelării unei funcții adică (7, 11) sunt numite ca Parametri reali.
O Funcție returnează de obicei o anumită valoare, iar pentru a returna acea valoare trebuie să o folosim întoarcere cuvânt cheie. Când o funcție returnează o anumită valoare înseamnă că nu imprimă nicio ieșire pentru noi, ci doar returnează ieșirea finală. Este responsabilitatea noastră să imprimăm acest rezultat. În programul de mai sus, funcția returnează valoarea și transmit această valoare unui nume de variabilă „rezultat”. Acum funcția va trece rezultatul la variabila „rezultat”.
Specialitatea funcțiilor Javascript
Dacă transmiteți mai multe argumente decât numărul declarat, atunci nu veți primi nicio eroare. Dar în alte limbaje de programare, cum ar fi Python, C, C ++, Java, etc … vom primi o eroare. Javascript va lua în considerare în funcție de cerințele lor.
Exemplu
// 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);
Ieșire

Dacă treceți mai puține argumente decât numărul declarat, atunci nu vom primi nici o eroare. Dar nu putem prezice ieșirea pentru program, deoarece, pe baza funcționalității funcției dvs., ieșirea va fi produsă.
Funcția Argument variabil
Cel mai mare avantaj al funcțiilor Javascript este că putem transmite orice număr de argumente funcției. Această caracteristică îi ajută pe dezvoltatori să lucreze mai eficient într-un mod consecvent.
Exemplu
// Creating a function to calculate sum of all argument numbers
function sumAll(){
let sum = 0;
for(let i=0;i<arguments.length;i++){ sum = sum + arguments[i];}
return sum;
}
// Calling the sumAll function
sumAll();
sumAll(1,2,3,12,134,3234,4233,12,3243);
Ieșire

Este vorba despre funcții generale care sunt utilizate pentru a îndeplini sarcina noastră complexă într-un mod simplu. Acum să discutăm câteva funcții avansate introduse în ES6 numite Funcții săgeată.
Funcții săgeată
Un expresia funcției săgeată este o alternativă sintactică compactă la o expresie de funcție regulată. Nu are legături proprii la acest, super, argumente sau nou.tinta Cuvinte cheie. Expresiile funcției săgeată nu sunt adecvate ca metode. Nu pot fi folosite ca constructori.
Una dintre cele mai iubite funcții din Es6 sunt funcțiile Arrow. Această funcție săgeată ajută dezvoltatorii să simplifice timpul și să simplifice sfera funcției.
Sintaxa pentru funcția săgeată este:
const functionName = (parameters) => { // code to be executed}
(OR)
var functionName = (parameters) => { // code to be executed}
(OR)
let functionName = (parameters) => { // code to be executed}
Exemple pentru funcțiile săgeată
De exemplu 1
Crearea unei funcții săgeată pentru a spune un mesaj de bun venit utilizatorilor.
// Creating a Welcome function
let sayHello = () => { return 'Welcome to Javascript World...!';}
// Calling the function
console.log(sayHello())
Ieșire

De exemplu 2
În acest exemplu, creăm o funcție săgeată pentru a genera cel mai mare dintre toate numerele care sunt transmise ca argument.
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));
Ieșire:

Combinație de argumente variabile cu funcții săgeată
Deoarece lucrăm cu o funcție săgeată, aceasta nu acceptă în mod implicit matricea de argumente, cum ar fi funcția generală. Este responsabilitatea noastră să declarăm în mod explicit că acceptă numărul variabil de argumente
De exemplu 3
let varArgSum = (...args) => { let sum = 0;
for(let i=0;i<args.length;i++){ sum = sum + args[i];}
return sum;
}
// Calling the Function
console.log(varArgSum());
console.log(varArgSum(1,2,3,4,5,6,7,8,9,10));
Ieșire

Astfel putem combina un număr variabil de argumente cu funcții săgeată. Acum, să discutăm funcțiile anonime în JavaScript.
Funcții anonime
O funcție anonimă este pur și simplu o funcție fără nume. Scopul utilizării funcției anonime este de a efectua o anumită sarcină și nu mai este necesară programarea acestei sarcini. În general, funcțiile anonime sunt declarate dinamic în timpul rulării.
Funcțiile anonime sunt apelate o singură dată într-un program.
Exemplu:
// 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);})();
Ieșire

Acesta este conceptul de funcții anonime. Cred că am explicat-o într-un mod simplu și ușor.
Funcții de ordine superioară
O funcție de ordin superior este o funcție care ia funcții ca argument sau care returnează o altă funcție ca rezultat.
Cel mai bun exemplu de funcții de ordin superior în Javascript este cel al Array.map (), Array.reduce (), Array.filter ().
Exemplul 1: Array.map ()
// working with Array.map()
let myNumberArray = [4,9,16,25,36,49];
let mySquareRootArray = myNumberArray.map(Math.sqrt);
console.log(mySquareRootArray);
Ieșire

Exemplul 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);
Ieșire

Exemplul 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);
Ieșire

Recursivitate
Acesta este unul dintre subiectele cheie în programarea funcțională. Procesul în care o funcție apelează direct sau indirect se numește funcție recursivă. Acest concept de recursivitate este destul de util în rezolvarea problemelor algoritmice precum Turnurile din Hanoi, Pre-Comandă, Post-Comandă, În ordine și unele probleme de traversare a graficului.
Exemplu
Să discutăm un exemplu celebru: găsirea factorialului unui număr folosind recursivitatea. Acest lucru se poate face apelând funcția direct din program în mod repetat. Logica programului este
factorial (n) = factorial (n) * factorial (n – 1) * factorial (n – 2) * factorial (n – 3) * … .. * factorial (n – n);
// 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));
Ieșire

Caracteristicile programării funcționale
Obiectivul oricărui limbaj FP este de a imita utilizarea conceptelor matematice. Cu toate acestea, procesul de bază de calcul este diferit în programarea funcțională. Principalele caracteristici ale programării funcționale sunt:
Datele sunt imuabile: Datele prezente în interiorul funcțiilor sunt imuabile. În programarea funcțională, putem crea cu ușurință o nouă structură de date, dar nu o putem modifica pe cea existentă.
Mentenabilitate: Programarea funcțională produce o mare întreținere pentru dezvoltatori și programatori. Nu trebuie să ne facem griji cu privire la modificările care se fac accidental în afara funcției date.
Modularitate: Aceasta este una dintre cele mai importante caracteristici ale programării funcționale. Acest lucru ne ajută să descompunem un proiect mare în module mai simple. Aceste module pot fi testate separat, ceea ce vă ajută să reduceți timpul petrecut cu testarea unităților și depanarea.
Avantajele programării funcționale
- Ne ajută să rezolvăm problemele într-un mod mai simplu.
- Îmbunătățește modularitatea.
- Ne permite să implementăm calculul lambda în programul nostru pentru a rezolva probleme complexe.
- Unele limbaje de programare acceptă funcții imbricate care îmbunătățesc menținerea codului.
- Reduce problemele complexe în bucăți simple.
- Îmbunătățește productivitatea dezvoltatorului.
- Ne ajută să depanăm rapid codul.
Dezavantaje ale programării funcționale
- Pentru începători, este greu de înțeles. Deci, nu este o abordare de paradigmă pentru începători prietenoasă pentru noii programatori.
- Mentenanța este dificilă în timpul fazei de codificare când dimensiunea proiectului este mare.
- Reutilizarea în programarea funcțională este o sarcină dificilă pentru dezvoltatori.
Concluzie
Pentru unii, ar putea fi o paradigmă de programare complet nouă. Sper că îi veți da o șansă în călătoria dvs. de programare. Cred că programele dvs. vor fi mai ușor de citit și depanat.
Acest concept de programare funcțională ar putea fi dificil și dificil pentru dvs. Chiar dacă sunteți începător, în cele din urmă va deveni mai ușor. Apoi vă puteți bucura de caracteristicile programării funcționale.
Dacă ți-a plăcut acest articol, te rog să împărtășești prietenilor tăi.
Salut oameni ocupați, sper că v-ați distrat citind această postare și sper că ați învățat multe aici! Aceasta a fost încercarea mea de a împărtăși ceea ce învăț.
Sper că ai văzut ceva util aici. Și ne vedem data viitoare!
A se distra! Continuați să învățați lucruri noi și să codificați pentru a rezolva problemele.
Check out My Stare de nervozitate, Github, și Facebook.