Il Functional Programming(FP) è un paradigma di programmazione utilizzato con l’obiettivo di creare software “pulito” e la cui manutenzione è più semplice. Basato su tre elementi, il FP modifica un paradigma ben noto come l’Object Oriented Programming(OOP) per cercare di essere quanto più aderente possibile a scenari moderni in cui la necessità principale è di ottenere risultati in pochissimo tempo.
Qualsiasi cosa è una funzione
Il primo elemento del Functional Programming è che qualsiasi componente del software deve essere una funzione; anche il software stesso deve operare come una funzione composta da una catena di moltre altre funzioni in cui ogni input viene valutato finchè l’ultima funzione termina la valutazione.
Tale concetto, a prima vista, può sembrare arzigogolato ma rendendo più concreto rappresenta il modo in cui operano software come Excel e le API: input – computazione( funzione di funzioni) – output. Anche l’ambito dei Microservizi e del Function as as Service(FaaS) operano seguendo il paradigma FP.
Immutabilità
Il secondo elemento è rappresentato dall’immutabilità dei dati, vale a dire che i dati devono essere protetti da modifiche, conflitti e concorrenze durante tutte le fasi computazionali. In pratica, attraverso l’immutabilità si garantisce che a medesimi input corrispondano medesimi risultati.
I dati non possono essere modificati una volta che entrano nella funzione, evitando così il side effect cioè che una funzione possa modificare dati esterni alla funzione stessa, per es. database, file e console possono contenere side effect.
Funzioni pure
Il terzo elemento è che le funzioni, nel FP, devono essere “pure“, cioè devono aggiungere ai concetti di immutabilità e minimizzazione del side effect quello dello strong typing, cioè la restrizione nell’utilizzo di diverse tipologie di tipi di dati e di valori preferendo spesso i tipi di dati algebrici. Un concetto abbastanza complesso da comprendere, questo delle funzioni pure, che può essere sintetizzato con l’utilizzo di un linguaggio dichiarativo (cosa la funzione deve fare) piuttosto che un linguaggio imperativo( come la funzione deve fare). Per un approfondimento ti consigliamo la lettura dell’articolo “Declative vs Imperative“.
Conclusioni
Il paradigma di utilizzare funzioni specifiche per ottenere risultati specifici sta diventando sempre più comune perchè permette di avere architetture semplici, qualificate e completamente business oriented. Tali vantaggi li puoi ottenere da subito attraverso servizi in cloud come Cloud Functions di Google, un FaaS integrabile con qualsiasi altra applicazione e che permette di operare specifici task senza doversi preoccupare di dovere progettare e manutenzionare architetture. Per approfondire il concetto di FaaS ti suggeriamo la lettura dei nostri due precedenti articoli : “FaaS vs Serverless vs PaaS,Container e VM” e “Cos’è il Function as a Service(FaaS)“.
Contattaci subito e senza impegno per portare in ambiente FaaS le tue applicazioni e servizi.
Glue Labs ed il Functional Programming
Ti supportiamo nel delivery, nello sviluppo, nell’integrazione e nella migrazione verso ambienti Cloud FaaS. Siamo Google Cloud Partner e grazie all’esperienza maturata in tantissimi settori, con numerosi Clienti e con un solido gruppo aziendale ti forniamo assistenza e supporto per qualsiasi progetto di delivery ed integrazione di FaaS. Contattaci subito e senza impegno per maggiori informazioni.