Solo porque las funciones son objetos de primera clase, hay cierres y funciones de orden superior, ¿merece Javascript ser llamado un lenguaje de programación funcional? Lo principal que creo que le falta es Pure Functions, y no se siente como otros lenguajes funcionales, como lisp (aunque esa no es realmente una buena razón para que no sea un lenguaje funcional ...)
javascript
functional-programming
terminology
hvgotcodes
fuente
fuente
Respuestas:
Repitiendo mi propia respuesta a una pregunta similar,
fuente
Yo diría que es un lenguaje multi-paradigmático.
EDITAR: es multi-paradigma e incluye construcciones funcionales.
fuente
Si estira y tuerce el término "programación funcional" hasta el punto de discusiones filosóficas, esta pregunta puede volver a estar abierta. Sin embargo, entonces terminas en el nivel de preguntas útiles como "¿C ++ es realmente un lenguaje de programación"?
La respuesta a su pregunta en un nivel más diario es "no" .
La programación funcional significa que el programa se conceptualiza como una evaluación de una función, en lugar de un flujo de control. El código es una descripción de funciones y no tiene un concepto inherente de flujo de control.
JavaScript tiene un flujo de control y está conceptualizado como un lenguaje imperativo. Desde su objetivo de diseño, claramente no es un lenguaje funcional.
fuente
El término lenguaje de "programación funcional" está tan sobrecargado en estos días que es casi inútil. Hay dos significados dominantes:
Elija su significado y luego la pregunta es responsable.
fuente
No creo que haya una definición concreta de programación funcional, sin embargo, muchas de las cosas que las personas consideran "programación funcional" se pueden hacer con javascript. Aquí hay un buen breve ejemplo en este artículo.
fuente
Para mí, Javascript es tanto un lenguaje imperativo como un lenguaje funcional, y puede elegir usarlo de cualquier manera, e incluso ( egad ) en ambos sentidos. O puede elegir usar un paradigma y nunca tocar el otro. Tu decides. Yo, como usted, no creo que Javascript deba llamarse un lenguaje funcional, ya que le permite entrar y salir del paradigma de programación funcional. Quizás si tuviera un pragma de algún tipo, limitarlo usando solo paradigmas de programación funcional, entonces sería útil, creo. Pero, en resumen, digo que es más un lenguaje imperativo / de procedimiento con algunas características de programación funcional incorporadas.
fuente
Tiendo a pensar que los lenguajes de programación no tienen un paradigma particular, sino que se prestan a ciertos paradigmas. Sin embargo, solo porque se prestan a un paradigma particular no significa que tenga que usar ese paradigma. Es muy posible escribir programas orientados a objetos en C y escribir programas imperativos en ML. No usar un cierto paradigma para resolver un problema porque el lenguaje no está diseñado para ello solo te limita artificialmente (por supuesto, aún debes tener en cuenta las limitaciones de un idioma al decidir si una solución en particular será una buena solución).
fuente
Bueno, no diría que es una programación funcional, pero luego lo haría decir que es orientado a objetos y justo hoy un amigo dijo que no lo pondría en ese estante tampoco.
Entonces, aunque no diría que es así, creo que hay espacio para la opinión. Tiene características clásicas de programación funcional, no tiene otras.
fuente
Javascript es a un punto. Realmente depende de cómo lo programes. Si codifico de manera OO, ¿no sería OO? Entonces, si solo codifica las cosas de manera 'funcional', sería funcional. Supongo que es un lenguaje de paradigmas múltiples, por lo que llamarlo solo una cosa no es del todo exacto.
fuente
@petraszd Reescribo un poco su código para obtener un "nuevo" para el operador:
Pero sé que de esta manera tiene desventajas para los bucles grandes ...
Pregunta relacionada sobre la optimización del recurtion de cola en JS
PD Publicado aquí porque tiene problemas con el formato del código al publicar como comentario
fuente
¡En Javascript, puedes hacer algo como esto!
He creado una página de github para demostrar este concepto y puedes clonar / ver mi implementación
fuente
Como sabemos, el lenguaje de programación funcional no permite cambiar o mutar los elementos (estado) de las funciones, pero en JavaScript está permitido en ese sentido, no es un lenguaje de programación funcional, aunque trata la función como ciudadanos de primera clase.
fuente
Lo que realmente odio en javascript (si intentas verlo como lenguaje FP) es esto:
Debe comprender el entorno de pila JS (no lo sé si es el término correcto) para comprender este comportamiento.
En el esquema, por ejemplo, simplemente no puede producir tal cosa (Ok, ok, con la ayuda de las referencias de los idiomas subyacentes, puede hacerlo):
fuente