ventajas programacion online funcional desventajas desde curso haskell f# functional-programming lisp

haskell - programacion - ¿Alguien tiene alguna recomendación para comenzar en la programación funcional?



programacion funcional ventajas y desventajas (19)

"Cómo diseñar programas": http://www.htdp.org/

Por cierto, ¿cuáles son tus objetivos?

Estoy buscando algunos libros electrónicos que me ayudarán a aprender sobre programación funcional. Aún no he decidido qué idioma usaré, pero he notado una gran cantidad de prejuicios hacia LISP, Haskell y F # entre la comunidad en StackOverflow. Hasta el momento, no estoy seguro de qué dirección tomaré, pero ¿alguien puede recomendar algún eBook en particular sobre el tema? Además, si alguien pudiera presentar un argumento convincente para el cual el lenguaje funcional sería el más interesante de seguir, estaría más interesado en escuchar su opinión.

Estoy particularmente interesado en los libros electrónicos porque me las arreglé para obtener un Sony eBook Reader para Navidad y estoy buscando cargarlo con material útil para mi búsqueda interminable para convertirme en un mejor programador.


¿Tal vez una opción es desplegar toda la versión en línea de Real World Haskell ?

Es un buen libro para aprender Haskell, pero podría ser necesario combinarlo con un libro más general sobre programación funcional.


Comenzaría con Lisp (específicamente Scheme) porque es simple; tiene una sintaxis muy simple y ningún sistema de tipo estático del que preocuparse.

La Estructura e Interpretación de los Programas de Computación no solo le presentará a Scheme, sino que le enseñará los principales paradigmas de programación. El texto completo está disponible bajo una licencia de Creative Commons.

Después de eso, le resultará más fácil aprender las características adicionales de Haskell, es decir, una sintaxis más elaborada, evaluación diferida y un potente sistema de tipos.


De ninguna manera soy un experto en esto, pero personalmente creo que comenzar con un plan puede ser una buena idea. Por lo que sé, el esquema es una versión simplificada de LISP, piensa en él como LISP pero solo con los elementos esenciales. Creo que la sintaxis del esquema es extremadamente pura, hay que pasar el paréntesis, pero realmente me ayudó a sentir la programación funcional, sin tener que aprender muchas características del lenguaje.


Dos libros geniales:

"Estructura e interpretación de programas informáticos" (por Abelson y Sussman) y "Conceptos, técnicas y modelos de programación informática" (por Peter Van Roy y Seif Haridi).

Ambos cubren mucho más que solo la programación funcional.


Empecé a seguir las videoconferencias de Estructura e Interpretación de Programas de Computadora , y creo que son maravillosas. Adoptan Scheme, que es una variante de LISP, como el lenguaje de programación. Pero ese no es el objetivo del curso: se trata de todo el concepto de "informática" y sus implicaciones.



Lisps son los únicos con una sintaxis regular en el núcleo y estándares bien definidos (en el caso de CL y Scheme). Ellos compensan un viaje iluminador.

Recomiendo Common Lisp.

Hay buenos y gratuitos libros para principiantes, echa un vistazo a "Successful Lisp" de Lamkins y "Practic Common Lisp" de Seibel:


Me gustaría ir con "The Joy of Clojure".

