Sobes.tech
Middle

Cos'è la programmazione funzionale?

sobes.tech AI

Risposta dell'AI

La programmazione funzionale è un paradigma di programmazione in cui i calcoli sono considerati come l'esecuzione di funzioni matematiche, evitando lo stato mutabile e i dati modificabili.

Principi fondamentali:

  • Funzioni pure: Funzioni che, con gli stessi dati di input, restituiscono sempre lo stesso risultato e non hanno effetti collaterali (ad esempio, modificare variabili esterne, input/output).
  • Immutabilità: I dati non cambiano dopo la creazione. Qualsiasi "modifica" crea una nuova copia dei dati.
  • Funzioni come cittadini di prima classe: Le funzioni possono essere passate come argomenti, restituite da altre funzioni e assegnate a variabili.
  • Trasparenza referenziale: Un'espressione può essere sostituita dal suo valore senza cambiare il comportamento del programma. Questo è strettamente legato alle funzioni pure.

Vantaggi:

  • Prevedibilità: Più facile da testare e debugare grazie all'assenza di effetti collaterali.
  • Parallelismo: Più facile eseguire codice in parallelo, poiché non c'è stato condiviso mutabile.
  • Manutenibilità: Il codice diventa più modulare e comprensibile.

Esempio in JavaScript:

// Funzione impura (modifica lo stato esterno)
let total = 0;
function addToTotal(value) {
  total += value;
  return total;
}

// Funzione pura (non modifica lo stato esterno, restituisce un nuovo valore)
function add(a, b) {
  return a + b;
}

// Uso di funzioni come cittadini di prima classe (funzione come argomento)
function processArray(arr, handler) {
  return arr.map(handler);
}

const numbers = [1, 2, 3];
const doubledNumbers = processArray(numbers, x => x * 2);

Sebbene JavaScript non sia un linguaggio strettamente funzionale, le sue capacità (come funzioni pure, metodi di array map, filter, reduce) consentono di applicare i principi della programmazione funzionale. Nel sviluppo frontend, la FP viene spesso utilizzata in librerie e framework (ad esempio, Redux, React con hooks).