Al no tener un chequeo estático de tipos, permites muchisima más flexibilidad en lo que puedes hacer en tu código, y te evita verborragia inútil en tu programa.
¿O nunca te hizo ruido eso de declarar cosas como "Person person = new Person();" y similares?
Al no tener chequeo de tipos, no declaras de qué tipo son las variables. Simplemente le asignas objetos, y a esos objetos le mandas mensajes. Ahora, si asignas un objeto en una variable y luego le mandas mensajes que sabes que no va a entender... Bueno, el problema ya es tuyo...
El tipado estático promete a cambio del alto costo de ser muchísimo más verborrágico y de no dejarte hacer ciertas cosas incluso cuando sabes que va a funcionar (asignar un objeto de clase A a una variable Object o de menor visibilidad que A y en la linea siguiente mandarle un mensaje que A entiende), y, para peor, no garantiza lo único que promete garantizar (evitar mandarle un mensaje a un objeto que no lo entiende), y todo gracias a dos estupideces gigantes: null y casting.
Si el costo de todo el chequeo de tipos es la seguridad de que el código no va a fallar por tipado como en Haskell, puede valer la pena. Pero en Java... mmm... creo que querer mantenerse tan pegado a "lo que había" (C, C++) le jugó muy en contra (como lenguaje, digo... por popularidad, fue lo que lo hizo ser lo que es).
Re:Aprendizaje de POO
(Puntos:1)( http://enunacalesita.wordpress.com/ )
Al no tener un chequeo estático de tipos, permites muchisima más flexibilidad en lo que puedes hacer en tu código, y te evita verborragia inútil en tu programa.
¿O nunca te hizo ruido eso de declarar cosas como "Person person = new Person();" y similares?
Al no tener chequeo de tipos, no declaras de qué tipo son las variables. Simplemente le asignas objetos, y a esos objetos le mandas mensajes. Ahora, si asignas un objeto en una variable y luego le mandas mensajes que sabes que no va a entender... Bueno, el problema ya es tuyo...
El tipado estático promete a cambio del alto costo de ser muchísimo más verborrágico y de no dejarte hacer ciertas cosas incluso cuando sabes que va a funcionar (asignar un objeto de clase A a una variable Object o de menor visibilidad que A y en la linea siguiente mandarle un mensaje que A entiende), y, para peor, no garantiza lo único que promete garantizar (evitar mandarle un mensaje a un objeto que no lo entiende), y todo gracias a dos estupideces gigantes: null y casting.
Si el costo de todo el chequeo de tipos es la seguridad de que el código no va a fallar por tipado como en Haskell, puede valer la pena. Pero en Java... mmm... creo que querer mantenerse tan pegado a "lo que había" (C, C++) le jugó muy en contra (como lenguaje, digo... por popularidad, fue lo que lo hizo ser lo que es).