Ahora que Java 6 tiene casi dos años, parece el momento adecuado para comenzar a aprender las nuevas características de su sustituto, Java 7 (a.k.a. Dolphin) que si cumple su hoja de ruta estará entre nosotros en algún momento de 2009.
Uno de los cambios sugeridos y que parece estar medianamente implementado es BGGA, que vienen a ser cierres lambda para hacer que java parezca un lenguaje funcional.
La versión 3 de C# incorporó modificaciones similares y es difícil encontrar desarrolladores que se quejen que estas funcionalidades, aunque muy fácil (a juzgar por los blog, sobre todo en España) encontrar programadores que las ignoren.
Imaginé que lo mismo sucedería entre la comunidad Java, pero no. Resulta que han puesto el grito en el cielo. La razón más extendida es que sería un caos ver proyectos desarrollados por varios programadores en los que unos usan la modalidad imperativa y otros la funcional.
Tal y como yo lo veo, el razonamiento es bastante absurdo. Los lenguajes como Java son lo suficientemente ricos como para que siempre haya varias formas de escribir las cosas y no por ello ponemos el grito en el cielo. ¿O pensamos que es inviable que 5 programadores prefieran el if else y otros 5 el operador ternario? ¿qué pasa si unos personas prefieren tipificar las colecciones y otros no? ¡Oh Dios mío! el cielo caerá sobre nuestras cabezas!
Vamos a ver, si está en el lenguaje, los programadores tienen la obligación de conocerlo. Cada uno decidirá que usar en cada momento, pero hombre… debería entenderlo siempre.
Personalmente en C# siempre que puedo elijo la forma funcional porque creo que es mucho mejor decir lo que quieres, que decir lo que quieres y cómo lo quieres. Sobre todo porque te ahorras escribir código que sólo serviría para introducir posibilidades de fallo.
Ahora bien, argumentar que dar un paso adelante no es posible porque habrá programadores que no tengan tiempo de aprender las nuevas características.. en fin, que es una excusa muy pobre.