Programación Funcional en JavaScript: La evaluación perezosa

32649683842_e66726ea84_kImagen de Stefan K.

Terminada la parte de patrones funcionales, entramos en una miniserie de dos post sobre optimización funcional.

Puede que no te hayas percatado – o que si – pero la programación funcional nos va a suponer un reto a la hora de optimizar recursos. Otra de las grandes pegas que siempre le han puesto sus detractores se debe a que la programación funcional es un estilo bastante devorador de recursos y tiempo.

Yo sinceramente sería cauto. Si pensamos fríamente, cualquier tipo de abstracción que queramos realizar desde un lenguaje de programación va a minar nuestras posibilidades computacionales nos guste o no. La abstracción en lenguajes declarativos es bastante grande, pero no muy diferente a lo que a veces nos podamos encontrar en abstracciones imperativas. Como todo, hacer uso de ciertas técnicas va a ser una cuestión de equilibrio entre lo que nos conviene a nosotros y lo que le conviene al computador.

Por si esto no fuera poco para los detractores, como hemos ido viendo, JavaScript tiene menos funcionalidades funcionales de las que nos gustaría, lo que supone tener que realizar una gran cantidad de abstracciones ad hoc para que el comportamiento sea el correcto en el paradigma. Esto supone un sobreesfuerzo de recursos. Como veremos, esto es posible de paliar, pero tenemos que tener en cuenta que la programación funcional no es el maná, también tiene sus problemas (benditos problemas).

En fin, ¿Estudiáis un poco de optimización conmigo? ¿Si? Pues adelante:

Read More

Programación funcional en JavaScript: Las funciones

22400318_3008cc30d1_b

Encontramos unas cajas en el desván del señor Klein.

Para nuestra sorpresa, las cajas eran capaces de transformar unos objetos en otros. Si en una caja insertaba arena de la playa, al instante obtenía una piedra dura y rojiza. Si insertaba en otra caja esta piedra, obtenía una pipeta de oro. Si mezclaba las dos cajas podía convertir mi tierra en oro.

¡Eran mágicas!

Al igual que en el cuento anterior, las funciones tienen algo de mágico dentro de todo sistema. Si como hemos dicho, para seguir un estilo funcional, necesitamos crear funciones puras y sin efectos colaterales, podemos asegurarnos que dado un objeto, podamos transformarlo siempre en el mismo objeto diferente sin saber cómo se ha hecho.

Después de haber hecho un repaso sobre qué es la programación funcional y cómo podemos aprovecharnos de ciertas funcionalidades de la orientación a objetos, hoy terminamos la introducción de esta serie hablando sobre el eje central de este paradigma: Las funciones.

En este post hablaremos de cómo se comportan las funciones en JavaScript y que funcionalidades especiales nos proporciona el lenguaje para que podamos sacarle un mayor provecho en el estilo funcional.

Nota: Recordaros que esta serie de post sobre programación funcional en JavaScript no habría sido posible sin la ayuda que me está aportando este grandísimo libro. Os lo recomiendo encarecidamente como recurso de cabecera.

Read More