Perché la programmazione funzionale


38

Qual è il problema con la programmazione funzionale? Ne vedo parlare molto, ma a dire il vero non li ho mai trovati affatto utili. Perché pare che così tante università insegnino loro?


6
Molto grande nella programmazione AI.
acqua

3
@aqua - non dovrebbe essere una risposta, perché no?
Martin Beckett,

5
Vorrei anche sottolineare che anche i linguaggi OO tradizionali stanno cominciando a includere concetti della programmazione funzionale. Linq (in .NET), essendo un esempio emblematico.
apoorv020,

Penso che la programmazione funzionale eserciti di più il tuo cervello e possa portare a un codice veramente pithy. Quindi è abbastanza bello.
Adel,

2
@ apoorv020: E generici, tuple e raccolta dei rifiuti e ... tutti originati da linguaggi funzionali.
Jon Harrop,

Risposte:


60

Inizia con Perché è importante la programmazione funzionale . Quindi passare a Why Why La programmazione delle funzioni è importante . Alcuni proiettili:

  • La programmazione funzionale consente di ragionare in modo diverso sui problemi
  • L'astrazione funzionale è molto potente e ti consente di ASCIUGARE il tuo codice in modi non disponibili per altri paradigmi
  • Nel nostro futuro multi-core, i linguaggi funzionali potrebbero essere più facili da suddividere in attività simultanee (anche se anche i linguaggi non strettamente funzionali stanno lavorando duramente sul problema).
  • È più facile dimostrare che i programmi scritti in linguaggi funzionali puri (senza effetti collaterali) sono matematicamente corretti.

5
+1 - Questi sono tutti punti eccellenti e sono spiegati in modo più conciso e con dettagli più precisi di quello che ho cercato di fare.
jmort253,

1
Con il tuo quarto punto, intendevi dire che la lingua può essere dimostrata corretta o programmi scritti nella lingua? Ad ogni modo, sia le lingue impure che i programmi scritti in lingue impure possono essere dimostrati corretti, è solo molto più difficile e disordinato.
Jörg W Mittag,

1
@ Jörg W Mittag, è molto più facile ragionare anche sulle proprietà della lingua stessa. La semantica denotazionale è banale per i linguaggi funzionali e abbastanza complicata per l'imperativo.
Logica SK

divertente come il secondo link offra alcuni argomenti "espliciti", sapendo che non leggo nemmeno il 1 ° link.
jokoon,

+1: ottima risposta. Mi piace in particolare il modo in cui metti i punti elenco 1 e 2 nelle parole.
Jim G.

9

I concetti di programmazione funzionale creano una base che cambierà il modo di pensare e ti aiuterà a risolvere i problemi del mondo reale.

Il concetto è simile al motivo per cui tutti impariamo il calcolo multi-variabile, l'algebra e / o la fisica ingegneristica come specialisti in informatica, anche se potremmo non aver mai bisogno di quella conoscenza specifica nelle nostre carriere.

Ecco perché le scuole di giurisprudenza adorano i candidati con una laurea in matematica. Studiare la matematica ti insegna a pensare a più concetti in modo logico, e la programmazione funzionale ti insegna astrazioni e molti altri concetti importanti che ti aiutano a risolvere i problemi e guardarli in una luce diversa.

In sintesi, la programmazione funzionale ti aiuta a imparare come imparare.


Forse non ha davvero bisogno di un nome allora? Non è semplicemente la progettazione del programma 'corretta'?

4

Quando inizi, la programmazione funzionale è il miglior modello di pensiero. Perché la maggior parte dei programmi non richiede l'orientamento agli oggetti. Almeno questa è stata la mia esperienza.

Tuttavia, ora che accedo ad alcune app che richiedono la separazione di display e logica, è allora che ho iniziato a separare tutta la logica e il codice di visualizzazione, per rendere più semplice per ognuno fare ciò che è meglio.

Ma non saprai perché farlo, a meno che tu non sia il padrone di casa per primo. Non mi è mai piaciuta la gente che mi spingesse su OO, o che OO fosse la soluzione per tutto. Assicurati solo che qualunque approccio tu abbia, abbia senso per quello su cui stai lavorando, e non è una curva di apprendimento troppo ripida per prendere troppo tempo lontano dal lavoro che sei pagato per fare.


1
+1 - Mi piace che tu indichi usando la migliore tecnica per il lavoro: assicurati che abbia senso.
jmort253,

1
Purtroppo, il buon senso è raro nel nostro settore. Poiché ognuno di noi ha esperienze completamente diverse, che a causa degli errori che facciamo sono diversi, ognuno di noi sviluppa le diverse abitudini e il motivo per cui le facciamo ... Come ad esempio il controllo del codice sorgente, non ha senso per nessuno che ha sempre lavorato themself.
crosenblum,

"Il buon senso è la cosa più equamente distribuita al mondo, poiché ognuno pensa di essere così ben dotato che anche quelli che sono più difficili da soddisfare in tutte le altre questioni non hanno l'abitudine di desiderarne più di quanto già avere." - Descartes

3

Perché enfatizza i verbi, non i nomi. A volte sono i verbi che contano.


OOP sottolinea i nomi. A volte sono i nomi che contano. Come facciamo a sapere quale? - Falso dilemma. Sistema bloccato

3

Perché in generale utilizza meno codice per eseguire la stessa attività. Meno codice da scrivere, è meno codice da mantenere. Oltre ad essere meno codice, tende anche ad avere meno stato, e quindi è un po 'più semplice ragionare (una volta che ci sei abituato).


Quindi, non è semplicemente la definizione di "migliore"? Perché dovremmo voler fare qualcosa di diverso da quello che hai descritto?

2

Forse perché le università vogliono insegnare qualcosa da tutti i paradigmi di programmazione, e per certe cose la programmazione funzionale è migliore (come descrivere il movimento dei personaggi del gioco e descrivere le animazioni)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.