Sto davvero facendo fatica a capire la differenza tra paradigmi di programmazione procedurale e funzionale .
Ecco i primi due paragrafi dalla voce di Wikipedia sulla programmazione funzionale :
In informatica, la programmazione funzionale è un paradigma di programmazione che tratta il calcolo come la valutazione di funzioni matematiche ed evita dati di stato e mutabili. Enfatizza l'applicazione delle funzioni, in contrasto con lo stile di programmazione imperativo, che enfatizza i cambiamenti di stato. La programmazione funzionale ha le sue radici nel lambda calcolo, un sistema formale sviluppato negli anni '30 per indagare la definizione di funzione, l'applicazione di funzioni e la ricorsione. Molti linguaggi di programmazione funzionale possono essere visti come elaborazioni sul lambda calcolo.
In pratica, la differenza tra una funzione matematica e la nozione di "funzione" utilizzata nella programmazione imperativa è che le funzioni imperative possono avere effetti collaterali, modificando il valore dello stato del programma. Per questo motivo mancano di trasparenza referenziale, ovvero la stessa espressione di linguaggio può produrre valori diversi in momenti diversi a seconda dello stato del programma in esecuzione. Al contrario, nel codice funzionale, il valore di output di una funzione dipende solo dagli argomenti che vengono inseriti nella funzione, quindi chiamare una funzione
f
due volte con lo stesso valore per un argomentox
produrrà lo stesso risultatof(x)
entrambe le volte. L'eliminazione degli effetti collaterali può rendere molto più facile comprendere e prevedere il comportamento di un programma, che è una delle motivazioni chiave per lo sviluppo della programmazione funzionale.
Al paragrafo 2 dove si dice
Al contrario, nel codice funzionale, il valore di output di una funzione dipende solo dagli argomenti inseriti nella funzione, quindi chiamare una funzione
f
due volte con lo stesso valore per un argomentox
produrrà lo stesso risultatof(x)
entrambe le volte.
Non è lo stesso caso esatto per la programmazione procedurale?
Cosa si dovrebbe cercare in procedurali vs funzionali che si distinguono?