ultima - Javascript como un lenguaje funcional
ultima version de javascript (8)
Además, Eloquent JavaScript: capítulo de programación funcional .
Estoy buscando entender los conceptos de programación funcional.
He usado Javascript durante muchos años para el scripting del lado del cliente en aplicaciones web y, aparte de usar prototipos, todo fue simple manipulación DOM, validación de entrada, etc.
Últimamente, he leído que Javascript es uno de los lenguajes que admite la programación funcional.
Con mi familiaridad y experiencia con Javascript, mi preferencia es usarlo para aprender programación funcional. Espero poder concentrarme más en los principales conceptos funcionales y no enredarme o distraerme con una sintaxis completamente nueva.
Entonces, en resumen, ¿es Javascript una buena opción para aprender conceptos de programación funcional? ¿Qué capacidades en Javascript son relevantes / apoyan la programación funcional?
Aunque javascript admite FP hasta cierto punto, no lo fomenta directamente. Es por eso que existen proyectos como Oliver Steele''s Functional , para llenar los vacíos. Entonces no lo recomendaría para aprender FP. Echa un vistazo a F # en su lugar.
Diría que aunque puede comprender rápidamente algunos conceptos de programación funcional con JavaScript, usar JavaScript consistentemente como un lenguaje de programación funcional no es una práctica común. Al menos no obviamente común. La mayoría de las personas no publican tutoriales que señalen cómo hacer programación funcional con JavaScript; la que señaló marxidad es en realidad un ejemplo bastante decente, pero no encontrará mucho de eso. Los aspectos funcionales a menudo no son evidentes, como cuando las personas usan cierres en JavaScript, pero no saben que lo están haciendo.
La idea de pasar dos funciones como argumentos a una tercera función y luego tener el valor de retorno como una ejecución relacionada con las dos primeras funciones es una técnica avanzada que casi siempre aparece solo en el núcleo de bibliotecas completas como jQuery. . Las funciones anónimas autoejecutables y similares han ganado terreno, pero aún no se usan de manera consistente. La mayoría de los tutoriales a menudo se centran en las capacidades de OO de JavaScript, como la forma de crear propiedades y métodos, el alcance, el control de acceso y también cómo usar la propiedad prototipo de los constructores. Honestamente, si la programación funcional es lo que quieres, entonces elegiría un idioma conocido estrictamente para esta capacidad.
JavaScript es compatible con las funciones de primera clase. Consulte Usar técnicas de programación funcional para escribir un JavaScript elegante .
No recuerdo quién lo dijo, pero javascript ha sido llamado "Esquema con sintaxis de Algol". Entonces, para aprender Scheme / Lisp, Javascript no es un mal comienzo. Sin embargo, tenga en cuenta que los lenguajes funcionales como Lisp son bastante diferentes de los lenguajes funcionales puros, como Haskell.
Además de las "funciones de primera clase" (lo que significa que las funciones son valores, que se pueden asignar a variables), el alcance léxico también es una parte inherente de lo que hace un lenguaje funcional.
Ya se ha mencionado el Javascript de orden superior y el Little Javascripter . Ambos son textos excelentes. Además, la programación de orden superior en Javascript puede ser un comienzo más fácil.
Yo recomendaría leer The Little Schemer , que es un libro bastante pequeño sobre la recursión y es una buena introducción al estilo funcional. Si bien está enfocado en Scheme, se puede aplicar fácilmente a JavaScript, consulte http://javascript.crockford.com/little.html . Lo encontré realmente útil en mi desarrollo de JavaScript, aunque se vuelve bastante complicado hacia el final.
Orden superior Javascript es una excelente forma de familiarizarse con los aspectos funcionales de javascript. También es una lectura relativamente corta en caso de que quiera mojarse los pies sin sumergirse en un libro más grande.