domingo, 27 de septiembre de 2015

Lambda no sólo significa "longitud de onda"...

Como se menciona en el podcast que Freddy Guime realizó, las expresiones lambda no son cosas que resulten recientes, ya que se han utilizado desde que se empezaron a diseñar los lenguajes de programación de los años cincueta. Sin embargo, este concepto para mi resulta nuevo, ya que muy pocas veces me he encontrado con una expresión lambda en todos los archivos de código que he realizado desde que comencé a programar, e inclusive en los libros de lenguajes que me han encargado que lea.
Resulta “mágico” que una pequeña sentencia sea tan útil como escribir una línea, o inclusive un bloque de código completo, en unos cuantos caracteres, además de utilizar el token “->”. Esto, al principio, resultó un tanto confuso para mí. Lo primero que pensé fue “¿apuntadores en Java? Interesante…”. Pero, claramente, no hay tal cosa en Java. Al menos no de manera explícita en el lenguaje.
Hasta como hemos visto en clase, y dándole crédito a lo que comenta Freddy Guime en su podcast, las expresiones lambda se pueden ver como una expresión “mutable”. Es como una función que puede cambiar de comportamiento, de acuerdo a lo que le solicitemos en la misma expresión lambda.  Y es mucho más sencillo y más rápido que estar creando nuevas clases, o inclusive andar sobreescribiendo la funcionalidad del método run() de la clase Runnable, lo cual tiene un impacto admirable en la simplicidad que le dá al escribir un código en un lenguaje tan verboso como lo es Java.
Una de las “limitantes” que tiene el uso de expresiones lambda en Java, es que el programador debe declarar interfaces funcionales. Estas interfaces, por definición, son aquellas que únicamente contengan un método en ellas. Sin embargo, el hecho de tener que escribir una interface de una línea en lugar de una clase completa (la cual puede tener muchísimas líneas de código para poder funcionar correctamente), es un pequeñísimo “sacrificio” que se debe realizar para poder ahorrarnos tiempo de programación, y en cierta forma tiempo de cómputo en la implementación que estemos programando.

Espero tener la oportunidad de ver una implementación real con expresiones lambda, para poder comprender de mejor manera su funcionamiento, tanto a nivel código como a nivel de desempeño, y tenerlas siempre en cuenta para futuras implementaciones que yo realice, ya sea en Java o en cualquier otro lenguaje de programación que las utilice.

No hay comentarios.:

Publicar un comentario