¿Cómo se describen los ponentes de Codemotion?: Un pequeño proyecto personal con RamdaJS

31822116903_cf19147855_o.jpg

Imagen de portada de Rachel Hahs

De vez en cuando, estás en la cama y… ¡Eureka! Una idea nueva. Hay veces que esas ideas son proyecto personales demasiado largos y no llegas a ejecutarlos, y hay otras veces que una idea surge y te permite hacer algo pequeño en un par de horas a poder ser. Con los tiempos tan ajustados que tenemos para todo, prefiero que me surjan estas pequeñas ideas. Hoy os traigo la ejecución de una de estas pequeñas ideas:

Hace una semana salió la agenda oficial de la Codemotion 2017, allí muchos conocidos y conocidas, nos contarán cosas sobre desarrollo, metodología y buenas prácticas. Una de las cosas que te pide la organización a la hora de registrar una charla, es la de describirte a ti mismo en unas cuantas frases.

Tenía curiosidad por saber cómo se describían los ponentes de esta próxima Codemotion. El lenguaje, la forma en la que nos expresamos, las palabras que utilizamos pueden ayudarnos a entender mejor a una persona, a un sector o a una sociedad. Por tanto, me parecía un buen ejercicio y quizá podía resultar bastante curioso para el que lo leyera.

Ya os digo que los resultados son los esperados y que con la poca muestra que podíamos llegar a tener, no he sacado ninguna conclusión extraordinaria, sin embargo me he divertido mucho en este miniproyecto.

Os explico a continuación cómo lo he hecho:

Read More

Programación Funcional en JavaScript: La memoización

8540563633_e4baebcb26_c

Imagen de Lori-B.

El viaje se termina. Con esta última entrada sobre optimización ponemos punto y final a la serie sobre programación funcional.

Si en la penúltima entrega introdujimos los problemas de la programación funcional en cuanto a rendimiento, hoy voy a hablaros de un mecanismo que puede ayudarnos a evitar cómputos y evaluaciones innecesarias: la memoización. Un término muy arraigado a este estilo de programación.

Si llevas conmigo desde Octubre, no creo que quieras perderte esta última entrada. Terminemos esto bien:

Read More

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: La mónada IO

c2yd4goxuaef6sp

Terminamos esta serie de patrones funcionales con una de las últimas mónadas que vamos a estudiar en esta serie: la mónada IO.

Después de estudiar cuál era la mejor manera de poder encadenar la ejecución de funciones sobre un entorno seguro con Maybe y Either, es el turno para que nos detengamos en cómo podemos hacer que las entradas y salidas de nuestras aplicaciones se encuentren en un contexto funcional. Veremos como las entradas y salidas se convierten en un coladero de efecto laterales y como IO nos salvaguarda en cierta medida.

Read More

Programación Funcional en JavaScript: La mónada Either

la-la-land-featured-image-gosling-stone.jpg

Descubrimos en el post anterior cómo concatenar funciones evitando la incómoda comprobación de ‘nulls’. Hicimos eso delegando el trabajo en una estructura de datos denominada mónada Maybe.

Explicamos las ventajas que tenía su uso y como esta estructura nos permite realizar aplicaciones seguras. Sin embargo, pudimos ver que era un estructura que no favorecía la detención de excepciones por no saberse donde se generaba dicho error.

Este problema será resuelto esta semana por una de las mónadas que vamos a presentar en esta serie: la mónada ‘Either’.

Read More

Programación Funcional en JavaScript: La mónada Maybe

Como vimos, los funtores nos abren un mundo de posibilidades. La estructura que presentamos en el post anterior nos ayudaba a la hora de tener entornos controlados y seguros que pudieran encadenarse y componerse.

Sin embargo, veremos que es solo el principio de lo que necesitábamos en realidad. La estructura de datos que presentamos tiene ciertos inconvenientes e incomodidades que vamos a solucionar con un nuevo patrón de diseño funcional llamado mónada.

Las mónadas suelen verse como un concepto complejo y demasiado abstracto. Esa leyenda esotérica es una de las razones por las que muchos desarrolladores acaban huyendo de la programación funcional. Su parte teórica es compleja, pero con usos prácticos creo que conseguiremos transmitir su gran importancia en el mundo funcional. Adelante:

Read More

Programación Funcional en JavaScript: Los combinadores

17154466027_a6cfef91ed_k.jpg

Ponemos punto y final al bloque sobre modularidad y reusabilidad de código con este nuevo post. En esta ocasión vamos a hablar sobre un concepto muy ligado a la composición de programas por medio de funciones puras: los combinadores.

Los combinadores nacen de la lógica combinatoria y nos ayudan a orquestar todo el entramado de funciones que hemos ido creando. Una de las objeciones que se suele poner a la programación funcional es la dificultad para realizar ciertas tareas comunes que se suelen hacer de una manera bastante fácil en lenguajes imperativos. Los combinadores nos van a ayudar en estas tareas.

Los combinadores son funciones de orden superior sin lógica de negocio interna, simplemente son un mecanismos que permiten que podamos combinar artefactos, en este caso funciones u otros combinadores. Son las funciones que tienden puentes entre nuestros módulos o programas. Nos serán de gran ayuda para conseguir mayor expresividad en el código.

A lo largo del post, presentaremos los 5 combinadores más comunes en programación funcional. Como podréis ver si profundizáis en el tema, no serán los únicos, existen muchos más.

No me demoro. Os dejo con los combinadores:

Read More