- ¿Es Javascript un lenguaje funcional? Sé que tiene objetos y también puedes hacer POO con él, pero ¿es también un lenguaje funcional? ¿Se puede usar de esa manera?
- Usted sabe cómo OOP se convirtió / parece la próxima evolución en la programación, ¿eso significa que 'Programación funcional' es la próxima evolución? más para los moderadores que los contribuyentes;)).
- Aprendo mejor a través de ejemplos, tal vez alguien podría mostrar que realizo la misma tarea de una manera OOP y luego de una manera de Programación Funcional para que yo entienda y compare lo que hace / es la programación funcional.
Realmente no entiendo completamente 'Programación funcional' para ser honesto: P Así que comparar Javascript con la programación funcional puede ser totalmente incorrecto.
Para poner la programación funcional en términos simples: ¿es simplemente el beneficio de la abstracción mediante funciones anónimas?
¿O es así de simple? De una manera simple, OOP es el beneficio de la abstracción a través de objetos, pero creo que eso es un poco demasiado simplista para describir OOP.
¿Es este un buen ejemplo de programación funcional? ...
Javascript OOP Ejemplo:
// sum some numbers
function Number( v )
{
this.val = v;
}
Number.prototype.add( /*Number*/ n2 )
{
this.val += n2.val;
}
Ejemplo de programación funcional:
function forEach(array, action)
{
for (var i = 0; i < array.length; i++)
action(array[i]);
}
function add(array)
{
var i=0;
forEach(array, function(n)
{
i += n;
});
return i;
}
var res = add([1,9]);
Or is that way too simple?Yeap, lo es. Las funciones anónimas a veces se asocian con lenguajes funcionales y lenguajes de paradigmas múltiples que favorecen la programación funcional, pero no son una característica única de los lenguajes funcionales. Pero si usted los ve como una implementación de λ-cálculo, así que son una parte fundamental de la programación funcional, el ser principal punto de que no es tan simple :)
I know it has objects & you can do OOP with it alsoNo puedes. Es una programación basada en prototipos que elimina la distinción entre clase y objeto. Personalmente, considero que la programación basada en prototipos tiene fallas en este nivel básico.