Livre accessible sur la programmation fonctionnelle [fermé]

17

Je cherche un livre qui explique la programmation fonctionnelle de manière accessible. Je préférerais aussi un qui n'est pas trop ennuyeux et n'utilise pas un langage ésotérique.

Idéalement, il utilisera des exemples qui illustrent des situations où la programmation fonctionnelle conduit à des solutions plus élégantes ou plus simples que les approches impératives.

J'ai une expérience raisonnable en programmation, mais aucune connaissance en programmation fonctionnelle. Merci pour toutes suggestions

Antonio2011a
la source
3
Je suis curieux de savoir s'il y avait une langue particulière que vous aviez en tête lorsque vous avez dit que vous ne vouliez pas utiliser une "langue ésotérique".
MatrixFrog
@MatrixFrog: Je suis sûr à 99% que par "langage ésotérique", il voulait dire Schème. Il savait probablement que le SICP serait le premier livre recommandé.
user16764
@ user16764 Mais "accessible"? Ce serait How To Design Programs (ou le 2e éd. ) Basé sur la justification donnée par les auteurs dans The Structure and Interpretation of the Computer Science Curriculum .
Mark C

Réponses:

10

Si vous aimez les langages typés statiquement et les [parenthèses]:

Haskell, bien qu'il soit plutôt lourd sur la pureté du paradigme de programmation, a l'une des meilleures introductions à un langage que j'ai encore vu sous la forme de "Learn You a Haskell For Great Good!". La forme du livre est facultative car le site Web est gratuit, mais c'est un auteur qui ne m'a pas du tout déçu. Le monde réel Haskell est bon, mais il vaut mieux le prendre comme suivi de [Learn..Good]. RWH est également gratuit avec une qualité papier facultative.

Depuis Haskell, vous pouvez facilement passer à d'autres variantes ML comme F # ou OCaml, les deux étant plus largement utilisées. Pour l' ATS de pointe .

Si vous aimez (et les parenthèses Dynamic_Typing):

Le schéma est le plus orienté fonctionnellement des deux principaux dialectes Lisp, plus petit et plus pur que Common Lisp mais moins largement utilisé dans l'industrie. Personnellement, j'aime la structure et l'interprétation des programmes informatiques, mais c'est un livre assez théorique, qui, bien qu'un peu difficile à avaler, fera de vous un meilleur programmeur.

Si vous préférez Common Lisp, Common Lisp pratique ou Land of Lisp semblent être de bons investissements, le premier est gratuit en ligne et le second est assez bon marché et plus important (pour certains) axé sur le jeu. Il est plus puissant mais moins pur que Scheme.

À partir de ceux-ci, vous pouvez vous développer dans Clojure si vous le souhaitez. Il s'agit de Lisp pour la JVM, il est donc plus facile à déployer et mieux à même de se défendre contre les accusations d'être "académique". Clojure peut se déployer sur .NET et passer également à Javascript. Pour .NET natif, essayez IronScheme .

Vous pouvez également partager la différence et apprendre les deux à la fois avec Write Yourself a Scheme en 48 heures à Haskell.

Ingénieur du monde
la source
Si vous optez pour le SICP, il y a aussi beaucoup de conférences vidéo sur le livre, surtout celles-ci: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham est un bon écrivain et a un livre gratuit sur pourquoi lisp est les genoux de l'abeille paulgraham.com/onlisptext.html
simoraman
1
Je lis la version en ligne gratuite de Real World Haskell, et la possibilité de lire les commentaires tout en lisant le texte est extrêmement utile. Donc, même si vous obtenez la version papier, vous voudrez peut-être également lire la version en ligne. Certaines parties sont tout simplement moins déroutantes avec les commentaires.
MatrixFrog
4

Ma source préférée est la Gentle Introduction to Haskell . J'ai lu une partie de Learn you a Haskell and the O'Reilly Real-World Haskell and Simon Thompson's Craft of Functional Programming , mais honnêtement, je fais mieux avec la douce intro. C'est un peu comme K&R de Haskell: un document mince produit par les créateurs de la langue. Pas verbeux, pas condescendant, mais n'essayant pas non plus de vous submerger par leur érudition.

JohnL4
la source
1
L' introduction douce est très directe et sans fioritures, un peu comme un coup de poing ferme à l'estomac. Il est doux dans le sens où il fait violence sans méchanceté, ne cherchant ni à choyer ni à dominer; plutôt, dans l'espoir que le lecteur puisse découvrir la force intérieure nécessaire pour riposter.
CA McCann
1
Hmm, sensei, je ne suis pas sûr d'utiliser cette imagerie, mais peu importe. Ce n'est pas violent ni la force intérieure n'est un problème, mais je suis d'accord avec le reste. "Doux" est un peu drôle ici. Comme "proposition modeste".
JohnL4
1
Oui, j'y prenais une ... liberté créative mineure. ;] Cependant, il faut un peu de courage mental pour passer à travers quelque chose de si brutal par rapport à d'autres documents d'introduction de nos jours (pour n'importe quelle langue, pas seulement Haskell). Cependant, la comparaison avec K&R me fait penser que vous êtes habitué à ce genre de style. J'ai généralement supposé que «doux» est en contraste avec l'apprentissage du rapport Haskell et d'une pile de documents de recherche.
CA McCann
1

http://hop.perl.plover.com/ comprend un livre que vous pouvez télécharger gratuitement. Il explique comment utiliser de nombreuses techniques fonctionnelles en Perl.

La plupart de ce qu'il dit peut très facilement être traduit en JavaScript, Ruby ou Python.

btilly
la source
1

J'apprends actuellement la programmation fonctionnelle moi-même. Cependant, j'apprends en utilisant Haskell.

Voici quelques livres en ligne (vous pouvez également les acheter en couverture rigide iirc)

Haskell n'est pas estéroïque et devient plus courant (peut-être pas aussi courant que LISP ou Erlang). Cependant, il s'agit d'un langage fonctionnel pur et vous obligera à apprendre le paradigme de programmation fonctionnelle. Par opposition à une approche moitié impérative moitié fonctionnelle que vous obtiendrez en utilisant un langage non purement fonctionnel.

Les gens ont développé des serveurs Web, des clients Bittorrent et quelques applications du monde réel en utilisant haskell. Cependant, je l'utilise personnellement pour apprendre les concepts et l'appliquer ensuite à C # & F # qui fonctionne jusqu'à présent de manière fantastique.

Prendre plaisir.

Justin Shield
la source
1

J'ai entendu plusieurs fois de bonnes choses sur "Structure et interprétation des programmes informatiques". C'est un vrai livre, donc vous voudrez peut-être aussi le faire en papier, voir http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871 .

Il est disponible gratuitement ici http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) et il y a même des vidéos des conférences ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )

Peter Kofler
la source
SICP était agréable, mais pas accessible selon mon expérience.
willem
1

Programmation à Haskell

Vous pourriez ne pas décider de l'acheter, mais la page d'accueil du livre (voir ci-dessus) propose des liens vers 13 vidéos de la chaîne 9 sur la programmation Haskell.

user16764
la source