Emacs is designed so only the most core operations are in C. Everything else is in ELisp, and can be manipulated to your heart's content while Emacs is running. It's pretty similar to Smalltalk VMs in that way; the only real difference is that one is functionally oriented and the other object oriented, but both are a dream to use.