Supongo que ya sabes Java. Clojure se ejecuta en la JVM, es puramente funcional (con algunas excepciones que están ahí para facilitar la programación concurrente) y es un ceceo. Tiene todas las ventajas de los lisps mencionados anteriormente (Uh ... no importa la optimización de llamadas de cola), con algunas ventajas enormes como compatibilidad con Java, estructuras de datos persistentes y una comunidad grande y vibrante. Si quieres aprender algo con lo que algún día puedas trabajar profesionalmente, ve con Clojure (o F #, si puedes soportar .net).

http://www.manning.com/fogus/


Obviamente, depende.

¿Está familiarizado con C # y .Net framework? Si es así, te dará un puntapié inicial usando F #. Si tienes Visual Studio, también puedes jugar con F #, así que esa es otra curva de aprendizaje aplanada.

También depende si solo buscas ''grok'' programación funcional para ampliar tus horizontes, o realmente usarlo en algún momento. Si solo está comprando, comience en cualquier lugar, pero si tiene la intención de usarlo, elija algo que sea compatible con su marco actual.

Mis 2 centavos / peniques


Para una transición de la programación imperativa, sugeriría Chris Smith Programing F # . Segundo comentario de A. Rex arriba sobre los resources Haskell y otros miembros sobre el resources .


Podría ser criticada por ello, pero digo ir por Ruby. Es un lenguaje de OO funcional híbrido muy agradable y moderno, y lo introducirá suavemente en el mundo de la programación funcional. O cualquier otro idioma con cierres y funciones de orden alto (tiene que ser escrito dinámicamente o con inferencia de tipo, de lo contrario es muy difícil escribir código funcional).

Una vez que te sientas cómodo con Ruby FP, o si no quieres escuchar mi mejor consejo, prueba algo como Scheme. Es un lenguaje elegante y amable.

Si comienzas con Common Lisp u Ocaml o Erlang o especialmente con Haskell, lo más probable es que te asustes y te sientas perdido, por diferentes razones. Si te sientes cómodo con Scheme, deberías probar estos, pero realmente no recomendaría comenzar con ellos. Pocas personas van muy lejos de esta manera.


Realmente encontré valor en A gusto de Haskell . Es una charla dada por Simon Peyton Jones. Es una muy buena descripción general y una primera mirada al lenguaje, dirigida a programadores que no son de FP.

Parte 2 de la charla y un PDF de las diapositivas . La cámara nunca muestra las diapositivas, por lo que el PDF realmente ayuda.


Recomendaría cualquiera de los dialectos ML (Estándar ML o OCaml son buenos) para un idioma.

Tuvieron una gran influencia en Haskell y son una introducción algo más amable a FP que Haskell.


Recomiendo a Haskell . Consulte esta otra pregunta de SO: Primeros pasos con Haskell .

Razones a favor de Haskell:

  • Desde una perspectiva personal primero: pasé una gran parte de mis primeros años de programación pensando en diseñar mi propio lenguaje de programación. (Por ejemplo, recomiendo mucho el libro de texto Programming Language Pragmatics ). Cuando conocí a Haskell por primera vez, me di cuenta de que incorporaba muchas de las ideas que tenía, y muchas más, y todas mucho mejor de lo que podría haberlo hecho yo mismo.
  • Es una implementación muy pura de ideales funcionales: perezoso (no estricto) y (polimórficamente) tipado estáticamente. ¡Sin efectos secundarios!
  • Su sistema de tipos podría cambiar su visión de los sistemas de tipos. (La inferencia tipo Hindley-Milner es asombrosa)
  • Su visión alternativa de la programación orientada a objetos y el polimorfismo es genial.

Lisp es también una buena opción. Razones a favor de una variante de Lisp:

  • Históricamente, el primer lenguaje de programación funcional (o el primero enorme).
  • La cosmovisión "todo es una lista" es muy minimalista, simple y hermosa.

Si elige una variante de Lisp, recomiendo Scheme .

No he usado OCaml o Ruby, pero algunos de mis amigos los juran por ellos, aunque uno podría argumentar cuán funcionales son. Por otro lado, su naturaleza de "multi-paradigma" los hace muy convenientes en la práctica.

Para concluir, le sugiero que elija un idioma siguiendo el consejo de Alan Perlis: "No vale la pena conocer un idioma que no afecte a su forma de pensar acerca de la programación". Lisp y Haskell cambiaron mi mundo. Espero que no importa el idioma que elijas, cambie tu mundo.



Supongo que elegiste Erlang o Lisp. (Forth) Ahí tienes los idiomas más mindbending que conozco.

¿A dónde debería ir después de Erlang, Lisp y Forth, por favor deje un comentario.


Uno de los mejores tutoriales para la programación funcional (un amigo me dio) es ¡ Aprende a ser un Haskell para lo bueno! . Este tutorial es sobre Haskell, pero los conceptos básicos son muy buenos presentados en el orden correcto. Lo encontré muy claro.


Práctico, Common Lisp es un fantástico libro electrónico si te interesa bucear en Lisp. Es bastante diferente a muchos idiomas, pero tuve ganas de presionarme para aprender que fue una de las experiencias más gratificantes en mi carrera de programación. La sintaxis limitada permite un lenguaje altamente flexible que es relativamente fácil de aprender, pero conceptualmente tomará un tiempo para que su mente se concentre.