¿Cuál es la diferencia entre escribir débil y escribir dinámico?

La escritura débil y la escritura dinámica no son necesariamente opuestos en el mismo espectro.

La escritura débil contrasta con la escritura fuerte, y la escritura dinámica contrasta con la escritura estática.

Escritura dinámica versus escritura estática:

Los tipos de datos se determinan dinámicamente durante el tiempo de ejecución en el primero y durante el tiempo de compilación en el segundo. Por ejemplo, en python, las variables no llevan una declinación de tipo y el tipo de datos almacenado en una variable puede cambiar de una manera muy diferente. Además, las firmas de tipo pasadas a una función no se validarán previamente, y pasar el tipo de datos incorrecto puede hacer que el programa explote en tiempo de ejecución.

Esto debe contrastarse con algo como Java o C donde las variables llevan declaración de tipo, las funciones hacen cumplir las firmas y cada llamada a método / atributo validará que el tipo sea compatible con la operación.

Escritura débil versus escritura fuerte:

En un lenguaje como C / C ++, puede obtener los resultados de funciones y convertirlos como otros tipos. También puede realizar operaciones en diferentes tipos que se actualizarán implícitamente en tiempo de ejecución, como evaluar una expresión aritmética en parte de una expresión booleana. En un lenguaje como Haskell, que está fuertemente tipado, todas las operaciones deben definirse en tipos específicos y no se admiten tipos de conversión forzada.