De un tiempo a esta parte hay como una explosión de lenguajes de tipado dinámico, ruby, pyhthon(ya un poco veterano pero igual), groovy, etc. En los foros de java y C++ los desarrolladores tienden a despreciar o rechazar este tipo de tipado, para ellos (y durante un tiempo para mi también) hacer esto:
int x =1
era mejor que esto:
x=1
Pues da la impresión de seguridad, de saber lo que se está haciendo.
Inicialmente creÃa que la razón de los lenguajes de tipado estático era a causa de que en los 70’s y 80’s las computadoras no eran lo suficientemente veloces, y de alguna manera todos los lenguajes debÃan reservar memoria para cada variable, y saber el tipo es algo imprescindible para esto, pero luego me enteré que Smalltalk ya lo implementaba desde el principio, por lo que deduzco, y esto es una presunción mÃa, que el “gran culpable” de los prejuicios actuales sobre el tipado es C/C++, quien por su caracterÃsticas de lenguaje de medio/bajo nivel sà implementa esta caracterÃstica, asà como el infierno de los punteros, y cero gestión de la memoria. Me imagino también que cuando surgió java habrán habido reticencias para aceptar que todos los objetos se pasen como refenrencias, pues incluso creo que el gnusmalltalk usa punteros (!).
Fuera de reservar espacio en la memoria, la otra razón para los tipos es la misma de los conjuntos matemáticos, es decir, un conjunto es un grupo de elementos que comparte propiedades, los cuales responden de la misma manera a ciertos eventos, etc. Bien, pero en la programación esto lo hace el compilador o intérprete, a nosotros como personas nos basta decir que:
x=2
y = x* 4
y==8
algunos podrÃan objetar que a la hora de la legibilidad este codigo es deficiente, pero si lo que se quiere es decir que x es un entero:
//x es Integer
x=1
… y ya, y de paso podrÃamos poner alguna otra información.
En definitiva no creo que el tipado dinámico implique lenguaje de juguete o lenguaje de protipado, pues como dije más arriba smalltalk lo tiene, y no creo que nadie se atreva a decir que es un lenguaje de juguete, solo un desafortunado, otro que usa el tipado dinámico es Haskell, aunque no es lo mismo, pues haskell es programación funcional, pero en definitiva la mayorÃa de los lenguajes modernos buscan precisamente acercarse a la programación funcional.
Por otra parte esto es algo que no se puede hacer con tipado estático, aunque quizás se pueda simular :
funcion decir(a){
print a
}
funcion hacer(b,c){
b(c)
}
hacer(a,”hola”)
Obviamente es un caso bastante inútil, pero estoy seguro que se capta la idea, en definitiva la funcion decir(a) puede ser cualquier cosa que acepte un argumento, sÃ, se pueden pasar funciones como argumentos, pues la mayoria de estos lenguajes, todo es un objeto, incluso las funciones, y fue esta caracterÃsticas(y haber estudiado un poco de haskell) lo que me convenció de que los nuevos que llegan(o que llegaron ya) no son unos juguetes, sino que traen nuevas caracterÃsticas que los viejos no tenÃa, ni podrán tener, no es casual que groovy se haya hecho el segundo lenguaje oficial de la plataforma java.