NOTA: Este post es la continuacion de este otro.
Entonces estábamos con las diferencias entre Tipado estatico y Tipado dinámico.
- Rapidez de compilación. Los interpretes y compiladores de lenguajes con tipado dinamico, pueden obviar la pasada de chequeo de tipos, por lo que son mas rápidos cuando se les pide que generen el ejecutable o que comiencen a correr si son interpretados. En contra parte los lenguajes con Tipado estatico, tardan mucho mas en compilar. Esta rapidez es especialmente útil cuando debemos hacer cambios y correr toda la aplicación de nuevo para poder ver si los cambios son correctos. Debemos admitir (aun que personalmente intento no hacerlo nunca) que a veces hay que hacer ciertas cosas por prueba y error.
- Optimización de código. Los compiladores de lenguajes de Tipado estático, al compilar pueden hacer mejor las optimizaciones creando código maquina o bytecode mas adecuado a la plataforma o maquina virtual en la que van a correr, ya que conocen desde el principio el tipo y tamaño de los datos. Esto es muy importante para ciertas aplicaciones que requieren velocidad en ejecución.
- Velocidad de implementación. Quise dejar este punto al final porque es en realidad una combinación de algunos de los puntos anteriores. El hecho de que en los lenguajes de Tipado dinámico no sea necesario especificar los tipos ahorra bastante código, aunque si no eres cuidadoso puedes cometer errores de tipado que no saldrán hasta que corras la aplicación. Es por eso que algunas personas se facilitan la vida utilizando la Notación húngara que no es mas que agregar un prefijo a las variables que declaremos, para indicar el tipo, por ejemplo iEdad o sNombre para un entero y una cadena respectivamente. Lo cual es una tontería, ya que al final si estamos declarando tipos, que era lo que no queríamos desde el principio. En los lenguajes Tipados estaticamente la Notaciónhúngara tiene aun menos sentido, ya que en los entornos actuales basta con poner el cursor sobre una variable, para que aparezca un ToolTip que nos dice el tipo de la variable. Luego hay que tener en cuenta el completado de código del que ya se hablo, que ayuda muchísimo a acelerar la programación. La rapidez de compilación te ayudara en proyectos grandes acelerando el ciclo editar-compilar-probar, en los pequeños da igual. Aunque si haces pruebas unitarias para los distintos módulos de tu aplicación, no sera necesario compilar toda la aplicación para depurar la aplicación.
Conclusiones: Mi opinión es que:
- Si te interesa la velocidad de ejecución, debes escocer un Lenguaje de Tipado estatico sin pensarlo.
- Si conoces un lenguaje de Tipado dinámico y las librerías o frameworks de este, a la perfección y por ello no necesitas el completado de código, sigue usándolo.
- Si es un proyecto grande, en donde participan mas de dos o tres programadores, escoge un lenguaje de Tipado estatico. Por el contrario si es un proyecto pequeño escoje el Tipado dinamico.