Trabajo en el desarrollo web hace un año, y he utilizado diferentes lenguajes de programación, fuertemente tipados y no tipados. Para comenzar vamos a entrar a ver algunas características de los lenguajes fuertemente tipados (o solo tipados).

Cuando nos referimos al tipado, estamos hablando de los tipos de datos que se manejan en un determinado lenguaje de programación, se refiere  a los tipos y la forma en que deben usarse. Para colocar un ejemplo rápido, cuando estamos aprendiendo a programar en pseudocódigo no utilizamos tipado, es decir que ninguna de las variables que definimos están ligadas a algún tipo de variable, “simplemente son variables”. Vamos a ver un ejemplo un poco mas gráfico con código real.

Pseudocódigo:

subproceso funcion bizzbuzz
para (i <- 1; i<=100; i++) {
    establecer print_number a verdadero;
    Si i es divisible por 3
        escribir "Bizz";
        establecer print_number a falso;
    Si i es divisible por 5
        escribir "Buzz";
        establecer print_number a falso;
    Si print_number, escribir i;
    escribir una nueva línea;
}

En el anterior ejemplo, tenemos declarada una variable i (Asociada siempre a un contador), y el pseudocódigo es estilo C, pero no sabemos de que tipo es la variable. Si revisamos el código nos daremos cuenta que i al ser inicializada recibe el numero 1, aquí no nos preocupamos por que tipo de valor recibe la variable, solo sabemos que proceso se quiere hacer, pero si deseamos pasar el pseudocódigo a programación real, en este caso C (que es fuertemente tipado), debemos decirle que la variable es un entero.

    int i = 1; ...

Ahora… Desde mi punto de vista los lenguajes fuertemente tipados son mas difíciles de trabajar, pero son mas comunes y en muchos lugares mas “promocionados”, por ejemplo, en Colombia, mi país y actual residencia, en las universidades se enseña alguno de estos lenguajes: Java, C, C#, C++, Basic. Sales de la universidad por lo menos sabiendo los tipados básicos (enteros, decimales, booleanos, texto). Y para mi una gran desventaja es que cuando manejas diferentes tipos de datos y quieres hacer operaciones entre ellos debes convertir los datos (“parsear”),  crear muchas mas variables y entender que tipo de dato estas trabajando y que funciones tiene. Los lenguajes tipados incrementan el tiempo de desarrollo y son mas difíciles de aprender. Hey!!!, pero no todo es malo, una ventaja de estos lenguajes es que son compilados, es decir que se traducen directamente a lenguaje de maquina y esto al manejar grandes cantidades de datos hace diferencia, es mucho mas rápido en la maquina seguir el proceso que debe realizar.

Pero en el mundo hay ademas lenguajes con tipado dinámico y no tipados… ya entendiendo lo del tipado, la definición de estos sera mas breve 😀 .

Los lenguajes no tipados, o débilmente tipados, al definir una variable no requieren de que se les asigne un tipo de variable, es mas pueden cambiar el tipo de variable en cualquier momento, creo que los casos mas conocido se presentan en un lenguaje muy popular. PHP, este lenguaje, no es tipado, y no hay ningún problema en que una variable sea una Array y luego se convierta en un entero o un String.

Y pues digamos que los lenguajes con tipado dinámico se ubican en el medio,  la variables se pueden o no vincular a un tipo o al inicializarlas reconocen el tipo  de variable. La mayoría de los lenguajes que son de tipado dinámico tienen la característica de ser interpretados, como Python o Ruby.

Creo que en la mayoría de los desarrollos web se debería usar lenguajes con tipado dinámico, esto agiliza el desarrollo y facilita la comprensión del código. pero si se requiere de las ventajas de los lenguajes compilados, se debería desarrollar módulos, no toda la aplicación  en este lenguaje, si no la función especifica que se requiere. Así se hacen los grandes desarrollos, varios lenguajes y herramientas, para sacar lo mejor de cada uno. Claro esta, si el desarrollo o arquitectura amerita esto, ya que esto agrega un grado de complejidad al desarrollo y al mantenimiento.

Una grandiosa ayuda que te daré para saber que lenguajes son tipados podrías ver la definición de sus variables, por ejemplo, si hay algún tipo de definición de variable antes de nombrarla seguro es un lenguaje tipado, de lo contrario es no tipado o dinámico…

Nota: claro que “var” en algunos lenguajes es una excepción… es algo raro, por ejemplo en Javascript se utiliza en el manejo de los scopes pero en otros lenguajes sirve para que al inicializar una variable esta detecte el tipado.

Tipado o no tipado. ¿Cuál debo usar?

Esta pregunta no se responde por tipado o no tipado, esta directamente ligada a la arquitectura y requisitos del proyecto. Por lo que es el arquitecto de negocio quien construye la infraestructura y define las herramientas que se usaran. Pero si te puedo decir algo, si estas aprendiendo a programar yo te recomendaría usar lenguajes de tipado dinámico, como PHP, Python o Javascript. ¿Por que?, muy sencillo, al ser de tipado dinámico te permite cierto grado de fallo, y así mientras programas y haces tus experimentos puedes ir reconociendo los diferentes tipos de variables y como trabarlas.

En un principio mientras aprendes te sera mucho mas fácil, luego podrás reconocer los tipos básicos y luego mas complejos. Y lenguajes como PHP Y Python, PHP en versiones superiores a la 5, introducen conceptos mas complejos, entre estos los tipos, ya que esto marca unas directrices, que indican lo que puedes hacer con cada variable y ademas en lenguajes fuertemente tipados asignan un espacio en memoria especifico, optimizando el resultado final. En el ámbito de Javascript con la llegada de Typescript, este dio un gran paso, y abrió la puerta a la creación de aplicaciones complejas basadas en Javascript de una manera mas sencilla, esto gracias a la inclusión de conceptos heredados de la programación orientado a objetos, entre estos conceptos están los tipos de datos.

Bueno, espero ya tengas una idea mas clara de que es un lenguaje tipado y no tipado, y cuales son los principales tipos de datos usados… estos también aplican para las bases de datos relacionales.

Si tienes alguna duda o quieres opinar no dudes en dejar tu comentario.

[DISPLAY_ULTIMATE_PLUS]