Programmazione funzionale: l’antica arte di vincolare l’ottenimento di un risultato al consequenziale determinismo implicito delle proprie dichiarazioni (pillole informatiche)

L’imperatore ordina e ottiene direttamente ciò che desidera dai sottoposti. Il guru fa capire il proprio desiderio e saranno poi gli adepti a soddisfarlo mettendo in pratica i suoi insegnamenti pregressi. Due strade per un medesimo risultato…

La programmazione funzionale è un paradigma di programmazione che tratta il calcolo come la valutazione di funzioni matematiche e che evita lo stato e i dati mutevoli. Si parla quindi di uno schema dichiarativo contrapposto a quello imperativo, ovvero “affermare” e non “ordinare”. Un po’ come se esortassimo qualcuno a ottenere qualcosa attraverso affermazioni di cosa vogliamo e di come funziona il mondo, in modo che ne ricavi lui stesso, naturalmente ed implicitamente, la consecutio su come ottenerlo e portarcelo, piuttosto che dargli ordini precipui e diretti. Tale strategia di coding è basata su concetti matematici come le funzioni pure, l’immutabilità e l’uso di funzioni di ordine superiore.

Nella programmazione funzionale, le funzioni sono considerate valori di prima classe, il che significa che possono essere passate come argomenti ad altre funzioni, restituite come risultati o assegnate a variabili. Le funzioni pure sono quelle che, date le stesse entrate, produrranno sempre gli stessi risultati e non avranno effetti collaterali, cioè non modificheranno lo stato esterno o le variabili globali.

L’immutabilità è un altro concetto chiave della programmazione funzionale. Significa che una volta creato un dato, esso non può essere modificato. Invece di modificare i dati esistenti, si creano nuovi dati con le modifiche desiderate. Questo può aiutare a prevenire bug e rendere il codice più facile da esaminare e testare.


Le funzioni di ordine superiore sono funzioni che accettano altre funzioni come argomenti o le restituiscono come risultati. Questo concetto è spesso utilizzato nella programmazione funzionale per creare codice più astratto e componibile.

Alcuni linguaggi di programmazione, come Haskell e Erlang, sono progettati specificamente per il paradigma funzionale, mentre altri, come JavaScript, Python e Scala, supportano sia la programmazione funzionale che quella imperativa. Utilizzare la programmazione funzionale come dicevamo, può portare a codice più pulito, più modulare e più facilmente testabile.

Tuttavia, può richiedere un cambiamento nel modo di pensare rispetto alla programmazione imperativa tradizionale (se siamo teste tonde dovremo sforzarci di pensare quadrato)

Esempi pratici

Ecco alcuni esempi pratici di programmazione funzionale utilizzando JavaScript, un linguaggio di programmazione che supporta sia il paradigma funzionale che quello imperativo.

Map, Filter e Reduce:
Queste sono funzioni di ordine superiore comuni che operano su array. Map applica una funzione a ciascun elemento di un array e restituisce un nuovo array con i risultati. Filter crea un nuovo array con gli elementi che soddisfano una condizione specificata dalla funzione passata come argomento. Reduce combina gli elementi di un array utilizzando una funzione, riducendo l’array a un singolo valore.
Esempio:


Funzioni pure:
Le funzioni pure non hanno effetti collaterali e restituiscono sempre lo stesso risultato per gli stessi input. Ecco un esempio di funzione pura per calcolare l’area di un cerchio:



Funzioni come argomenti e risultati:


Questi esempi mostrano come la programmazione funzionale possa portare a codice più interoperabile, astratto e facile da analizzare.

Ti è piaciuto l’articolo? Per suggerimenti, lavori, proposte, contattami!

Articolo creato 44

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Articoli correlati

Inizia a scrivere il termine ricerca qua sopra e premi invio per iniziare la ricerca. Premi ESC per annullare.

Torna in alto