tipo tipados tipado que programacion lenguajes lenguaje fuertemente estaticos estatico entre débilmente dinamicos dinamico diferencia control calistenia dynamic static programming-languages type-systems

dynamic - tipados - Diferencia entre lenguajes de programación estáticos y dinámicos.



lenguajes fuertemente y débilmente tipados (4)

Mecanografía estática

La escritura estática significa que los tipos son conocidos y verificados para ver si están correctos antes de ejecutar su programa. Esto es a menudo hecho por el compilador del lenguaje. Por ejemplo, el siguiente método Java causaría un error de compilación, antes de ejecutar su programa :

public void foo() { int x = 5; boolean b = x; }

Escritura dinámica

La escritura dinámica significa que los tipos solo se conocen cuando su programa se está ejecutando. Por ejemplo, la siguiente secuencia de comandos de Python (3, si es importante) se puede ejecutar sin problemas:

def erroneous(): s = ''cat'' - 1 print(''hi!'')

De hecho saldrá hi! . Pero si llamamos erroneous :

def erroneous(): s = ''cat'' - 1 erroneous() print(''hi!'')

Se generará un TypeError en tiempo de ejecución cuando se llame a un erroneous .

¿Cuál es la diferencia entre los lenguajes de programación estáticos y dinámicos ? Sé que se trata de sistemas tipográficos, pero estoy buscando aclaraciones más claras.


La diferencia entre la estática y la dinámica es que antes de ejecutar el programa, si el tipo de datos de cada variable se verifica y verifica, entonces es un lenguaje de programación de tipo estático (por ejemplo: en el caso de C ++, el compilador lo hace). En el lenguaje de programación dinámico durante el tiempo de ejecución, si hay una asignación no válida de una variable que viola su tipo de datos, entonces se da un error para eso.

Resumen: el lenguaje de tipo estático comprueba cualquier infracción antes de ejecutar el programa, mientras que en el lenguaje de tipo dinámico, se produce un error cuando el programa se está ejecutando y va a la parte donde se cometió la infracción.


Todos los idiomas están diseñados para traducir códigos legibles por humanos en instrucciones de máquina. Un lenguaje dinámico (Lisp, Perl, Python, Ruby) está diseñado para optimizar la eficiencia del programador, para que pueda implementar la funcionalidad con menos código. Un lenguaje estático (C, C ++, etc.) está diseñado para optimizar la eficiencia del hardware, de modo que el código que escribe se ejecute lo más rápido posible.


Lenguaje mecanografiado estáticamente:

  • Es necesario declarar el ''tipo'' de variable de antemano.

NSString *string = @"Hello";

  • No puede guardar objetos (ya sean concretos o primitivos) de otro tipo en la variable del mismo nombre

NSString *string = @"Hello"; int string = 9; // Not legal, compile type warning

Por ejemplo, de lenguaje tipado estáticamente: Java, Objective-C, etc.

Lenguaje dinámicamente tipado:

  • No es necesario declarar tipo de objeto. Se resolverá en tiempo de ejecución.

string = ''Hola''

  • Se nos permite cambiar el tipo de objeto para la misma variable, ya que los nombres están vinculados a un objeto con un operador de asignación.

string = ''Hello'' string = 9 // Allowed

Por ejemplo, de lenguaje tipificado dinámicamente: Python, etc.