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.