Tema: Idioma Java
Ver Mensaje Individual
  #22 (permalink)  
Antiguo 29/10/2014, 00:46
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: Idioma Java

Buenas,

Te gustan porque las clases anónimas son muy útiles, ya que es una estructura que te permite hacer algo que no se puede hacer de ninguna otra forma. Yo las he usado un montón y las sigo usando cuando no desarrollo en Java 8, por supuesto!.

Sin embargo, tambien creo que es un modelo poco afortunado y que no ha tenido mucho éxito. De hecho Java es el único lenguaje que ha optado por una solución como esta para resolver los punteros a función.
Todos los lenguajes que conozco (C, Python, JavaScript, PHP, C#, Go) utilizan una solución de alguna forma basada en closures, incluso aquellos que se basaron en la sintaxis Java (C# y de alguna forma Go) desecharon desde el principio el mecanismo de funciones anónimas y adoptaron el de closures.

De cualquier forma, la sustitución de las funciones anónimas no deja de ser un tema "cosmético". Como comentaba más arriba, para mi lo más importante y potente que ofrecen los lambdas es que permiten paralelizar tareas de forma trivial. No hace mucho, puse un ejemplo para hacer un cálculo utilizando todos los cores del procesador sin necesidad de declarar ni un solo thread, usando lambdas;
http://www.forosdelweb.com/f45/canti...iempo-1111410/

Agrego un par de reflexiones sobre las clases anonimas cuando se comenzo a hablar de usar closures para reemplazarlas. Son James Gosling (creador de java) y Brian Goetz (ingeniero en Sun)

https://blogs.oracle.com/jag/entry/closures
http://www.ibm.com/developerworks/library/j-jtp04247/

James Gosling hablando de las clases anonimas:
"[...] In the early days of Java the lack of closures was pretty painful, and so inner classes were born: an uncomfortable compromise that attempted to avoid a number of hard issues. But as is normal in so many design issues, the simplifications didn't really solve any problems, they just moved them. We should have gone all the way back then.[...]"

Un saludo
__________________
If to err is human, then programmers are the most human of us

Última edición por Profesor_Falken; 29/10/2014 a las 01:41