Image for post
Image for post

En el post anterior me adentré un poco en el mundo de la programación funcional (FP) explicando algunas de sus reglas, convenciones y ejemplo con dos de las funciones más usadas: curry y compose. Sin embargo me gustaría ir comentando casos prácticos para ver su verdadero potencial y el cómo puede facilitarnos reutilizar y optimizar en gran medida nuestro código. Hoy hablaré de los reducers o funciones reductoras.

Definiremos como reducer aquellas funciones que producirán un objeto en base a tres parámetros:

  • Una lista de valores o propiedades
  • Una función de transformación
  • Un valor inicial

Generalmente el caso más común es el de la función Array.prototype.reduce para generar un resultado en base a un array. …

Image for post
Image for post

Últimamente he estado empapándome cosillas sobre conceptos de programación funcional y tratando de aplicarlos a mi modo de escribir código. Para ser sincero, tengo que reconocer que al principio rechazaba un poco la idea ya que siempre acababa pensando en soluciones basadas en orientación a objetos. Pero gracias a Javascript empiezo a verlo de otro modo y a entender el potencial que tiene, sobre todo cuando necesitamos transformar cosas o reutilizar código.

Ya mencioné algunas de sus características en el capítulo Funciones I de Javascript, como las funciones recursivas y las funciones de orden superior y primera clase. …

Image for post
Image for post

Hoy quiero empezar una nueva serie de capítulos sobre una de las librerías de moda en el desarrollo web: React. El auge de esta librería es cada vez mayor, en 1 año ha pasado de ser una alternativa a Angular.js a sobrepasarlo con una gran ventaja. Pero expliquemos qué es React y por qué tiene tanta aceptación.

A diferencia de otros frameworks dónde se busca proveer casi todo lo posible para el usuario a base de patrones y un diseño de arquitectura mucho más cerrado (como puede ser Angujar.js 1.x y su MVC), React se limita a ser la parte que maneja la interfaz (o la “View” de un MVC) de nuestra aplicación. Lo que la hace tan potente es que es perfectamente adaptable a cualquier otra librería o framework que queramos usar. …

Image for post
Image for post

En la primera parte sobre programación asíncrona vimos en que consistía el paradigma, como lograr ejecutar contextos asíncronos con callbacks y como controlar dicha ejecución mediante eventos. En este capítulo veremos como lograr lo mismo mediante el uso de promises.

¿Qué son las promises?

En Javascript se conoce como promise (o promesa) al objeto devuelto por una función del cual aún no se conoce el resultado. ¿Cómo? ¿Y qué utilidad tiene no saber el resultado de algo? Las promises no devuelven un resultado directamente, pero nos proveen una manera de conseguir dicho resultado cuando se produzca. ¿Y no es lo mismo que una callback? …

Image for post
Image for post

Últimamente tengo algo abandonado el blog, desde antes de Navidad concretamente. Necesitaba desconectar un poco de mi faceta developer ya que mi trabajo a veces ocupa mucho espacio en este ámbito, pero prometo que intentaré retomar las lecciones de Javascript y me gustaría también empezar a comentar casos prácticos usando las librerías, metodologías y frameworks de moda.

El caso es que en estos dos meses he retomado otra de mis pasiones: los videojuegos. …

Image for post
Image for post

En el mundo de la programación nos encontramos distintas formas de solucionar un problema, a menudo agrupadas en lo que se conoce como paradigmas. ¿Paradi-qué?

Un paradigma no es más que el enfoque que se aplica a la hora de diseñar la solución a un problema determinado, la base en la que construimos una lógica que nos ayude a entender como lograr una tarea.

En esta serie de capítulos sobre Javascript ya hemos visto y explicado tres paradigmas distintos: programación imperativa, programación orientada a objetos y programación funcional. …

Image for post
Image for post

Como expliqué anteriormente, mediante funciones es posible lograr un flujo de datos que transforme un estado inicial y nos provea un resultado en un solo paso, bien usando la composición o la recursividad. Podemos definir y utilizar tantas como queramos, anidarlas, usarlas como argumentos a otras funciones, etc. Pero… ¿qué pasa cuando queremos usar una función que ya existe sin poder controlar su contexto?

Hay momentos en los que nos vendría muy bien usar cosas como map o reduce para otras cosas, usar los métodos de un objeto sobre otros objetos distintos, ó pasar parámetros por defecto a funciones que sabemos que se van a ejecutar en un contexto donde hay valores que no van a cambiar. …

Image for post
Image for post

Recientemente ha habido dos nuevas major release de dos de los indispensables actualmente en el mundo Javascript: Node y Babel. En concreto las versiones 5.0 y 6.0 reespectivamente. Si quieres ahorrarte el post hay un resumen abajo del todo.

Ya comenté como instalar ambos en el post de introducción sobre Javascript y como configurar nuestro ambiente de desarrollo. Sin embargo han cambiado algunas cosas en el funcionamiento de Babel, y tras probar recientemente la última versión de Ubuntu (Wily Werewolf) me he dado cuenta que las versiones de Node de los repositorios oficiales siguen congeladas en la rama 0.10.x.

En cambio en OSX con Homebrew si que está disponible ya la versión 5.0 de Node, pero durante esta semana me he visto obligado a usar una 0.10.x para probar cosas del blog en local, ya que Ghost no soporta aún las versiones nuevas. …

Image for post
Image for post

Es inevitable recaer en su uso y no sólo son parte fundamental del lenguaje sino que lo definen. Cómo hemos visto, son parte indispensable en la creación de objetos, bien haciendo uso de herencia o composición. Pero sólo es la punta del iceberg.

Cómo vimos en el capítulo Javascript #2, el uso de funciones convierte a Javascript en un lenguaje multiparadigma haciendo que podamos recurrir a la programación funcional, a la recursividad y a la orientación a eventos ( programación asíncrona).

De momento solo voy a pararme en las dos primeras y ya veremos más adelante la programación asíncrona cuando hagamos uso de eventos. …

Image for post
Image for post

Ya hemos dicho que en Javascript todo se comporta como un objeto, y que a cualquier objeto se le puede asignar de forma dinámica una propiedad. Hemos visto como podemos asignar prototipos a funciones para lograr herencia y como crear objetos componiéndolos con una función factory.

Sin embargo hay otra cualidad que nos aporta la orientación a objetos y de la que no hemos hablado aunque si hemos visto: la encapsulación. ¿Y ésto qué es? Intentaré explicarlo a través de sus dos fines.

Abstracción

El fin de un objeto, independientemente del lenguaje, es el de almacenar un estado y contener la lógica que sea capaz de modificarlo. Ésto hace que el objeto pueda ser autónomo y pueda interactuar con otros sin que el resto sepa como funciona internamente. Es lo que se conoce como abstracción. …

Nauzet Hernández

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store