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 –

  1. Haskell
  2. Închidere
  3. Scala
  4. SQL

Unele dintre limbajele de programare care acceptă programarea funcțională, precum și alte paradigme de programare sunt –

ad-banner
  1. Piton
  2. Javascript
  3. C ++
  4. 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 –

  1. Reduce redundanța codului.
  2. Îmbunătățește modularitatea.
  3. Ne ajută să rezolvăm probleme complexe.
  4. 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 –

  1. Funcții generale
  2. Funcții săgeată
  3. 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

Cum si de ce sa utilizam programarea functionala in JavaScript
Ieșirea și execuția programului de mai sus în consola Javascript cromată.

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

1611562929 44 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562929 628 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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:

1611562929 791 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562930 694 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562930 303 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562931 748 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562931 146 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562931 600 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

1611562932 126 Cum si de ce sa utilizam programarea functionala in JavaScript
Partea de ieșire și execuție a programului de mai sus în consola Javascript cromată.

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

  1. Ne ajută să rezolvăm problemele într-un mod mai simplu.
  2. Îmbunătățește modularitatea.
  3. Ne permite să implementăm calculul lambda în programul nostru pentru a rezolva probleme complexe.
  4. Unele limbaje de programare acceptă funcții imbricate care îmbunătățesc menținerea codului.
  5. Reduce problemele complexe în bucăți simple.
  6. Îmbunătățește productivitatea dezvoltatorului.
  7. Ne ajută să depanăm rapid codul.

Dezavantaje ale programării funcționale

  1. Pentru începători, este greu de înțeles. Deci, nu este o abordare de paradigmă pentru începători prietenoasă pentru noii programatori.
  2. Mentenanța este dificilă în timpul fazei de codificare când dimensiunea proiectului este mare.
  3. 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.