He estado investigando cómo funcionan los lenguajes de programación, y algunos de ellos tienen las denominadas máquinas virtuales. Entiendo que esta es una forma de emulación del lenguaje de programación dentro de otro lenguaje de programación, y que funciona de la misma manera que se ejecutaría un lenguaje compilado, con una pila. ¿Lo entendí bien?¿Cómo funciona una máquina virtual?
Con la condición de que lo hice, lo que me engaña es que muchos idiomas no compilados permiten variables con sistemas de tipo "liberal". En Python, por ejemplo, puedo escribir esto:
x = "Hello world!"
x = 2**1000
Cuerdas y grandes números enteros son completamente ajenos y ocupan diferentes cantidades de espacio en la memoria, así que ¿cómo puede este código incluso estar representados en un entorno basado en la pila? ¿Qué pasa exactamente aquí? ¿X apunta a un nuevo lugar en la pila y los datos de la cadena anterior no se referenciaron? ¿Estos idiomas no usan una pila? Si no, ¿cómo representan las variables internamente?
Gran primera pregunta! – samoz
Pregunta relacionada: http://stackoverflow.com/questions/688803/how-does-a-register-based-virtual-machine-work – lothar