Eventuali duplicati:
Why functional languages?benefici ed usi di un linguaggio di programmazione funzionale
ho iniziato la programmazione con C/C++, VB, e alla fine Python - tutti i linguaggi imperativi. Ho seguito un corso sui linguaggi di programmazione e ho imparato il mio primo linguaggio funzionale: OCaml. È stato terribile.
Sintassi e altri orrori a parte, OCaml ha preso il mio processo di pensiero imperativo e l'ho buttato fuori dalla finestra. E 'stato frustrante. Ho insistito sul fatto che tutto ciò che poteva essere fatto funzionalmente poteva anche essere fatto in modo imperativo. Ho pensato alla programmazione funzionale come programmazione imperativa senza un arto (effetti collaterali). In risposta alla mia frustrazione, l'unico vantaggio che il mio professore è riuscito a ottenere è stata la capacità di un FPL di parallelizzare le funzioni prive di effetti collaterali.
In ogni caso, basta parlare.
- Quali sono alcuni vantaggi che gli FPL offrono sopra IPL?
- C'è qualcosa che può essere fatto facilmente in un FPL che non può essere fatto facilmente in un IPL?
- Esistono esempi reali di FPL in uso o servono principalmente come esercizi accademici? (Quando dico "mondo reale", intendo un progetto che si basa pesantemente sull'aspetto funzionale della lingua e non stipula un FPL in uno scenario a cui non appartiene).
Grazie,
Advait
Per lo più duplicate: http://stackoverflow.com/questions/36504/ why-functional-languages –
Solo un breve suggerimento: un linguaggio OO 'impedisce' di accedere a tutte le variabili, nascondendole dietro le astrazioni. Questo ti aiuta a controllare la complessità. Allo stesso modo, un FP impedisce di manipolare lo stato condiviso, e quindi aiuta a scrivere codice parallelizzabile, tra le altre cose. –
Ho visto quel post e ho notato come tutti parlassero di un facile parallelismo. Non ero davvero soddisfatto di nessuna delle risposte. Ritengo che parallelizzare le chiamate alle funzioni standard non fornirà molti vantaggi in termini di prestazioni rispetto al permettere al programmatore di parallelizzare esplicitamente il proprio codice (specialmente perché il sovraccarico di iniziare un nuovo thread per eseguire una funzione potenzialmente banale è piuttosto grande). Quando la scelta è lasciata al programmatore (quando/cosa parallelizzare), lui/lei ottiene la massima libertà - i vantaggi prestazionali del parallelismo senza le stampelle di un FPL. – advait