Domanda

Sto cercando di capire i concetti di programmazione funzionale.

Ho usato Javascript per molti anni per lo scripting lato client in applicazioni web e oltre all'utilizzo di prototipi era tutta una semplice manipolazione DOM, convalida dell'input ecc.

Di recente, ho spesso letto che Javascript è uno dei linguaggi che supportano la programmazione funzionale.

Con la mia familiarità ed esperienza con Javascript, la mia preferenza è quella di usarlo per imparare la programmazione funzionale. Mi aspetto che sarei in grado di concentrarmi maggiormente sui concetti funzionali principali e di non impantanarmi o distrarmi da una sintassi completamente nuova.

Quindi, in sintesi, Javascript è una buona scelta per apprendere concetti di programmazione funzionale? Quali funzionalità di Javascript sono rilevanti / supportano la programmazione funzionale?

È stato utile?

Soluzione

JavaScript supporta funzioni di prima classe. Vedi Usa tecniche di programmazione funzionale per scrivere JavaScript elegante .

Altri suggerimenti

Javascript di ordine superiore è un fantastico modo per familiarizzare con gli aspetti funzionali di javascript. È anche una lettura relativamente breve nel caso in cui si desideri bagnare i piedi senza immergersi in un libro più grande.

Direi che sebbene sia possibile cogliere rapidamente alcuni concetti di programmazione funzionale con JavaScript, l'utilizzo di JavaScript in modo coerente come un linguaggio di programmazione funzionale non è una pratica comune. Almeno non ovviamente comune. La maggior parte delle persone non pubblica tutorial che indicano come eseguire la programmazione funzionale con JavaScript: quello che Marxidad ha sottolineato è in realtà un esempio abbastanza decente, ma non ne troverai molto. Gli aspetti funzionali non sono spesso evidenti, proprio come quando le persone usano le chiusure in JavaScript, ma non sono consapevoli di farlo.

L'idea di passare due funzioni come argomenti a una terza funzione, e quindi avere il valore restituito in modo che un'esecuzione correlata alle prime due funzioni sia una tecnica avanzata che appare quasi sempre solo nel nucleo del full-blown librerie come jQuery. Le funzioni anonime auto-eseguite e simili hanno guadagnato terreno, ma non sono ancora utilizzate in modo coerente. La maggior parte dei tutorial spesso si concentra invece sulle funzionalità OO di JavaScript, come come creare proprietà e metodi, ambito, controllo degli accessi e anche come utilizzare la proprietà prototipo dei costruttori. Onestamente, se la programmazione funzionale è ciò che desideri, sceglierei un linguaggio conosciuto rigorosamente per questa capacità.

Non ricordo chi l'abbia detto, ma JavaScript è stato chiamato "Schema con sintassi Algol". Quindi per l'apprendimento di Scheme / Lisp, Javascript non è un brutto inizio. Nota però che linguaggi funzionali come Lisp sono abbastanza diversi dai linguaggi funzionali puri, come Haskell.

Oltre a " funzioni di prima classe " (Nel senso che le funzioni sono valori che possono essere assegnati a variabili), l'ambito lessicale è anche parte integrante di ciò che rende un linguaggio funzionale.

Javascript per ordini superiori e The Little Javascripter è già stato menzionato. Sono entrambi testi eccellenti. Inoltre, Programmazione di ordini superiori in Javascript potrebbe essere un inizio più semplice.

Sebbene javascript supporti FP in una certa misura, non lo incoraggia direttamente. Ecco perché esistono progetti come Functional di Oliver Steele , per colmare le lacune. Quindi non lo consiglierei per l'apprendimento del FP. Dai un'occhiata a F # invece.

Consiglierei di leggere The Little Schemer , che è un libro abbastanza sottile sulla ricorsione ed è una buona introduzione allo stile funzionale. Sebbene sia focalizzato su Scheme, può essere facilmente applicato a JavaScript, vedi http://javascript.crockford.com/ little.html . L'ho trovato davvero utile nel mio sviluppo di JavaScript, anche se alla fine diventa piuttosto complicato.

Javascript è un linguaggio multi-paradigma. Se il tuo obiettivo è imparare concetti linguistici funzionali, prova a iniziare con un linguaggio funzionale puro come OCaml o < a href = "http://www.haskell.org/" rel = "nofollow noreferrer"> Haskell .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top