Trabajo en el desarrollo web hace años, y he utilizado diferentes lenguajes de programacion, 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 justamente 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 seudocó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 más gráfico:

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), el seudocódigo es estilo C, pero no sabemos de qué tipo es la variable. Si revisamos el código nos daremos cuenta que i al ser inicializada recibe el número 1, aquí no nos preocupamos por qué tipo de valor recibe la variable, solo sabemos que proceso se quiere hacer, pero si deseamos pasar el seudocó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 más difíciles de trabajar, pero son más comunes y en muchos lugares más “promocionados”, por ejemplo, en Colombia, 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). Una gran desventaja es que cuando manejas diferentes tipos de datos y quieres hacer operaciones entre ellos debes convertir los datos (“parsear”), crear muchas más variables y entender que tipo de dato estas trabajando y que funciones tiene. Los lenguajes tipados incrementan el tiempo de desarrollo y son más 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 máquina y esto al manejar grandes cantidades de datos hace diferencia, es mucho más rápido en la máquina seguir el proceso que debe realizar.

También tenemos los lenguajes con tipado dinámico y no tipados… ya entendiendo lo del tipado, la definición de estos será más breve.

Los lenguajes no tipados, o débilmente tipados, al definir una variable no requieren que se les asigne un tipo de variable, es más pueden cambiar el tipo de variable en cualquier momento, el caso más conocido se presenta en 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.

Podemos decir que los lenguajes con tipado dinámico se ubican en el medio, las 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, sobre todo si somos nuevos en la programacion. Sin embargo, si se requiere de las ventajas de los lenguajes compilados, se pueden desarrollar módulos especializados. Así se hacen los grandes desarrollos, varios lenguajes y herramientas, para sacar lo mejor de cada uno. Claro está, si el desarrollo o arquitectura amerita esto, ya que esto agrega un grado de complejidad al desarrollo y al mantenimiento.

Tip: para saber que lenguajes son tipados es 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: “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, está 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 qué?, 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 será mucho más fácil, luego podrás reconocer los tipos básicos y más complejos.

PHP en versiones superiores a la 5, introducen conceptos más complejos, entre estos los tipos, ya que esto marca unas directrices, que indican lo que puedes hacer con cada variable y además 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 al abrir la puerta a la creación de aplicaciones complejas basadas en Javascript de una manera más sencilla, esto gracias a la inclusión de conceptos heredados de la programacion orientado a objetos, entre estos conceptos están los tipos de datos.

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

Lenguajes dinámicos y estáticos

Esta sección la agrego 6 años después, con un poco más de experiencia y queriendo dejar un poco más claras las diferencias. No quise tocar el post original para que los anteriores lectores no se pierdan si releen. Ahora, ¿por qué ese título? Básicamente son sinónimos. Un lenguaje dinámico está definido como un lenguaje sin tipado, débilmente tipado o con tipado dinámico. No fuerzan a la utilización de tipos de datos. Otro dato importante es que estos lenguajes nacieron para programas cortos o scripts por eso también se les conoce como lenguajes de scripting. Aunque ahora todos son robustos y se pueden utilizar con diferentes paradigmas de desarrollo. Mientras, un lenguaje estático se denominan de esta manera por que se requiere especificar detalles de bajo nivel, el más característico es el tipo de variables a usar. Por ejemplo, en C, C++, C#, Java se debe definir el tipo de variable y entre estos hay subtipos. Un numero puede ser entero o de punto flotante, por ejemplo.

Estático o tipado son sinónimos.

Una vez definido el tipo de variable esta no se puede cambiar. Un entero (Integer) va a ser entero por siempre y para siempre.

Algo importante para tener en cuenta es que un programa escrito con un lenguaje estático generalmente corre más rápido que su equivalente en un lenguaje dinámico. Esto es porque no deben pasar por un intérprete para ser ejecutados (Java es un caso especial). Aunque la diferencia de tiempo de ejecución es mínima en estos momentos ya que la mayoría de las veces el rendimiento depende mucho de la destreza del programador y del tipo de tarea que se quiera hacer. Por ejemplo, si se trata de un trabajo de procesamiento de una cantidad significativa de datos y se requiere el más alto rendimiento desde el inicio se debe optar un por un lenguaje estático. Aun así­ eso habrá que evaluarlo para demostrar que es totalmente necesario, que esos milisegundos entre cada proceso ganados si representan un valor real, ya que en contraparte escribir código en un lenguaje dinámico es mucho más rápido.

Hasta aquí­ llega esta comparación y aporte. Espero que les sea de utilidad y no olviden dejar sus comentarios.


¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