Javascript Functional Programming: cos'è? Non averne paura! Pt. 1

Web Development 687 Leggi in circa 2 minuti

Il Functional Programming è una reliquia dei paradigmi della programmazione, dimenticata per anni e riscoperta negli ultimi a causa della sua utilità nei sistemi distribuiti e soprattutto per la sua "purezza".

Questo paradigma, utilizzato in modo assillante, permette di raggiungere elevate performance, ottimizzazione e predicibilità del codice. Grosse compagnie come Akamai che ha scelto Clojure o Twitter che ha adottato Scala sono esempi riusciti di come adottare questo paradigma abbia migliorato performance e stabilità dei sistemi su grossa scala.

Questi linguaggi hanno una curva di apprendimento molto rapida per la maggior parte degli sviluppatori web frontend; ad ogni modo molti linguaggi, tra cui possiamo notare principalmente Python incorporano nelle loro librerie di core o tramite librerie esterne metodi e utilità finalizzate al functional programming.

Tra queste nell'ambito web notabili esempi ne sono Underscore.js e Bacon.js

Il functional programming può spesso sembrare perverso ed intrigante, ma il vero vantaggio di adottare un codice scritto in functional programming è sicuramente dato dal fatto che qualsiasi funzione si scompone in tanti piccoli pezzi, che possono essere riciclati, testati ed utilizzati comodamente all'interno del progetto.

Trovare quindi una vera definizione di functional programming risulta alquanto complicato, tra le più diffuse troviamo quella di "funzioni come oggetti di prima classe" e "eliminare gli effetti collaterali", ma quella che personalmente prediligo è quella di "definire funzioni predicibili: in qualsiasi contesto, ed indipendentemente dai dati esterni, per un set di input ritorneranno sempre lo stesso output, indipendentemente da quante volte viene richiamata la funzione."

Quest'ultima definizione ci fa quindi capire quanto ogni singola funzione debba essere in un certo modo "indipendente" da variabili esterne, e tutte le sue dipendenze sono quindi esplicitate come parametri di input della funzione stessa.

Ma quali sono quindi le buone pratiche per definire delle funzioni in functional programming? Lo scopriremo nella prossima parte!