Libro accessibile sulla programmazione funzionale [chiuso]


17

Sto cercando un libro che spieghi la programmazione funzionale in modo accessibile. Inoltre preferirei uno che non sia troppo noioso e che non usi un linguaggio esoterico.

Idealmente, utilizzerà esempi che dimostrano situazioni in cui la programmazione funzionale porta a soluzioni più eleganti o più semplici degli approcci imperativi.

Ho una quantità ragionevole di esperienza di programmazione, ma nessuna conoscenza della programmazione funzionale. Grazie per eventuali suggerimenti


3
Sono curioso di sapere se ci fosse un linguaggio particolare che avevi in ​​mente quando hai detto che non volevi usare un "linguaggio esoterico".
MatrixFrog,

@MatrixFrog: Sono sicuro al 99% che per "linguaggio esoterico" intendesse Scheme. Probabilmente sapeva che il SICP sarebbe stato il primo libro raccomandato.
user16764,

@ user16764 Ma "accessibile"? Sarebbe How To Design Programs (o la 2a ed. ) Basata sulla logica fornita dagli autori in The Structure and Interpretation of the Computer Science Curriculum .
Mark C

Risposte:



10

Se ti piacciono le lingue tipicamente statiche e [parentesi quadre]:

Haskell, sebbene piuttosto pesante sulla purezza del paradigma di programmazione, ha una delle migliori introduzioni a un linguaggio che io abbia mai visto sotto forma di "Learn You a Haskell For Great Good!". Il modulo del libro è facoltativo in quanto il sito Web è gratuito ma questo è un autore che non mi ha affatto deluso. Real World Haskell è buono ma è davvero meglio prendere come seguito di [Learn..Bood]. RWH è anche gratuito con qualità cartacea opzionale.

Da Haskell è possibile passare facilmente ad altre varianti ML come F # o OCaml, entrambe le quali sono più ampiamente utilizzate. Per il bordo sanguinante ATS .

Se ti piace (e Parentesi Dynamic_Typing):

Lo schema è il più funzionalmente orientato tra i due principali dialetti Lisp, più piccolo e più puro del Common Lisp ma meno utilizzato nell'industria. Personalmente mi piace La struttura e l'interpretazione dei programmi per computer, ma è un libro piuttosto teorico, che mentre un po 'difficile da ingoiare ti renderà un programmatore migliore.

Se preferisci Common Lisp o Practical Common Lisp o Land of Lisp sembrano buoni investimenti, il primo è gratuito online e il secondo è abbastanza economico e, soprattutto, focalizzato sul gioco. È più potente sebbene meno puro di Scheme.

Da questi, puoi espandere in Clojure se vuoi. È Lisp per JVM, quindi è più facile da implementare e meglio in grado di difendersi dalle accuse di essere "accademico" che Clojure può implementare su .NET e passare anche a Javascript. Per .NET nativo, prova IronScheme .

Puoi anche dividere la differenza e imparare entrambe le cose contemporaneamente con Write Yourself a Scheme in 48 Hours in Haskell.


Se vai con SICP ci sono anche molte lezioni video sul libro, soprattutto queste: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham è un buon scrittore e ha un libro gratuito su perchè lisp è l'ape paulgraham.com/onlisptext.html
simoraman

1
Sto leggendo la versione online gratuita di Real World Haskell e la capacità di leggere i commenti durante la lettura del testo è estremamente utile. Quindi, anche se ottieni la versione cartacea, potresti voler leggere anche la versione online. Alcune parti sono solo meno confuse con i commenti.
MatrixFrog,

4

La mia fonte preferita è la Gentle Introduction to Haskell . Ho letto parte di Learn you a Haskell e O'Reilly Real-World Haskell e Craft of Functional Programming di Simon Thompson , ma sinceramente sto facendo meglio con l'intro gentile. È un po 'come K&R di Haskell: un documento sottile prodotto dai creatori della lingua. Né prolisso, né condiscendente, ma non cercando di sopraffarti con la loro erudizione, nessuno dei due.


1
L' introduzione delicata è molto diretta e senza fronzoli, proprio come un forte pugno allo stomaco. È delicato nel senso che fa violenza senza malizia, non cercando né di coccolare né di dominare; piuttosto, nella speranza che il lettore possa venire a scoprire la forza interiore necessaria per reagire.
CA McCann,

1
Hmm, sensei, non sono sicuro che avrei usato quelle immagini, ma qualunque cosa. Non è violento né la forza interiore è un problema, ma concordo con il resto. "Gentle" è un po 'divertente qui. Come "proposta modesta".
JohnL4,

1
Sì, stavo prendendo un po 'di ... libertà creativa minore lì. ;] Ci vuole un po 'di forza mentale, però, per superare qualcosa di così schietto rispetto ad altro materiale introduttivo in questi giorni (per qualsiasi lingua, non solo Haskell). Tuttavia, il confronto con K&R mi fa pensare che tu sia abituato a quel tipo di stile. In genere ho ipotizzato che "gentile" si intenda in contrasto con l'apprendimento del Rapporto Haskell e una pila di articoli di ricerca.
CA McCann,

1

http://hop.perl.plover.com/ include un libro che puoi scaricare gratuitamente. Spiega come utilizzare molte tecniche funzionali in Perl.

La maggior parte di ciò che dice può essere facilmente tradotta in JavaScript, Ruby o Python.


1

Attualmente sto imparando la programmazione funzionale da solo. Comunque sto imparando usando Haskell.

Ecco un paio di libri online (puoi anche acquistarli in iirc con copertina rigida)

Haskell non è esteroico e sta diventando sempre più mainstream (probabilmente non come LISP o Erlang). Tuttavia è un linguaggio funzionale puro e ti costringerà ad imparare il paradigma della programmazione funzionale. Al contrario di un approccio mezzo funzionale metà imperativo che otterrai usando un linguaggio non puramente funzionale.

Le persone hanno sviluppato WebServer, Bittorrent Client e alcune applicazioni del mondo reale usando haskell. Tuttavia, lo sto usando personalmente per apprendere i concetti e poi lo applico a C # & F # che finora funziona alla grande.

Godere.


1

Ho sentito parlare più volte di "Struttura e interpretazione dei programmi per computer". È un vero libro, quindi potresti volerlo trovare anche su Paper, vedi http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871 .

È disponibile gratuitamente qui http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) e ci sono anche video delle lezioni ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )


SICP è stato bello, ma non accessibile nella mia esperienza.
Willem,

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.