Tipado
El tipado en programación es la manera en la que un lenguaje de programación clasifica y controla los distintos tipos de datos que se usan (como números, texto, verdadero/falso, etc.).
En otras palabras, cada valor que se maneja en un programa tiene un tipo (por ejemplo, 5 es un número, "hola" es texto). El tipado sirve para que el programa sepa cómo debe trabajar con esos valores y evitar errores, como intentar sumar una palabra con un número.
La clasificación de los lenguajes de programación según su tipado se refiere a cómo se manejan y restringen los tipos de datos dentro de un lenguaje. El tipado de un lenguaje puede afectar cómo se realizan las operaciones, la robustez del código y la facilidad de detección de errores. Aquí están los principales tipos de tipado en lenguajes de programación:

Tipado estático y tipado dinámico
En el tipado estático (statically typed), el tipo de cada variable y expresión es conocido y verificado en el momento de la compilación. Esto significa que los errores de tipo son detectados antes de que el programa se ejecute.
En cambio, en el tipado dinámico (dynamic typed) los tipos de datos son verificados y determinados durante la ejecución del programa. Esto significa que el tipo de una variable puede cambiar a medida que el programa se ejecuta.
Tipado débil y tipado fuerte
En el tipado débil (weak typed), el sistema de tipos permite conversiones automáticas o implícitas entre tipos de datos. Esto significa que el lenguaje puede realizar conversiones entre tipos de forma implícita, lo que puede llevar a comportamientos inesperados.
Una conversión de tipo implícita ocurre cuando el propio lenguaje de programación cambia automáticamente un dato de un tipo a otro, sin que la persona que programa tenga que pedirlo.
En cambio en el tipado fuerte (strong typed), el sistema de tipos requiere que las conversiones entre tipos sean explícitas y controladas. Las conversiones implícitas no se permiten, y las incompatibilidades de tipo son tratadas como errores.
Tipado explícito y tipado implícito
En el tipado explícito (explicitly typed), el tipo de cada variable debe ser especificado claramente por el programador en el momento de la declaración o definición.
Por otro lado, en el tipado implícito (implicitly typed), el tipo de las variables es inferido por el compilador o intérprete en función del contexto. El programador no tiene que especificar el tipo explícitamente.