Hace algún tiempo Marcelo, Alvaro y yo hemos tenido acaloradas discusiones sobre mecanismos del lenguajes de programación para proveer abstracciones funcionales en lenguajes orientados a objeto. En otro post Alexey comentaba que en la versión 3.0 de C# ya se contemplan abstracciones lambda como un mecanismo más del lenguaje haciendo obsoletos a los famosos delegates. Todo esto solamente muestra que este tipo de mecanismos resultan en herramientas necesarias a la hora de programar abstracciones reusables. En un
post del blog Joel on Software, Joel se queja de que no se enseña a estudiantes de computación a mirar un poco más allá, empujando a evoluciones del lenguaje o el uso de técnicas que se usan en otros paradigmas de programación. Mi experiencia es que muchos estudiantes vienen tan ofuscados por el marketing de MS que exigen cada vez menos. Por suerte la vida nos da la razón y ahora la misma gente de MS está innovando sus herramientas con mecanismos interesantes.
Comentarios
C# esta empezando a ser un lenguaje util pero adem'as muy bonito, Marcelo hace referencia incluso a una librer'ia de Parser Combinators en C# 2.0, seguro con C# 3 ya se van a poder hacer cosas con mas estilo 'funcional'. Ser'a que le esta ganando a Java en cuanto a las herramientas que proveen?
Es verdad que C# esta avanzando mas, cosas como las expresiones lambda, Inicializadores de objetos, tipos de variables implicitos para que así el valor de variable sea inferido por su valor al momento de definirlo( no se si sea bueno o malo), expresiones query que sería bueno profundizar un poco mas sobre esto que aún no lo tengo bien claro creo que la idea es poder utilizar una especie de lenguaje parecido al de consultas sobre objetos, pero estoy divagando, en fin son varias la novedades pero tb pensemos que con la ayuda de la comunidad, java crecerá mucho mas solo por el hecho de que ahora es libre.
No quiero defender o comparar, en si no lo veamos como una carrera haber cual de los lenguajes avanza mas rápido y llega a la meta o cosas similares.