Я изучал, как работают языки программирования, а некоторые из них имеют так называемые виртуальные машины. Я понимаю, что это некоторая форма эмуляции языка программирования на другом языке программирования и что он работает так же, как скомпилированный язык будет выполнен со стеком. Правильно ли я понял?
С условием, что я сделал, что меня обманывает, так это то, что многие некомпилированные языки допускают переменные с "либеральными" типами систем. Например, в Python я могу написать это:
x = "Hello world!"
x = 2**1000
Строки и большие целые числа полностью не связаны между собой и занимают разное количество места в памяти, поэтому как этот код может быть представлен даже в среде на основе стека? Что именно здесь происходит? Является ли x указателем на новое место в стеке, а старые данные строк остались без ссылок? Не используют ли эти языки стек? Если нет, то как они представляют переменные внутри?