Libro accesible sobre programación funcional [cerrado]

17

Estoy buscando un libro que explique la programación funcional de manera accesible. También preferiría uno que no sea demasiado aburrido y que no use un lenguaje esotérico.

Idealmente, utilizará ejemplos que demuestren situaciones en las que la programación funcional conduce a soluciones más elegantes o más simples que los enfoques imperativos.

Tengo una cantidad razonable de experiencia en programación, pero no tengo conocimientos de programación funcional. Gracias por cualquier sugerencia

Antonio2011a
fuente
3
Tengo curiosidad por saber si había un idioma en particular que tenía en mente cuando dijo que no quería usar un "lenguaje esotérico".
MatrixFrog
@MatrixFrog: estoy 99% seguro de que por "lenguaje esotérico" se refería a Scheme. Probablemente sabía que el SICP sería el primer libro recomendado.
user16764
@ user16764 ¿Pero "accesible"? Eso sería Cómo diseñar programas (o la 2ª ed. ) En base a la justificación dada por el (los) autor (es) en The Structure and Interpretation of the Computer Science Curriculum .
Mark C

Respuestas:

10

Si le gustan los idiomas y [paréntesis] estáticamente escritos:

Haskell, aunque es bastante pesado en la pureza del paradigma de programación, tiene una de las mejores introducciones a un lenguaje que aún he visto en forma de "¡Aprende Haskell por un gran bien!". El formulario de libro es opcional ya que el sitio web es gratuito, pero este es un autor que no me decepcionó en absoluto. Real World Haskell es bueno, pero realmente es mejor tomarlo como seguimiento de [Learn..Good]. RWH también es gratis con papel opcional.

Desde Haskell, puede pasar fácilmente a otras variantes de ML como F # u OCaml, las cuales son más utilizadas. Para el borde sangrante ATS .

Si lo desea (y paréntesis de tipaje dinámico):

Scheme es el más funcionalmente orientado de los dos dialectos principales de Lisp, más pequeño y más puro que Common Lisp pero menos utilizado en la industria. Personalmente, me gusta The Structure and Interpretation of Computer Programmes, pero es un libro bastante pesado en teoría, que si bien es un poco difícil de tragar, te convertirá en un mejor programador.

Si prefiere Common Lisp, Practical Common Lisp o Land of Lisp parecen buenas inversiones, la primera es gratuita en línea y la segunda es bastante barata y, lo que es más importante (para algunos), se centra en el juego. Es más poderoso aunque menos puro que Scheme.

De estos, puede expandirse a Clojure si lo desea. Es Lisp para la JVM, por lo que es más fácil de implementar y puede defenderse mejor de los cargos de ser "académico". Clojure puede implementarse en .NET y también pasar a Javascript. Para .NET nativo, prueba IronScheme .

También puede dividir la diferencia y aprender ambas cosas a la vez con Write Yourself a Scheme in 48 Hours in Haskell.

Ingeniero mundial
fuente
Si vas con SICP también hay muchas conferencias en video sobre el libro, las más famosas son: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham es un buen escritor y tiene un libro gratuito sobre por qué lisp es las rodillas de la abeja paulgraham.com/onlisptext.html
simoraman
1
Estoy leyendo la versión gratuita en línea de Real World Haskell, y la capacidad de leer los comentarios mientras leo el texto es extremadamente útil. Entonces, incluso si obtiene la versión en papel, es posible que también desee leer la versión en línea. Algunas partes son mucho menos confusas con los comentarios.
MatrixFrog
4

Mi fuente favorita es la Introducción Gentil a Haskell . Leí parte de Learn you a Haskell and the O'Reilly Real-World Haskell and Simon Thompson's Craft of Functional Programming , pero honestamente me está yendo mejor con la suave introducción. Es algo así como el K&R de Haskell: un documento delgado producido por los creadores del lenguaje. No es prolijo, no condescendiente, pero tampoco intenta abrumarte con su erudición.

JohnL4
fuente
1
La Introducción Suave es muy directa y sin sentido, muy similar a un puñetazo firme en el estómago. Es gentil en el sentido de que ejerce violencia sin malicia, no busca mimar ni dominar; más bien, con la esperanza de que el lector pueda descubrir la fuerza interior necesaria para defenderse.
CA McCann
1
Hmm, sensei, no estoy seguro de usar esas imágenes, pero lo que sea. No es violento ni la fuerza interior es un problema, pero estaré de acuerdo con el resto. "Gentle" es un poco chistoso aquí. Como "propuesta modesta".
JohnL4
1
Sí, me estaba tomando una ... pequeña libertad creativa allí. ;] Sin embargo, se necesita un poco de fortaleza mental para superar algo tan contundente en comparación con otro material introductorio en estos días (para cualquier idioma, no solo Haskell). Sin embargo, la comparación con K&R me hace pensar que estás acostumbrado a ese tipo de estilo. Por lo general, he asumido que "amable" se entiende en contraste con el aprendizaje del Informe Haskell y una pila de trabajos de investigación.
CA McCann
1

http://hop.perl.plover.com/ incluye un libro que puedes descargar gratis. Explica cómo usar muchas técnicas funcionales en Perl.

La mayor parte de lo que dice se puede traducir fácilmente a JavaScript, Ruby o Python.

btilly
fuente
1

Actualmente estoy aprendiendo programación funcional yo mismo. Sin embargo, estoy aprendiendo a usar Haskell.

Aquí hay un par de libros en línea (también puede comprarlos en iirc de tapa dura)

Haskell no es esteroico y se está volviendo más convencional (posiblemente no tan convencional como LISP o Erlang). Sin embargo, es un lenguaje funcional puro y lo obligará a aprender el paradigma de programación funcional. A diferencia de un enfoque mitad imperativo mitad funcional que obtendrá usando un lenguaje no puramente funcional.

La gente ha desarrollado servidores web, clientes de Bittorrent y algunas aplicaciones del mundo real utilizando haskell. Sin embargo, lo estoy usando personalmente para aprender los conceptos y luego aplicarlo a C # y F #, que hasta ahora ha funcionado fantástico.

Disfrutar.

Justin Shield
fuente
1

Escuché cosas buenas sobre "Estructura e interpretación de programas de computadora" varias veces. Es un libro real, por lo que es posible que también desee obtenerlo en papel, consulte http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871 .

Está disponible gratuitamente aquí http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) e incluso hay videos de las conferencias ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )

Peter Kofler
fuente
SICP fue agradable, pero no accesible en mi experiencia.
willem
1

Programación en Haskell

Puede que no decidas comprarlo, pero la página de inicio del libro (ver arriba) enlaza con 13 videos del canal 9 en la programación de Haskell.

usuario16764
fuente