私はプログラミング言語がどのように機能するかを調べてきましたが、そのうちのいくつかにはいわゆる仮想マシンがあります。これは、別のプログラミング言語内でのプログラミング言語のエミュレーションの一種であり、コンパイルされた言語がスタックを使用して実行されるように機能することを理解しています。私はそれを正しく理解しましたか?
私が行った但し書きで、多くのコンパイルされていない言語が「リベラルな」型システムを持つ変数を許可するということは、私を困惑させます。たとえば、Python では、次のように記述できます。
x = "Hello world!"
x = 2**1000
文字列と大きな整数はまったく無関係であり、メモリ内で異なる量のスペースを占めるため、スタックベースの環境でこのコードを表現するにはどうすればよいでしょうか? ここで正確に何が起こりますか?x はスタック上の新しい場所を指していて、古い文字列データは参照されていませんか? これらの言語はスタックを使用しませんか? そうでない場合、変数は内部的にどのように表現されますか?