Che cosa è la programmazione funzionale?

Programmazione funzionale è un paradigma di programmazione in cui la base di calcolo è la valutazione delle espressioni. Alcune caratteristiche sono l'uso di funzioni di ordine superiore, trasparenza referenziale e valutazione pigra. I vantaggi dello stile di programmazione comprendono programmi che sono facili da leggere, sono molto affidabili e possono essere suddivisi in componenti. Gli svantaggi sono che i calcoli possono essere lenti e lo stile e la sintassi sono completamente diverso da altri stili di programmazione comune. Lo stile di programmazione funzionale è più spesso abbracciato da accademici che da professionisti di informatica.

Come suggerisce il nome, le funzioni sono una parte fondamentale di questo paradigma di programmazione. Le funzioni possono essere nidificate all'interno di altre funzioni, chiamato funzioni di ordine superiore, e ogni funzione di ordine superiore possono essere suddivisi in costruzione funzioni di blocco che sono facili da capire e debug. Esempi di alcune funzioni di ordine superiore sono Mappa e Nest. La funzione Map prende una funzione F e la lista di variabili, ad esempio (x, y, z) e fornisce il risultato in un elenco: Mappa [F, (x, y, z)] = (F (x), F (y), F (z)). Nest assume la funzione F, la variabile x, e il numero di iterazioni: Nest [F, x, 3] = F (F (F (x))).

Programmazione funzionale pura prende un input e restituisce un output senza mai cambiare stato un variabileA € s. In altre parole, una funzione con lo stesso input darà sempre gli stessi risultati indipendentemente quanto è avvenuto in precedenza nel programma. Questo è chiamato trasparenza referenziale. Dal momento che le funzioni matematiche sono referenzialmente trasparenti, programmazione funzionale è intuitivo molti matematici, ingegneri e scienziati.

La trasparenza referenziale di funzioni significa che l'ordine di valutazione funzione non è importante. Pertanto funzioni non devono essere valutate fino occorrono loro risultati, che si chiama valutazione pigra. Questo è in netto contrasto con la programmazione imperativa, in cui un programma inizia con il primo comando e attraversa l'elenco fino l'ultimo comando. Valutazione pigra salta sopra le parti del programma che non seguono logicamente o sono superflue, che ottimizza automaticamente il programma e può ridurre i tempi di calcolo.

Programmazione funzionale ha molti vantaggi rispetto ad altri paradigmi di programmazione. Funzioni con ingressi e uscite chiare sono facili da leggere e capire. Una volta che una funzione viene accuratamente debug, esso può essere utilizzato in modo affidabile in altre applicazioni. Macchine multicore possono essere in grado di calcolare funzioni che vengono valutate in modo indipendente in parallelo, migliorando drasticamente le prestazioni dei programmi.

Purtroppo, non tutti i programmi si prestano a calcolo parallelo, e calcolando programmi funzionali possono essere piuttosto lenta. Programmi funzionali fanno molto affidamento sui ricorsione, che è spesso meno efficiente che utilizza linee tradizionali o metodi di iterazione. In realtà, la programmazione funzionale può essere molto goffo e difficile da imparare in quanto non assomiglia altri paradigmi più comuni come la programmazione orientata agli oggetti.

Gli accademici tendono a favorire la programmazione funzionale in quanto fornisce un modo chiaro e comprensibile per programmare problemi del mondo reale complessi. Alcuni linguaggi puri sono Haskell e Erlang. Mathematica è specializzata in matematica simbolica, R è specializzata in statistiche e J è specializzata in analisi finanziaria. Linguaggi multiparadigma quali Scala e F supporta sia la programmazione funzionale e di altri stili di programmazione #.

  • Programmazione funzionale è identificato dai suoi ingressi e uscite chiare.